{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "#### Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\__init__.py\n" ] } ], "source": [ "from datetime import timedelta, datetime\n", "import json\n", "import pprint\n", "from copy import deepcopy\n", "import pytz\n", "\n", "import cufflinks\n", "cufflinks.go_offline()\n", "import numpy as np\n", "from numpy.polynomial import Polynomial\n", "import pandas as pd\n", "from tqdm.notebook import tqdm\n", "\n", "import sys\n", "\n", "import os\n", " \n", "# Path to the folder containing the alternate version of PyRecoy\n", "\n", "alternate_pyrecoy_path = 'C:\\\\Users\\\\shahla.huseynova\\\\source\\\\repos\\\\Mooi-Kickstart\\\\pyrecoy\\\\pyrecoy'\n", " \n", "# Add the path to sys.path\n", "\n", "if alternate_pyrecoy_path not in sys.path:\n", "\n", " sys.path.insert(0, alternate_pyrecoy_path)\n", " \n", "# Now import PyRecoy\n", "\n", "import pyrecoy2\n", "\n", "# Check the version or path to confirm\n", "\n", "print(pyrecoy2.__file__)\n", "\n", "\n", "from pyrecoy2.assets import Heatpump, Eboiler, GasBoiler, HotWaterStorage\n", "from pyrecoy2.colors import *\n", "from pyrecoy2.converters import *\n", "from pyrecoy2.financial import calculate_eb_ode, get_tax_tables, get_tax_rate, get_grid_tariffs_electricity\n", "from pyrecoy2.framework import TimeFramework\n", "from pyrecoy2.casestudy import CaseStudy\n", "from pyrecoy2.plotting import ebitda_bar_chart, npv_bar_chart\n", "from pyrecoy2.reports import CaseReport, ComparisonReport, BusinessCaseReport, SingleFigureComparison\n", "from pyrecoy2.sensitivity import SensitivityAnalysis\n", "from pyrecoy2.prices import get_tennet_data, get_afrr_capacity_fees_nl\n", "from pyrecoy2.forecasts import Mipf, Forecast\n", "\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "#### Development backlog" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "* aFRR (can improve the optimisation case)\n", "* Report\n", "\n", "--\n", "* Create strategy on imbalance POS (buy 100% day-ahead, and respond to high prices)\n", "* Graphs\n", " * EBITDA vs. baseline (earnings vs baseline)\n", "* Show COP curves in different cases, just for illustration\n", "* Energy report --> Check + add gas\n", "* Fix comparison reports\n", "* Model verification" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "#### Meeting Notes" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "##### Meeting 25-11-2020" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "* aFRR can help optimisation case\n", "* SDE++ should be included\n", "* Tsource sensitivity really gives interesting insights\n", "* Sensitivities should be verified (especially CO2, Tsink, Tsource, time period)\n", "* AP TNO: Update/verify COP curve\n", "* AP TNO: Update CAPEX\n", "* AP Mark: \n", " * Create graphs on COP curve with different Tsource, Tsink\n", " * Generate table and output in .csv (send it to Andrew)\n", "* Investigate opportunity to lower the COP and negative electricity prices\n", " * Technically feasible, but not really needed/possible to do it in this project\n", "* Could be interesting to run this model on a usecase with higher delta T\n", "* Conclusion: Finalize this model, but not add too much extra complexity, next steps is to go towards industrial partners with the results" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "# ENCORE : Heatpump Optimisation Framework\n", "\n", "***\n", "© Mark Kremer \n", "July 2020\n", "##### Cases\n", "In this model, 3 cases are compared:\n", "* **Baseline** : All heat is supplied by steam turbine\n", "* **Heatpump case** : All heat is supplied by heatpump\n", "* **Hybrid case** : Steam turbine and heatpump run in hybrid mode, and are optimised on costs in real-time" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "#### Loading config" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "class Config():\n", " start = '2023-01-01'\n", " end = '2023-12-31'\n", " # year = '2019'\n", " # startdate = year + '-01-01'\n", " # enddate = str(year) + '-12-31'\n", " # start = datetime.strptime(startdate, \"%Y-%m-%d\").astimezone(pytz.timezone('Europe/Amsterdam'))\n", " # end = datetime.strptime(enddate, \"%Y-%m-%d\").astimezone(pytz.timezone('Europe/Amsterdam'))\n", " # start = start.astimezone(pytz.UTC)\n", " # end = end.astimezone(pytz.UTC)\n", " \n", " hp_vdg_e_power = 23.3 # MW\n", " hp_ndg_e_power = 7.7 # MW\n", " hp_min_load = 0\n", " hp_lifetime = 25\n", " hp_capex = 200_000 # EUR/MWth\n", " hp_opex = 0.01 # in % of CAPEX\n", " hp_devex = 0.005 # in % of CAPEX\n", " \n", " gb_power = 35 # MW\n", " gb_efficiency = 0.9\n", " \n", " storage_power = 25\n", " storage_volume = 1000\n", " storage_cap_per_volume = 50 * 1e-3\n", " storage_lifetime = 25\n", " storage_temperature = 95\n", " storage_min_level = storage_volume * storage_cap_per_volume * 0.05\n", " storage_capex_per_MW = 7_000\n", " storage_capex_per_MWh = 5_000\n", " storage_opex_perc_of_capex = 0.02\n", " # storage_initial_level = 5\n", " threshold = 20\n", " \n", " tax_bracket_g = 4 \n", " tax_bracket_e = 4\n", " \n", " include_transport_costs = False\n", " grid_operator = 'Liander'\n", " connection_type = 'TS/MS'\n", " \n", " discount_rate = 0.1\n", " project_duration = 12\n", "\n", " forecast = 'ForeNeg'\n", " gas_price_multiplier = 1\n", " e_price_multiplier = 1\n", " e_price_volatility_multiplier = 1\n", " co2_price_multiplier = 1\n", " tsource_delta = 0\n", " tsink_delta = 0\n", " energy_tax_multiplier = 1\n", " \n", " # Review the SDE implementation\n", " sde_base_amount = 81\n", " longterm_gas_price = 24.00\n", " longterm_co2_price = 37.90\n", " sde_switch_price_correction = 40\n", " \n", " day_ahead_buying_perc = 0.3\n", " \n", " afrr_capacity_fee = 25_000\n", "\n", "c = Config()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "class Store():\n", " pass" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Model set-up" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Define the file paths\n", "excel_file_path = r'C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\Kickstart\\V2\\Demand_Data_Smurfit_Preprocessed2.xlsx'\n", "output_directory = r'C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\Kickstart\\V2\\data'\n", "output_file_name = 'smurfit_demand_preprocessed2.csv'\n", "csv_file_path = os.path.join(output_directory, output_file_name)\n", "\n", "df = pd.read_excel(excel_file_path)\n", "# df = df.fillna(0) \n", "\n", "# # Save the DataFrame to CSV\n", "df.to_csv(csv_file_path, index=False)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def load_demand_data(c, s):\n", " demand = pd.read_csv('data/smurfit_demand_preprocessed2.csv', delimiter=',', decimal=';')\n", " dt_index = pd.date_range(\n", " start=s.time_fw.start,\n", " end=s.time_fw.start + timedelta(days=365), \n", " freq='1T',\n", " tz='Europe/Amsterdam')\n", " dt_index = dt_index[:len(demand)]\n", " demand.index = dt_index\n", " demand['Total demand'] = demand['MW (VDG)'] + demand['MW (NDG)']\n", " demand = demand[c.start:c.end]\n", " return demand" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "s = Store()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "testets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\framework.py:41: UserWarning:\n", "\n", "The chosen timeperiod spans 365.99930555555557 days, which is not a full year. Beware that certain functions that use yearly rates might return incorrect values.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\forecasts.py:62: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\forecasts.py:115: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\framework.py:54: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\framework.py:54: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\framework.py:54: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\AppData\\Local\\Temp\\ipykernel_31900\\3886619535.py:3: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n" ] } ], "source": [ "def setup_model(c):\n", " s = Store()\n", " \n", " s.time_fw = TimeFramework(start=c.start, end=c.end)\n", " # s.minute_ix = s.time_fw.dt_index(freq='1T')\n", " mipf = Mipf(None, start=s.time_fw.start, end=s.time_fw.end, from_database=True, add_days_to_start_end=False).data\n", " s.mipf = mipf\n", " s.baseline = CaseStudy(time_fw=s.time_fw, freq='1T', name='Baseline')\n", " s.hpcase = CaseStudy(time_fw=s.time_fw, freq='1T', name='Heatpump only', data=mipf)\n", " #s.hpcase_sde = CaseStudy(time_fw=s.time_fw, freq='1T', name='Heatpump + SDE', data=mipf)\n", " #s.optcase1 = CaseStudy(time_fw=s.time_fw, freq='1T', name='Optimisation', data=mipf)\n", " #s.afrr_case = CaseStudy(time_fw=s.time_fw, freq='1T', name='Optimisation + aFRR', data=mipf)\n", " s.storage_case_PCM = CaseStudy(time_fw=s.time_fw, freq='1T', name='Heatpump + Storage_PCM', data=mipf)\n", " # s.storage_case_TCM = CaseStudy(time_fw=s.time_fw, freq='1T', name='Heatpump + Storage_TCM', data=mipf)\n", " # s.storage_case_battery = CaseStudy(time_fw=s.time_fw, freq='1T', name='Heatpump + Storage_battery', data=mipf)\n", " s.cases = list(CaseStudy.instances.values())\n", " #s.optcases = [s.hpcase, s.hpcase_sde, s.optcase1, s.afrr_case]\n", " s.optcases = [s.hpcase, s.storage_case_PCM]\n", " #s.sde_cases = [s.hpcase_sde, s.optcase1, s.afrr_case]\n", " s.sde_cases = []\n", " \n", " s.demand = load_demand_data(c, s)\n", " return s\n", "\n", "s = setup_model(c)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shahla.huseynova\\AppData\\Local\\Temp\\ipykernel_31900\\2657160476.py:1: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\AppData\\Roaming\\Python\\Python310\\site-packages\\cufflinks\\plotlytools.py:117: FutureWarning:\n", "\n", "DatetimeIndex.format is deprecated and will be removed in a future version. Convert using index.astype(str) or index.map(formatter) instead.\n", "\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": true }, "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "Tsource (VDG)", "text": "", "type": "scatter", "x": [ "2023-01-01 00:00:00+01:00", "2023-01-01 00:15:00+01:00", "2023-01-01 00:30:00+01:00", "2023-01-01 00:45:00+01:00", "2023-01-01 01:00:00+01:00", "2023-01-01 01:15:00+01:00", "2023-01-01 01:30:00+01:00", "2023-01-01 01:45:00+01:00", "2023-01-01 02:00:00+01:00", "2023-01-01 02:15:00+01:00", "2023-01-01 02:30:00+01:00", "2023-01-01 02:45:00+01:00", "2023-01-01 03:00:00+01:00", "2023-01-01 03:15:00+01:00", "2023-01-01 03:30:00+01:00", "2023-01-01 03:45:00+01:00", "2023-01-01 04:00:00+01:00", "2023-01-01 04:15:00+01:00", "2023-01-01 04:30:00+01:00", "2023-01-01 04:45:00+01:00", "2023-01-01 05:00:00+01:00", "2023-01-01 05:15:00+01:00", "2023-01-01 05:30:00+01:00", "2023-01-01 05:45:00+01:00", "2023-01-01 06:00:00+01:00", "2023-01-01 06:15:00+01:00", "2023-01-01 06:30:00+01:00", "2023-01-01 06:45:00+01:00", "2023-01-01 07:00:00+01:00", "2023-01-01 07:15:00+01:00", "2023-01-01 07:30:00+01:00", "2023-01-01 07:45:00+01:00", "2023-01-01 08:00:00+01:00", "2023-01-01 08:15:00+01:00", "2023-01-01 08:30:00+01:00", "2023-01-01 08:45:00+01:00", "2023-01-01 09:00:00+01:00", "2023-01-01 09:15:00+01:00", "2023-01-01 09:30:00+01:00", "2023-01-01 09:45:00+01:00", "2023-01-01 10:00:00+01:00", "2023-01-01 10:15:00+01:00", "2023-01-01 10:30:00+01:00", "2023-01-01 10:45:00+01:00", "2023-01-01 11:00:00+01:00", "2023-01-01 11:15:00+01:00", "2023-01-01 11:30:00+01:00", "2023-01-01 11:45:00+01:00", "2023-01-01 12:00:00+01:00", "2023-01-01 12:15:00+01:00", "2023-01-01 12:30:00+01:00", "2023-01-01 12:45:00+01:00", "2023-01-01 13:00:00+01:00", "2023-01-01 13:15:00+01:00", "2023-01-01 13:30:00+01:00", "2023-01-01 13:45:00+01:00", "2023-01-01 14:00:00+01:00", "2023-01-01 14:15:00+01:00", "2023-01-01 14:30:00+01:00", "2023-01-01 14:45:00+01:00", "2023-01-01 15:00:00+01:00", "2023-01-01 15:15:00+01:00", "2023-01-01 15:30:00+01:00", "2023-01-01 15:45:00+01:00", "2023-01-01 16:00:00+01:00", "2023-01-01 16:15:00+01:00", "2023-01-01 16:30:00+01:00", "2023-01-01 16:45:00+01:00", "2023-01-01 17:00:00+01:00", "2023-01-01 17:15:00+01:00", "2023-01-01 17:30:00+01:00", "2023-01-01 17:45:00+01:00", "2023-01-01 18:00:00+01:00", "2023-01-01 18:15:00+01:00", "2023-01-01 18:30:00+01:00", "2023-01-01 18:45:00+01:00", "2023-01-01 19:00:00+01:00", "2023-01-01 19:15:00+01:00", "2023-01-01 19:30:00+01:00", "2023-01-01 19:45:00+01:00", "2023-01-01 20:00:00+01:00", "2023-01-01 20:15:00+01:00", "2023-01-01 20:30:00+01:00", "2023-01-01 20:45:00+01:00", "2023-01-01 21:00:00+01:00", "2023-01-01 21:15:00+01:00", "2023-01-01 21:30:00+01:00", "2023-01-01 21:45:00+01:00", "2023-01-01 22:00:00+01:00", "2023-01-01 22:15:00+01:00", "2023-01-01 22:30:00+01:00", "2023-01-01 22:45:00+01:00", "2023-01-01 23:00:00+01:00", "2023-01-01 23:15:00+01:00", "2023-01-01 23:30:00+01:00", "2023-01-01 23:45:00+01:00", "2023-01-02 00:00:00+01:00", "2023-01-02 00:15:00+01:00", "2023-01-02 00:30:00+01:00", "2023-01-02 00:45:00+01:00", "2023-01-02 01:00:00+01:00", "2023-01-02 01:15:00+01:00", "2023-01-02 01:30:00+01:00", "2023-01-02 01:45:00+01:00", "2023-01-02 02:00:00+01:00", "2023-01-02 02:15:00+01:00", "2023-01-02 02:30:00+01:00", "2023-01-02 02:45:00+01:00", "2023-01-02 03:00:00+01:00", "2023-01-02 03:15:00+01:00", "2023-01-02 03:30:00+01:00", "2023-01-02 03:45:00+01:00", "2023-01-02 04:00:00+01:00", "2023-01-02 04:15:00+01:00", "2023-01-02 04:30:00+01:00", "2023-01-02 04:45:00+01:00", "2023-01-02 05:00:00+01:00", "2023-01-02 05:15:00+01:00", "2023-01-02 05:30:00+01:00", "2023-01-02 05:45:00+01:00", "2023-01-02 06:00:00+01:00", "2023-01-02 06:15:00+01:00", "2023-01-02 06:30:00+01:00", "2023-01-02 06:45:00+01:00", "2023-01-02 07:00:00+01:00", "2023-01-02 07:15:00+01:00", "2023-01-02 07:30:00+01:00", "2023-01-02 07:45:00+01:00", "2023-01-02 08:00:00+01:00", "2023-01-02 08:15:00+01:00", "2023-01-02 08:30:00+01:00", "2023-01-02 08:45:00+01:00", "2023-01-02 09:00:00+01:00", "2023-01-02 09:15:00+01:00", "2023-01-02 09:30:00+01:00", "2023-01-02 09:45:00+01:00", "2023-01-02 10:00:00+01:00", "2023-01-02 10:15:00+01:00", "2023-01-02 10:30:00+01:00", "2023-01-02 10:45:00+01:00", "2023-01-02 11:00:00+01:00", "2023-01-02 11:15:00+01:00", "2023-01-02 11:30:00+01:00", "2023-01-02 11:45:00+01:00", "2023-01-02 12:00:00+01:00", "2023-01-02 12:15:00+01:00", "2023-01-02 12:30:00+01:00", "2023-01-02 12:45:00+01:00", "2023-01-02 13:00:00+01:00", "2023-01-02 13:15:00+01:00", "2023-01-02 13:30:00+01:00", "2023-01-02 13:45:00+01:00", "2023-01-02 14:00:00+01:00", "2023-01-02 14:15:00+01:00", "2023-01-02 14:30:00+01:00", "2023-01-02 14:45:00+01:00", "2023-01-02 15:00:00+01:00", "2023-01-02 15:15:00+01:00", "2023-01-02 15:30:00+01:00", "2023-01-02 15:45:00+01:00", "2023-01-02 16:00:00+01:00", "2023-01-02 16:15:00+01:00", "2023-01-02 16:30:00+01:00", "2023-01-02 16:45:00+01:00", "2023-01-02 17:00:00+01:00", "2023-01-02 17:15:00+01:00", "2023-01-02 17:30:00+01:00", "2023-01-02 17:45:00+01:00", "2023-01-02 18:00:00+01:00", "2023-01-02 18:15:00+01:00", "2023-01-02 18:30:00+01:00", "2023-01-02 18:45:00+01:00", "2023-01-02 19:00:00+01:00", "2023-01-02 19:15:00+01:00", "2023-01-02 19:30:00+01:00", "2023-01-02 19:45:00+01:00", "2023-01-02 20:00:00+01:00", "2023-01-02 20:15:00+01:00", "2023-01-02 20:30:00+01:00", "2023-01-02 20:45:00+01:00", "2023-01-02 21:00:00+01:00", "2023-01-02 21:15:00+01:00", "2023-01-02 21:30:00+01:00", "2023-01-02 21:45:00+01:00", "2023-01-02 22:00:00+01:00", "2023-01-02 22:15:00+01:00", "2023-01-02 22:30:00+01:00", "2023-01-02 22:45:00+01:00", "2023-01-02 23:00:00+01:00", "2023-01-02 23:15:00+01:00", "2023-01-02 23:30:00+01:00", "2023-01-02 23:45:00+01:00", "2023-01-03 00:00:00+01:00", "2023-01-03 00:15:00+01:00", "2023-01-03 00:30:00+01:00", "2023-01-03 00:45:00+01:00", "2023-01-03 01:00:00+01:00", "2023-01-03 01:15:00+01:00", "2023-01-03 01:30:00+01:00", "2023-01-03 01:45:00+01:00", "2023-01-03 02:00:00+01:00", "2023-01-03 02:15:00+01:00", "2023-01-03 02:30:00+01:00", "2023-01-03 02:45:00+01:00", "2023-01-03 03:00:00+01:00", "2023-01-03 03:15:00+01:00", "2023-01-03 03:30:00+01:00", "2023-01-03 03:45:00+01:00", "2023-01-03 04:00:00+01:00", "2023-01-03 04:15:00+01:00", "2023-01-03 04:30:00+01:00", "2023-01-03 04:45:00+01:00", "2023-01-03 05:00:00+01:00", "2023-01-03 05:15:00+01:00", "2023-01-03 05:30:00+01:00", "2023-01-03 05:45:00+01:00", "2023-01-03 06:00:00+01:00", "2023-01-03 06:15:00+01:00", "2023-01-03 06:30:00+01:00", "2023-01-03 06:45:00+01:00", "2023-01-03 07:00:00+01:00", "2023-01-03 07:15:00+01:00", "2023-01-03 07:30:00+01:00", "2023-01-03 07:45:00+01:00", "2023-01-03 08:00:00+01:00", "2023-01-03 08:15:00+01:00", "2023-01-03 08:30:00+01:00", "2023-01-03 08:45:00+01:00", "2023-01-03 09:00:00+01:00", "2023-01-03 09:15:00+01:00", "2023-01-03 09:30:00+01:00", "2023-01-03 09:45:00+01:00", "2023-01-03 10:00:00+01:00", "2023-01-03 10:15:00+01:00", "2023-01-03 10:30:00+01:00", "2023-01-03 10:45:00+01:00", "2023-01-03 11:00:00+01:00", "2023-01-03 11:15:00+01:00", "2023-01-03 11:30:00+01:00", "2023-01-03 11:45:00+01:00", "2023-01-03 12:00:00+01:00", "2023-01-03 12:15:00+01:00", "2023-01-03 12:30:00+01:00", "2023-01-03 12:45:00+01:00", "2023-01-03 13:00:00+01:00", "2023-01-03 13:15:00+01:00", "2023-01-03 13:30:00+01:00", "2023-01-03 13:45:00+01:00", "2023-01-03 14:00:00+01:00", "2023-01-03 14:15:00+01:00", "2023-01-03 14:30:00+01:00", "2023-01-03 14:45:00+01:00", "2023-01-03 15:00:00+01:00", "2023-01-03 15:15:00+01:00", "2023-01-03 15:30:00+01:00", "2023-01-03 15:45:00+01:00", "2023-01-03 16:00:00+01:00", "2023-01-03 16:15:00+01:00", "2023-01-03 16:30:00+01:00", "2023-01-03 16:45:00+01:00", "2023-01-03 17:00:00+01:00", "2023-01-03 17:15:00+01:00", "2023-01-03 17:30:00+01:00", "2023-01-03 17:45:00+01:00", "2023-01-03 18:00:00+01:00", "2023-01-03 18:15:00+01:00", "2023-01-03 18:30:00+01:00", "2023-01-03 18:45:00+01:00", "2023-01-03 19:00:00+01:00", "2023-01-03 19:15:00+01:00", "2023-01-03 19:30:00+01:00", "2023-01-03 19:45:00+01:00", "2023-01-03 20:00:00+01:00", "2023-01-03 20:15:00+01:00", "2023-01-03 20:30:00+01:00", "2023-01-03 20:45:00+01:00", "2023-01-03 21:00:00+01:00", "2023-01-03 21:15:00+01:00", "2023-01-03 21:30:00+01:00", "2023-01-03 21:45:00+01:00", "2023-01-03 22:00:00+01:00", "2023-01-03 22:15:00+01:00", "2023-01-03 22:30:00+01:00", "2023-01-03 22:45:00+01:00", "2023-01-03 23:00:00+01:00", "2023-01-03 23:15:00+01:00", "2023-01-03 23:30:00+01:00", "2023-01-03 23:45:00+01:00", "2023-01-04 00:00:00+01:00", "2023-01-04 00:15:00+01:00", "2023-01-04 00:30:00+01:00", "2023-01-04 00:45:00+01:00", "2023-01-04 01:00:00+01:00", "2023-01-04 01:15:00+01:00", "2023-01-04 01:30:00+01:00", "2023-01-04 01:45:00+01:00", "2023-01-04 02:00:00+01:00", "2023-01-04 02:15:00+01:00", "2023-01-04 02:30:00+01:00", "2023-01-04 02:45:00+01:00", "2023-01-04 03:00:00+01:00", "2023-01-04 03:15:00+01:00", "2023-01-04 03:30:00+01:00", "2023-01-04 03:45:00+01:00", "2023-01-04 04:00:00+01:00", "2023-01-04 04:15:00+01:00", "2023-01-04 04:30:00+01:00", "2023-01-04 04:45:00+01:00", "2023-01-04 05:00:00+01:00", "2023-01-04 05:15:00+01:00", "2023-01-04 05:30:00+01:00", "2023-01-04 05:45:00+01:00", "2023-01-04 06:00:00+01:00", "2023-01-04 06:15:00+01:00", "2023-01-04 06:30:00+01:00", "2023-01-04 06:45:00+01:00", "2023-01-04 07:00:00+01:00", "2023-01-04 07:15:00+01:00", "2023-01-04 07:30:00+01:00", "2023-01-04 07:45:00+01:00", "2023-01-04 08:00:00+01:00", "2023-01-04 08:15:00+01:00", "2023-01-04 08:30:00+01:00", "2023-01-04 08:45:00+01:00", "2023-01-04 09:00:00+01:00", "2023-01-04 09:15:00+01:00", "2023-01-04 09:30:00+01:00", "2023-01-04 09:45:00+01:00", "2023-01-04 10:00:00+01:00", "2023-01-04 10:15:00+01:00", "2023-01-04 10:30:00+01:00", "2023-01-04 10:45:00+01:00", "2023-01-04 11:00:00+01:00", "2023-01-04 11:15:00+01:00", "2023-01-04 11:30:00+01:00", "2023-01-04 11:45:00+01:00", "2023-01-04 12:00:00+01:00", "2023-01-04 12:15:00+01:00", "2023-01-04 12:30:00+01:00", "2023-01-04 12:45:00+01:00", "2023-01-04 13:00:00+01:00", "2023-01-04 13:15:00+01:00", "2023-01-04 13:30:00+01:00", "2023-01-04 13:45:00+01:00", "2023-01-04 14:00:00+01:00", "2023-01-04 14:15:00+01:00", "2023-01-04 14:30:00+01:00", "2023-01-04 14:45:00+01:00", "2023-01-04 15:00:00+01:00", "2023-01-04 15:15:00+01:00", "2023-01-04 15:30:00+01:00", "2023-01-04 15:45:00+01:00", "2023-01-04 16:00:00+01:00", "2023-01-04 16:15:00+01:00", "2023-01-04 16:30:00+01:00", "2023-01-04 16:45:00+01:00", "2023-01-04 17:00:00+01:00", "2023-01-04 17:15:00+01:00", "2023-01-04 17:30:00+01:00", "2023-01-04 17:45:00+01:00", "2023-01-04 18:00:00+01:00", "2023-01-04 18:15:00+01:00", "2023-01-04 18:30:00+01:00", "2023-01-04 18:45:00+01:00", "2023-01-04 19:00:00+01:00", "2023-01-04 19:15:00+01:00", "2023-01-04 19:30:00+01:00", "2023-01-04 19:45:00+01:00", "2023-01-04 20:00:00+01:00", "2023-01-04 20:15:00+01:00", "2023-01-04 20:30:00+01:00", "2023-01-04 20:45:00+01:00", "2023-01-04 21:00:00+01:00", "2023-01-04 21:15:00+01:00", "2023-01-04 21:30:00+01:00", "2023-01-04 21:45:00+01:00", "2023-01-04 22:00:00+01:00", "2023-01-04 22:15:00+01:00", "2023-01-04 22:30:00+01:00", "2023-01-04 22:45:00+01:00", "2023-01-04 23:00:00+01:00", "2023-01-04 23:15:00+01:00", "2023-01-04 23:30:00+01:00", "2023-01-04 23:45:00+01:00", "2023-01-05 00:00:00+01:00", "2023-01-05 00:15:00+01:00", "2023-01-05 00:30:00+01:00", "2023-01-05 00:45:00+01:00", "2023-01-05 01:00:00+01:00", "2023-01-05 01:15:00+01:00", "2023-01-05 01:30:00+01:00", "2023-01-05 01:45:00+01:00", "2023-01-05 02:00:00+01:00", "2023-01-05 02:15:00+01:00", "2023-01-05 02:30:00+01:00", "2023-01-05 02:45:00+01:00", "2023-01-05 03:00:00+01:00", "2023-01-05 03:15:00+01:00", "2023-01-05 03:30:00+01:00", "2023-01-05 03:45:00+01:00", "2023-01-05 04:00:00+01:00", "2023-01-05 04:15:00+01:00", "2023-01-05 04:30:00+01:00", "2023-01-05 04:45:00+01:00", "2023-01-05 05:00:00+01:00", "2023-01-05 05:15:00+01:00", "2023-01-05 05:30:00+01:00", "2023-01-05 05:45:00+01:00", "2023-01-05 06:00:00+01:00", "2023-01-05 06:15:00+01:00", "2023-01-05 06:30:00+01:00", "2023-01-05 06:45:00+01:00", "2023-01-05 07:00:00+01:00", "2023-01-05 07:15:00+01:00", "2023-01-05 07:30:00+01:00", "2023-01-05 07:45:00+01:00", "2023-01-05 08:00:00+01:00", "2023-01-05 08:15:00+01:00", "2023-01-05 08:30:00+01:00", "2023-01-05 08:45:00+01:00", "2023-01-05 09:00:00+01:00", "2023-01-05 09:15:00+01:00", "2023-01-05 09:30:00+01:00", "2023-01-05 09:45:00+01:00", "2023-01-05 10:00:00+01:00", "2023-01-05 10:15:00+01:00", "2023-01-05 10:30:00+01:00", "2023-01-05 10:45:00+01:00", "2023-01-05 11:00:00+01:00", "2023-01-05 11:15:00+01:00", "2023-01-05 11:30:00+01:00", "2023-01-05 11:45:00+01:00", "2023-01-05 12:00:00+01:00", "2023-01-05 12:15:00+01:00", "2023-01-05 12:30:00+01:00", "2023-01-05 12:45:00+01:00", "2023-01-05 13:00:00+01:00", "2023-01-05 13:15:00+01:00", "2023-01-05 13:30:00+01:00", "2023-01-05 13:45:00+01:00", "2023-01-05 14:00:00+01:00", "2023-01-05 14:15:00+01:00", "2023-01-05 14:30:00+01:00", "2023-01-05 14:45:00+01:00", "2023-01-05 15:00:00+01:00", "2023-01-05 15:15:00+01:00", "2023-01-05 15:30:00+01:00", "2023-01-05 15:45:00+01:00", "2023-01-05 16:00:00+01:00", "2023-01-05 16:15:00+01:00", "2023-01-05 16:30:00+01:00", "2023-01-05 16:45:00+01:00", "2023-01-05 17:00:00+01:00", "2023-01-05 17:15:00+01:00", "2023-01-05 17:30:00+01:00", "2023-01-05 17:45:00+01:00", "2023-01-05 18:00:00+01:00", "2023-01-05 18:15:00+01:00", "2023-01-05 18:30:00+01:00", "2023-01-05 18:45:00+01:00", "2023-01-05 19:00:00+01:00", "2023-01-05 19:15:00+01:00", "2023-01-05 19:30:00+01:00", "2023-01-05 19:45:00+01:00", "2023-01-05 20:00:00+01:00", "2023-01-05 20:15:00+01:00", "2023-01-05 20:30:00+01:00", "2023-01-05 20:45:00+01:00", "2023-01-05 21:00:00+01:00", "2023-01-05 21:15:00+01:00", "2023-01-05 21:30:00+01:00", "2023-01-05 21:45:00+01:00", "2023-01-05 22:00:00+01:00", "2023-01-05 22:15:00+01:00", "2023-01-05 22:30:00+01:00", "2023-01-05 22:45:00+01:00", "2023-01-05 23:00:00+01:00", "2023-01-05 23:15:00+01:00", "2023-01-05 23:30:00+01:00", "2023-01-05 23:45:00+01:00", "2023-01-06 00:00:00+01:00", "2023-01-06 00:15:00+01:00", "2023-01-06 00:30:00+01:00", "2023-01-06 00:45:00+01:00", "2023-01-06 01:00:00+01:00", "2023-01-06 01:15:00+01:00", "2023-01-06 01:30:00+01:00", "2023-01-06 01:45:00+01:00", "2023-01-06 02:00:00+01:00", "2023-01-06 02:15:00+01:00", "2023-01-06 02:30:00+01:00", "2023-01-06 02:45:00+01:00", "2023-01-06 03:00:00+01:00", "2023-01-06 03:15:00+01:00", "2023-01-06 03:30:00+01:00", "2023-01-06 03:45:00+01:00", "2023-01-06 04:00:00+01:00", "2023-01-06 04:15:00+01:00", "2023-01-06 04:30:00+01:00", "2023-01-06 04:45:00+01:00", "2023-01-06 05:00:00+01:00", "2023-01-06 05:15:00+01:00", "2023-01-06 05:30:00+01:00", "2023-01-06 05:45:00+01:00", "2023-01-06 06:00:00+01:00", "2023-01-06 06:15:00+01:00", "2023-01-06 06:30:00+01:00", "2023-01-06 06:45:00+01:00", "2023-01-06 07:00:00+01:00", "2023-01-06 07:15:00+01:00", "2023-01-06 07:30:00+01:00", "2023-01-06 07:45:00+01:00", "2023-01-06 08:00:00+01:00", "2023-01-06 08:15:00+01:00", "2023-01-06 08:30:00+01:00", "2023-01-06 08:45:00+01:00", "2023-01-06 09:00:00+01:00", "2023-01-06 09:15:00+01:00", "2023-01-06 09:30:00+01:00", "2023-01-06 09:45:00+01:00", "2023-01-06 10:00:00+01:00", "2023-01-06 10:15:00+01:00", "2023-01-06 10:30:00+01:00", "2023-01-06 10:45:00+01:00", "2023-01-06 11:00:00+01:00", "2023-01-06 11:15:00+01:00", "2023-01-06 11:30:00+01:00", "2023-01-06 11:45:00+01:00", "2023-01-06 12:00:00+01:00", "2023-01-06 12:15:00+01:00", "2023-01-06 12:30:00+01:00", "2023-01-06 12:45:00+01:00", "2023-01-06 13:00:00+01:00", "2023-01-06 13:15:00+01:00", "2023-01-06 13:30:00+01:00", "2023-01-06 13:45:00+01:00", "2023-01-06 14:00:00+01:00", "2023-01-06 14:15:00+01:00", "2023-01-06 14:30:00+01:00", "2023-01-06 14:45:00+01:00", "2023-01-06 15:00:00+01:00", "2023-01-06 15:15:00+01:00", "2023-01-06 15:30:00+01:00", "2023-01-06 15:45:00+01:00", "2023-01-06 16:00:00+01:00", "2023-01-06 16:15:00+01:00", "2023-01-06 16:30:00+01:00", "2023-01-06 16:45:00+01:00", "2023-01-06 17:00:00+01:00", "2023-01-06 17:15:00+01:00", "2023-01-06 17:30:00+01:00", "2023-01-06 17:45:00+01:00", "2023-01-06 18:00:00+01:00", "2023-01-06 18:15:00+01:00", "2023-01-06 18:30:00+01:00", "2023-01-06 18:45:00+01:00", "2023-01-06 19:00:00+01:00", "2023-01-06 19:15:00+01:00", "2023-01-06 19:30:00+01:00", "2023-01-06 19:45:00+01:00", "2023-01-06 20:00:00+01:00", "2023-01-06 20:15:00+01:00", "2023-01-06 20:30:00+01:00", "2023-01-06 20:45:00+01:00", "2023-01-06 21:00:00+01:00", "2023-01-06 21:15:00+01:00", "2023-01-06 21:30:00+01:00", "2023-01-06 21:45:00+01:00", "2023-01-06 22:00:00+01:00", "2023-01-06 22:15:00+01:00", "2023-01-06 22:30:00+01:00", "2023-01-06 22:45:00+01:00", "2023-01-06 23:00:00+01:00", "2023-01-06 23:15:00+01:00", "2023-01-06 23:30:00+01:00", "2023-01-06 23:45:00+01:00", "2023-01-07 00:00:00+01:00", "2023-01-07 00:15:00+01:00", "2023-01-07 00:30:00+01:00", "2023-01-07 00:45:00+01:00", "2023-01-07 01:00:00+01:00", "2023-01-07 01:15:00+01:00", "2023-01-07 01:30:00+01:00", "2023-01-07 01:45:00+01:00", "2023-01-07 02:00:00+01:00", "2023-01-07 02:15:00+01:00", "2023-01-07 02:30:00+01:00", "2023-01-07 02:45:00+01:00", "2023-01-07 03:00:00+01:00", "2023-01-07 03:15:00+01:00", "2023-01-07 03:30:00+01:00", "2023-01-07 03:45:00+01:00", "2023-01-07 04:00:00+01:00", "2023-01-07 04:15:00+01:00", "2023-01-07 04:30:00+01:00", "2023-01-07 04:45:00+01:00", "2023-01-07 05:00:00+01:00", "2023-01-07 05:15:00+01:00", "2023-01-07 05:30:00+01:00", "2023-01-07 05:45:00+01:00", "2023-01-07 06:00:00+01:00", "2023-01-07 06:15:00+01:00", "2023-01-07 06:30:00+01:00", "2023-01-07 06:45:00+01:00", "2023-01-07 07:00:00+01:00", "2023-01-07 07:15:00+01:00", "2023-01-07 07:30:00+01:00", "2023-01-07 07:45:00+01:00", "2023-01-07 08:00:00+01:00", "2023-01-07 08:15:00+01:00", "2023-01-07 08:30:00+01:00", "2023-01-07 08:45:00+01:00", "2023-01-07 09:00:00+01:00", "2023-01-07 09:15:00+01:00", "2023-01-07 09:30:00+01:00", "2023-01-07 09:45:00+01:00", "2023-01-07 10:00:00+01:00", "2023-01-07 10:15:00+01:00", "2023-01-07 10:30:00+01:00", "2023-01-07 10:45:00+01:00", "2023-01-07 11:00:00+01:00", "2023-01-07 11:15:00+01:00", "2023-01-07 11:30:00+01:00", "2023-01-07 11:45:00+01:00", "2023-01-07 12:00:00+01:00", "2023-01-07 12:15:00+01:00", "2023-01-07 12:30:00+01:00", "2023-01-07 12:45:00+01:00", "2023-01-07 13:00:00+01:00", "2023-01-07 13:15:00+01:00", "2023-01-07 13:30:00+01:00", "2023-01-07 13:45:00+01:00", "2023-01-07 14:00:00+01:00", "2023-01-07 14:15:00+01:00", "2023-01-07 14:30:00+01:00", "2023-01-07 14:45:00+01:00", "2023-01-07 15:00:00+01:00", "2023-01-07 15:15:00+01:00", "2023-01-07 15:30:00+01:00", "2023-01-07 15:45:00+01:00", "2023-01-07 16:00:00+01:00", "2023-01-07 16:15:00+01:00", "2023-01-07 16:30:00+01:00", "2023-01-07 16:45:00+01:00", "2023-01-07 17:00:00+01:00", "2023-01-07 17:15:00+01:00", "2023-01-07 17:30:00+01:00", "2023-01-07 17:45:00+01:00", "2023-01-07 18:00:00+01:00", "2023-01-07 18:15:00+01:00", "2023-01-07 18:30:00+01:00", "2023-01-07 18:45:00+01:00", "2023-01-07 19:00:00+01:00", "2023-01-07 19:15:00+01:00", "2023-01-07 19:30:00+01:00", "2023-01-07 19:45:00+01:00", "2023-01-07 20:00:00+01:00", "2023-01-07 20:15:00+01:00", "2023-01-07 20:30:00+01:00", "2023-01-07 20:45:00+01:00", "2023-01-07 21:00:00+01:00", "2023-01-07 21:15:00+01:00", "2023-01-07 21:30:00+01:00", "2023-01-07 21:45:00+01:00", "2023-01-07 22:00:00+01:00", "2023-01-07 22:15:00+01:00", "2023-01-07 22:30:00+01:00", "2023-01-07 22:45:00+01:00", "2023-01-07 23:00:00+01:00", "2023-01-07 23:15:00+01:00", "2023-01-07 23:30:00+01:00", "2023-01-07 23:45:00+01:00", "2023-01-08 00:00:00+01:00", "2023-01-08 00:15:00+01:00", "2023-01-08 00:30:00+01:00", "2023-01-08 00:45:00+01:00", "2023-01-08 01:00:00+01:00", "2023-01-08 01:15:00+01:00", "2023-01-08 01:30:00+01:00", "2023-01-08 01:45:00+01:00", "2023-01-08 02:00:00+01:00", "2023-01-08 02:15:00+01:00", "2023-01-08 02:30:00+01:00", "2023-01-08 02:45:00+01:00", "2023-01-08 03:00:00+01:00", "2023-01-08 03:15:00+01:00", "2023-01-08 03:30:00+01:00", "2023-01-08 03:45:00+01:00", "2023-01-08 04:00:00+01:00", "2023-01-08 04:15:00+01:00", "2023-01-08 04:30:00+01:00", "2023-01-08 04:45:00+01:00", "2023-01-08 05:00:00+01:00", "2023-01-08 05:15:00+01:00", "2023-01-08 05:30:00+01:00", "2023-01-08 05:45:00+01:00", "2023-01-08 06:00:00+01:00", "2023-01-08 06:15:00+01:00", "2023-01-08 06:30:00+01:00", "2023-01-08 06:45:00+01:00", "2023-01-08 07:00:00+01:00", "2023-01-08 07:15:00+01:00", "2023-01-08 07:30:00+01:00", "2023-01-08 07:45:00+01:00", "2023-01-08 08:00:00+01:00", "2023-01-08 08:15:00+01:00", "2023-01-08 08:30:00+01:00", "2023-01-08 08:45:00+01:00", "2023-01-08 09:00:00+01:00", "2023-01-08 09:15:00+01:00", "2023-01-08 09:30:00+01:00", "2023-01-08 09:45:00+01:00", "2023-01-08 10:00:00+01:00", "2023-01-08 10:15:00+01:00", "2023-01-08 10:30:00+01:00", "2023-01-08 10:45:00+01:00", "2023-01-08 11:00:00+01:00", "2023-01-08 11:15:00+01:00", "2023-01-08 11:30:00+01:00", "2023-01-08 11:45:00+01:00", "2023-01-08 12:00:00+01:00", "2023-01-08 12:15:00+01:00", "2023-01-08 12:30:00+01:00", "2023-01-08 12:45:00+01:00", "2023-01-08 13:00:00+01:00", "2023-01-08 13:15:00+01:00", "2023-01-08 13:30:00+01:00", "2023-01-08 13:45:00+01:00", "2023-01-08 14:00:00+01:00", "2023-01-08 14:15:00+01:00", "2023-01-08 14:30:00+01:00", "2023-01-08 14:45:00+01:00", "2023-01-08 15:00:00+01:00", "2023-01-08 15:15:00+01:00", "2023-01-08 15:30:00+01:00", "2023-01-08 15:45:00+01:00", "2023-01-08 16:00:00+01:00", "2023-01-08 16:15:00+01:00", "2023-01-08 16:30:00+01:00", "2023-01-08 16:45:00+01:00", "2023-01-08 17:00:00+01:00", "2023-01-08 17:15:00+01:00", "2023-01-08 17:30:00+01:00", "2023-01-08 17:45:00+01:00", "2023-01-08 18:00:00+01:00", "2023-01-08 18:15:00+01:00", "2023-01-08 18:30:00+01:00", "2023-01-08 18:45:00+01:00", "2023-01-08 19:00:00+01:00", "2023-01-08 19:15:00+01:00", "2023-01-08 19:30:00+01:00", "2023-01-08 19:45:00+01:00", "2023-01-08 20:00:00+01:00", "2023-01-08 20:15:00+01:00", "2023-01-08 20:30:00+01:00", "2023-01-08 20:45:00+01:00", "2023-01-08 21:00:00+01:00", "2023-01-08 21:15:00+01:00", "2023-01-08 21:30:00+01:00", "2023-01-08 21:45:00+01:00", "2023-01-08 22:00:00+01:00", "2023-01-08 22:15:00+01:00", "2023-01-08 22:30:00+01:00", "2023-01-08 22:45:00+01:00", "2023-01-08 23:00:00+01:00", "2023-01-08 23:15:00+01:00", "2023-01-08 23:30:00+01:00", "2023-01-08 23:45:00+01:00", "2023-01-09 00:00:00+01:00", "2023-01-09 00:15:00+01:00", "2023-01-09 00:30:00+01:00", "2023-01-09 00:45:00+01:00", "2023-01-09 01:00:00+01:00", "2023-01-09 01:15:00+01:00", "2023-01-09 01:30:00+01:00", "2023-01-09 01:45:00+01:00", "2023-01-09 02:00:00+01:00", "2023-01-09 02:15:00+01:00", "2023-01-09 02:30:00+01:00", "2023-01-09 02:45:00+01:00", "2023-01-09 03:00:00+01:00", "2023-01-09 03:15:00+01:00", "2023-01-09 03:30:00+01:00", "2023-01-09 03:45:00+01:00", "2023-01-09 04:00:00+01:00", "2023-01-09 04:15:00+01:00", "2023-01-09 04:30:00+01:00", "2023-01-09 04:45:00+01:00", "2023-01-09 05:00:00+01:00", "2023-01-09 05:15:00+01:00", "2023-01-09 05:30:00+01:00", "2023-01-09 05:45:00+01:00", "2023-01-09 06:00:00+01:00", "2023-01-09 06:15:00+01:00", "2023-01-09 06:30:00+01:00", "2023-01-09 06:45:00+01:00", "2023-01-09 07:00:00+01:00", "2023-01-09 07:15:00+01:00", "2023-01-09 07:30:00+01:00", "2023-01-09 07:45:00+01:00", "2023-01-09 08:00:00+01:00", "2023-01-09 08:15:00+01:00", "2023-01-09 08:30:00+01:00", "2023-01-09 08:45:00+01:00", "2023-01-09 09:00:00+01:00", "2023-01-09 09:15:00+01:00", "2023-01-09 09:30:00+01:00", "2023-01-09 09:45:00+01:00", "2023-01-09 10:00:00+01:00", "2023-01-09 10:15:00+01:00", "2023-01-09 10:30:00+01:00", "2023-01-09 10:45:00+01:00", "2023-01-09 11:00:00+01:00", "2023-01-09 11:15:00+01:00", "2023-01-09 11:30:00+01:00", "2023-01-09 11:45:00+01:00", "2023-01-09 12:00:00+01:00", "2023-01-09 12:15:00+01:00", "2023-01-09 12:30:00+01:00", "2023-01-09 12:45:00+01:00", "2023-01-09 13:00:00+01:00", "2023-01-09 13:15:00+01:00", "2023-01-09 13:30:00+01:00", "2023-01-09 13:45:00+01:00", "2023-01-09 14:00:00+01:00", "2023-01-09 14:15:00+01:00", "2023-01-09 14:30:00+01:00", "2023-01-09 14:45:00+01:00", "2023-01-09 15:00:00+01:00", "2023-01-09 15:15:00+01:00", "2023-01-09 15:30:00+01:00", "2023-01-09 15:45:00+01:00", "2023-01-09 16:00:00+01:00", "2023-01-09 16:15:00+01:00", "2023-01-09 16:30:00+01:00", "2023-01-09 16:45:00+01:00", "2023-01-09 17:00:00+01:00", "2023-01-09 17:15:00+01:00", "2023-01-09 17:30:00+01:00", "2023-01-09 17:45:00+01:00", "2023-01-09 18:00:00+01:00", "2023-01-09 18:15:00+01:00", "2023-01-09 18:30:00+01:00", "2023-01-09 18:45:00+01:00", "2023-01-09 19:00:00+01:00", "2023-01-09 19:15:00+01:00", "2023-01-09 19:30:00+01:00", "2023-01-09 19:45:00+01:00", "2023-01-09 20:00:00+01:00", "2023-01-09 20:15:00+01:00", "2023-01-09 20:30:00+01:00", "2023-01-09 20:45:00+01:00", "2023-01-09 21:00:00+01:00", "2023-01-09 21:15:00+01:00", "2023-01-09 21:30:00+01:00", "2023-01-09 21:45:00+01:00", "2023-01-09 22:00:00+01:00", "2023-01-09 22:15:00+01:00", "2023-01-09 22:30:00+01:00", "2023-01-09 22:45:00+01:00", "2023-01-09 23:00:00+01:00", "2023-01-09 23:15:00+01:00", "2023-01-09 23:30:00+01:00", "2023-01-09 23:45:00+01:00", "2023-01-10 00:00:00+01:00", "2023-01-10 00:15:00+01:00", "2023-01-10 00:30:00+01:00", "2023-01-10 00:45:00+01:00", "2023-01-10 01:00:00+01:00", "2023-01-10 01:15:00+01:00", "2023-01-10 01:30:00+01:00", "2023-01-10 01:45:00+01:00", "2023-01-10 02:00:00+01:00", "2023-01-10 02:15:00+01:00", "2023-01-10 02:30:00+01:00", "2023-01-10 02:45:00+01:00", "2023-01-10 03:00:00+01:00", "2023-01-10 03:15:00+01:00", "2023-01-10 03:30:00+01:00", "2023-01-10 03:45:00+01:00", "2023-01-10 04:00:00+01:00", "2023-01-10 04:15:00+01:00", "2023-01-10 04:30:00+01:00", "2023-01-10 04:45:00+01:00", "2023-01-10 05:00:00+01:00", "2023-01-10 05:15:00+01:00", "2023-01-10 05:30:00+01:00", "2023-01-10 05:45:00+01:00", "2023-01-10 06:00:00+01:00", "2023-01-10 06:15:00+01:00", "2023-01-10 06:30:00+01:00", "2023-01-10 06:45:00+01:00", "2023-01-10 07:00:00+01:00", "2023-01-10 07:15:00+01:00", "2023-01-10 07:30:00+01:00", "2023-01-10 07:45:00+01:00", "2023-01-10 08:00:00+01:00", "2023-01-10 08:15:00+01:00", "2023-01-10 08:30:00+01:00", "2023-01-10 08:45:00+01:00", "2023-01-10 09:00:00+01:00", "2023-01-10 09:15:00+01:00", "2023-01-10 09:30:00+01:00", "2023-01-10 09:45:00+01:00", "2023-01-10 10:00:00+01:00", "2023-01-10 10:15:00+01:00", "2023-01-10 10:30:00+01:00", "2023-01-10 10:45:00+01:00", "2023-01-10 11:00:00+01:00", "2023-01-10 11:15:00+01:00", "2023-01-10 11:30:00+01:00", "2023-01-10 11:45:00+01:00", "2023-01-10 12:00:00+01:00", "2023-01-10 12:15:00+01:00", "2023-01-10 12:30:00+01:00", "2023-01-10 12:45:00+01:00", "2023-01-10 13:00:00+01:00", "2023-01-10 13:15:00+01:00", "2023-01-10 13:30:00+01:00", "2023-01-10 13:45:00+01:00", "2023-01-10 14:00:00+01:00", "2023-01-10 14:15:00+01:00", "2023-01-10 14:30:00+01:00", "2023-01-10 14:45:00+01:00", "2023-01-10 15:00:00+01:00", "2023-01-10 15:15:00+01:00", "2023-01-10 15:30:00+01:00", "2023-01-10 15:45:00+01:00", "2023-01-10 16:00:00+01:00", "2023-01-10 16:15:00+01:00", "2023-01-10 16:30:00+01:00", "2023-01-10 16:45:00+01:00", "2023-01-10 17:00:00+01:00", "2023-01-10 17:15:00+01:00", "2023-01-10 17:30:00+01:00", "2023-01-10 17:45:00+01:00", "2023-01-10 18:00:00+01:00", "2023-01-10 18:15:00+01:00", "2023-01-10 18:30:00+01:00", "2023-01-10 18:45:00+01:00", "2023-01-10 19:00:00+01:00", "2023-01-10 19:15:00+01:00", "2023-01-10 19:30:00+01:00", "2023-01-10 19:45:00+01:00", "2023-01-10 20:00:00+01:00", "2023-01-10 20:15:00+01:00", "2023-01-10 20:30:00+01:00", "2023-01-10 20:45:00+01:00", "2023-01-10 21:00:00+01:00", "2023-01-10 21:15:00+01:00", "2023-01-10 21:30:00+01:00", "2023-01-10 21:45:00+01:00", "2023-01-10 22:00:00+01:00", "2023-01-10 22:15:00+01:00", "2023-01-10 22:30:00+01:00", "2023-01-10 22:45:00+01:00", "2023-01-10 23:00:00+01:00", "2023-01-10 23:15:00+01:00", "2023-01-10 23:30:00+01:00", "2023-01-10 23:45:00+01:00", "2023-01-11 00:00:00+01:00", "2023-01-11 00:15:00+01:00", "2023-01-11 00:30:00+01:00", "2023-01-11 00:45:00+01:00", "2023-01-11 01:00:00+01:00", "2023-01-11 01:15:00+01:00", "2023-01-11 01:30:00+01:00", "2023-01-11 01:45:00+01:00", "2023-01-11 02:00:00+01:00", "2023-01-11 02:15:00+01:00", "2023-01-11 02:30:00+01:00", "2023-01-11 02:45:00+01:00", "2023-01-11 03:00:00+01:00", "2023-01-11 03:15:00+01:00", "2023-01-11 03:30:00+01:00", "2023-01-11 03:45:00+01:00", "2023-01-11 04:00:00+01:00", "2023-01-11 04:15:00+01:00", "2023-01-11 04:30:00+01:00", "2023-01-11 04:45:00+01:00", "2023-01-11 05:00:00+01:00", "2023-01-11 05:15:00+01:00", "2023-01-11 05:30:00+01:00", "2023-01-11 05:45:00+01:00", "2023-01-11 06:00:00+01:00", "2023-01-11 06:15:00+01:00", "2023-01-11 06:30:00+01:00", "2023-01-11 06:45:00+01:00", "2023-01-11 07:00:00+01:00", "2023-01-11 07:15:00+01:00", "2023-01-11 07:30:00+01:00", "2023-01-11 07:45:00+01:00", "2023-01-11 08:00:00+01:00", "2023-01-11 08:15:00+01:00", "2023-01-11 08:30:00+01:00", "2023-01-11 08:45:00+01:00", "2023-01-11 09:00:00+01:00", "2023-01-11 09:15:00+01:00", "2023-01-11 09:30:00+01:00", "2023-01-11 09:45:00+01:00", "2023-01-11 10:00:00+01:00", "2023-01-11 10:15:00+01:00", "2023-01-11 10:30:00+01:00", "2023-01-11 10:45:00+01:00", "2023-01-11 11:00:00+01:00", "2023-01-11 11:15:00+01:00", "2023-01-11 11:30:00+01:00", "2023-01-11 11:45:00+01:00", "2023-01-11 12:00:00+01:00", "2023-01-11 12:15:00+01:00", "2023-01-11 12:30:00+01:00", "2023-01-11 12:45:00+01:00", "2023-01-11 13:00:00+01:00", "2023-01-11 13:15:00+01:00", "2023-01-11 13:30:00+01:00", "2023-01-11 13:45:00+01:00", "2023-01-11 14:00:00+01:00", "2023-01-11 14:15:00+01:00", "2023-01-11 14:30:00+01:00", "2023-01-11 14:45:00+01:00", "2023-01-11 15:00:00+01:00", "2023-01-11 15:15:00+01:00", "2023-01-11 15:30:00+01:00", "2023-01-11 15:45:00+01:00", "2023-01-11 16:00:00+01:00", "2023-01-11 16:15:00+01:00", "2023-01-11 16:30:00+01:00", "2023-01-11 16:45:00+01:00", "2023-01-11 17:00:00+01:00", "2023-01-11 17:15:00+01:00", "2023-01-11 17:30:00+01:00", "2023-01-11 17:45:00+01:00", "2023-01-11 18:00:00+01:00", "2023-01-11 18:15:00+01:00", "2023-01-11 18:30:00+01:00", "2023-01-11 18:45:00+01:00", "2023-01-11 19:00:00+01:00", "2023-01-11 19:15:00+01:00", "2023-01-11 19:30:00+01:00", "2023-01-11 19:45:00+01:00", "2023-01-11 20:00:00+01:00", "2023-01-11 20:15:00+01:00", "2023-01-11 20:30:00+01:00", "2023-01-11 20:45:00+01:00", "2023-01-11 21:00:00+01:00", "2023-01-11 21:15:00+01:00", "2023-01-11 21:30:00+01:00", "2023-01-11 21:45:00+01:00", "2023-01-11 22:00:00+01:00", "2023-01-11 22:15:00+01:00", "2023-01-11 22:30:00+01:00", "2023-01-11 22:45:00+01:00", "2023-01-11 23:00:00+01:00", "2023-01-11 23:15:00+01:00", "2023-01-11 23:30:00+01:00", "2023-01-11 23:45:00+01:00", "2023-01-12 00:00:00+01:00", "2023-01-12 00:15:00+01:00", "2023-01-12 00:30:00+01:00", "2023-01-12 00:45:00+01:00", "2023-01-12 01:00:00+01:00", "2023-01-12 01:15:00+01:00", "2023-01-12 01:30:00+01:00", "2023-01-12 01:45:00+01:00", "2023-01-12 02:00:00+01:00", "2023-01-12 02:15:00+01:00", "2023-01-12 02:30:00+01:00", "2023-01-12 02:45:00+01:00", "2023-01-12 03:00:00+01:00", "2023-01-12 03:15:00+01:00", "2023-01-12 03:30:00+01:00", "2023-01-12 03:45:00+01:00", "2023-01-12 04:00:00+01:00", "2023-01-12 04:15:00+01:00", "2023-01-12 04:30:00+01:00", "2023-01-12 04:45:00+01:00", "2023-01-12 05:00:00+01:00", "2023-01-12 05:15:00+01:00", "2023-01-12 05:30:00+01:00", "2023-01-12 05:45:00+01:00", "2023-01-12 06:00:00+01:00", "2023-01-12 06:15:00+01:00", "2023-01-12 06:30:00+01:00", "2023-01-12 06:45:00+01:00", "2023-01-12 07:00:00+01:00", "2023-01-12 07:15:00+01:00", "2023-01-12 07:30:00+01:00", "2023-01-12 07:45:00+01:00", "2023-01-12 08:00:00+01:00", "2023-01-12 08:15:00+01:00", "2023-01-12 08:30:00+01:00", "2023-01-12 08:45:00+01:00", "2023-01-12 09:00:00+01:00", "2023-01-12 09:15:00+01:00", "2023-01-12 09:30:00+01:00", "2023-01-12 09:45:00+01:00", "2023-01-12 10:00:00+01:00", "2023-01-12 10:15:00+01:00", "2023-01-12 10:30:00+01:00", "2023-01-12 10:45:00+01:00", "2023-01-12 11:00:00+01:00", "2023-01-12 11:15:00+01:00", "2023-01-12 11:30:00+01:00", "2023-01-12 11:45:00+01:00", "2023-01-12 12:00:00+01:00", "2023-01-12 12:15:00+01:00", "2023-01-12 12:30:00+01:00", "2023-01-12 12:45:00+01:00", "2023-01-12 13:00:00+01:00", "2023-01-12 13:15:00+01:00", "2023-01-12 13:30:00+01:00", "2023-01-12 13:45:00+01:00", "2023-01-12 14:00:00+01:00", "2023-01-12 14:15:00+01:00", "2023-01-12 14:30:00+01:00", "2023-01-12 14:45:00+01:00", "2023-01-12 15:00:00+01:00", "2023-01-12 15:15:00+01:00", "2023-01-12 15:30:00+01:00", "2023-01-12 15:45:00+01:00", "2023-01-12 16:00:00+01:00", "2023-01-12 16:15:00+01:00", "2023-01-12 16:30:00+01:00", "2023-01-12 16:45:00+01:00", "2023-01-12 17:00:00+01:00", "2023-01-12 17:15:00+01:00", "2023-01-12 17:30:00+01:00", "2023-01-12 17:45:00+01:00", "2023-01-12 18:00:00+01:00", "2023-01-12 18:15:00+01:00", "2023-01-12 18:30:00+01:00", "2023-01-12 18:45:00+01:00", "2023-01-12 19:00:00+01:00", "2023-01-12 19:15:00+01:00", "2023-01-12 19:30:00+01:00", "2023-01-12 19:45:00+01:00", "2023-01-12 20:00:00+01:00", "2023-01-12 20:15:00+01:00", "2023-01-12 20:30:00+01:00", "2023-01-12 20:45:00+01:00", "2023-01-12 21:00:00+01:00", "2023-01-12 21:15:00+01:00", "2023-01-12 21:30:00+01:00", "2023-01-12 21:45:00+01:00", "2023-01-12 22:00:00+01:00", "2023-01-12 22:15:00+01:00", "2023-01-12 22:30:00+01:00", "2023-01-12 22:45:00+01:00", "2023-01-12 23:00:00+01:00", "2023-01-12 23:15:00+01:00", "2023-01-12 23:30:00+01:00", "2023-01-12 23:45:00+01:00", "2023-01-13 00:00:00+01:00", "2023-01-13 00:15:00+01:00", "2023-01-13 00:30:00+01:00", "2023-01-13 00:45:00+01:00", "2023-01-13 01:00:00+01:00", "2023-01-13 01:15:00+01:00", "2023-01-13 01:30:00+01:00", "2023-01-13 01:45:00+01:00", "2023-01-13 02:00:00+01:00", "2023-01-13 02:15:00+01:00", "2023-01-13 02:30:00+01:00", "2023-01-13 02:45:00+01:00", "2023-01-13 03:00:00+01:00", "2023-01-13 03:15:00+01:00", "2023-01-13 03:30:00+01:00", "2023-01-13 03:45:00+01:00", "2023-01-13 04:00:00+01:00", "2023-01-13 04:15:00+01:00", "2023-01-13 04:30:00+01:00", "2023-01-13 04:45:00+01:00", "2023-01-13 05:00:00+01:00", "2023-01-13 05:15:00+01:00", "2023-01-13 05:30:00+01:00", "2023-01-13 05:45:00+01:00", "2023-01-13 06:00:00+01:00", "2023-01-13 06:15:00+01:00", "2023-01-13 06:30:00+01:00", "2023-01-13 06:45:00+01:00", "2023-01-13 07:00:00+01:00", "2023-01-13 07:15:00+01:00", "2023-01-13 07:30:00+01:00", "2023-01-13 07:45:00+01:00", "2023-01-13 08:00:00+01:00", "2023-01-13 08:15:00+01:00", "2023-01-13 08:30:00+01:00", "2023-01-13 08:45:00+01:00", "2023-01-13 09:00:00+01:00", "2023-01-13 09:15:00+01:00", "2023-01-13 09:30:00+01:00", "2023-01-13 09:45:00+01:00", "2023-01-13 10:00:00+01:00", "2023-01-13 10:15:00+01:00", "2023-01-13 10:30:00+01:00", "2023-01-13 10:45:00+01:00", "2023-01-13 11:00:00+01:00", "2023-01-13 11:15:00+01:00", "2023-01-13 11:30:00+01:00", "2023-01-13 11:45:00+01:00", "2023-01-13 12:00:00+01:00", "2023-01-13 12:15:00+01:00", "2023-01-13 12:30:00+01:00", "2023-01-13 12:45:00+01:00", "2023-01-13 13:00:00+01:00", "2023-01-13 13:15:00+01:00", "2023-01-13 13:30:00+01:00", "2023-01-13 13:45:00+01:00", "2023-01-13 14:00:00+01:00", "2023-01-13 14:15:00+01:00", "2023-01-13 14:30:00+01:00", "2023-01-13 14:45:00+01:00", "2023-01-13 15:00:00+01:00", "2023-01-13 15:15:00+01:00", "2023-01-13 15:30:00+01:00", "2023-01-13 15:45:00+01:00", "2023-01-13 16:00:00+01:00", "2023-01-13 16:15:00+01:00", "2023-01-13 16:30:00+01:00", "2023-01-13 16:45:00+01:00", "2023-01-13 17:00:00+01:00", "2023-01-13 17:15:00+01:00", "2023-01-13 17:30:00+01:00", "2023-01-13 17:45:00+01:00", "2023-01-13 18:00:00+01:00", "2023-01-13 18:15:00+01:00", "2023-01-13 18:30:00+01:00", "2023-01-13 18:45:00+01:00", "2023-01-13 19:00:00+01:00", "2023-01-13 19:15:00+01:00", "2023-01-13 19:30:00+01:00", "2023-01-13 19:45:00+01:00", "2023-01-13 20:00:00+01:00", "2023-01-13 20:15:00+01:00", "2023-01-13 20:30:00+01:00", "2023-01-13 20:45:00+01:00", "2023-01-13 21:00:00+01:00", "2023-01-13 21:15:00+01:00", "2023-01-13 21:30:00+01:00", "2023-01-13 21:45:00+01:00", "2023-01-13 22:00:00+01:00", "2023-01-13 22:15:00+01:00", "2023-01-13 22:30:00+01:00", "2023-01-13 22:45:00+01:00", "2023-01-13 23:00:00+01:00", "2023-01-13 23:15:00+01:00", "2023-01-13 23:30:00+01:00", "2023-01-13 23:45:00+01:00", "2023-01-14 00:00:00+01:00", "2023-01-14 00:15:00+01:00", "2023-01-14 00:30:00+01:00", "2023-01-14 00:45:00+01:00", "2023-01-14 01:00:00+01:00", "2023-01-14 01:15:00+01:00", "2023-01-14 01:30:00+01:00", "2023-01-14 01:45:00+01:00", "2023-01-14 02:00:00+01:00", "2023-01-14 02:15:00+01:00", "2023-01-14 02:30:00+01:00", "2023-01-14 02:45:00+01:00", "2023-01-14 03:00:00+01:00", "2023-01-14 03:15:00+01:00", "2023-01-14 03:30:00+01:00", "2023-01-14 03:45:00+01:00", "2023-01-14 04:00:00+01:00", "2023-01-14 04:15:00+01:00", "2023-01-14 04:30:00+01:00", "2023-01-14 04:45:00+01:00", "2023-01-14 05:00:00+01:00", "2023-01-14 05:15:00+01:00", "2023-01-14 05:30:00+01:00", "2023-01-14 05:45:00+01:00", "2023-01-14 06:00:00+01:00", "2023-01-14 06:15:00+01:00", "2023-01-14 06:30:00+01:00", "2023-01-14 06:45:00+01:00", "2023-01-14 07:00:00+01:00", "2023-01-14 07:15:00+01:00", "2023-01-14 07:30:00+01:00", "2023-01-14 07:45:00+01:00", "2023-01-14 08:00:00+01:00", "2023-01-14 08:15:00+01:00", "2023-01-14 08:30:00+01:00", "2023-01-14 08:45:00+01:00", "2023-01-14 09:00:00+01:00", "2023-01-14 09:15:00+01:00", "2023-01-14 09:30:00+01:00", "2023-01-14 09:45:00+01:00", "2023-01-14 10:00:00+01:00", "2023-01-14 10:15:00+01:00", "2023-01-14 10:30:00+01:00", "2023-01-14 10:45:00+01:00", "2023-01-14 11:00:00+01:00", "2023-01-14 11:15:00+01:00", "2023-01-14 11:30:00+01:00", "2023-01-14 11:45:00+01:00", "2023-01-14 12:00:00+01:00", "2023-01-14 12:15:00+01:00", "2023-01-14 12:30:00+01:00", "2023-01-14 12:45:00+01:00", "2023-01-14 13:00:00+01:00", "2023-01-14 13:15:00+01:00", "2023-01-14 13:30:00+01:00", "2023-01-14 13:45:00+01:00", "2023-01-14 14:00:00+01:00", "2023-01-14 14:15:00+01:00", "2023-01-14 14:30:00+01:00", "2023-01-14 14:45:00+01:00", "2023-01-14 15:00:00+01:00", "2023-01-14 15:15:00+01:00", "2023-01-14 15:30:00+01:00", "2023-01-14 15:45:00+01:00", "2023-01-14 16:00:00+01:00", "2023-01-14 16:15:00+01:00", "2023-01-14 16:30:00+01:00", "2023-01-14 16:45:00+01:00", "2023-01-14 17:00:00+01:00", "2023-01-14 17:15:00+01:00", "2023-01-14 17:30:00+01:00", "2023-01-14 17:45:00+01:00", "2023-01-14 18:00:00+01:00", "2023-01-14 18:15:00+01:00", "2023-01-14 18:30:00+01:00", "2023-01-14 18:45:00+01:00", "2023-01-14 19:00:00+01:00", "2023-01-14 19:15:00+01:00", "2023-01-14 19:30:00+01:00", "2023-01-14 19:45:00+01:00", "2023-01-14 20:00:00+01:00", "2023-01-14 20:15:00+01:00", "2023-01-14 20:30:00+01:00", "2023-01-14 20:45:00+01:00", "2023-01-14 21:00:00+01:00", "2023-01-14 21:15:00+01:00", "2023-01-14 21:30:00+01:00", "2023-01-14 21:45:00+01:00", "2023-01-14 22:00:00+01:00", "2023-01-14 22:15:00+01:00", "2023-01-14 22:30:00+01:00", "2023-01-14 22:45:00+01:00", "2023-01-14 23:00:00+01:00", "2023-01-14 23:15:00+01:00", "2023-01-14 23:30:00+01:00", "2023-01-14 23:45:00+01:00", "2023-01-15 00:00:00+01:00", "2023-01-15 00:15:00+01:00", "2023-01-15 00:30:00+01:00", "2023-01-15 00:45:00+01:00", "2023-01-15 01:00:00+01:00", "2023-01-15 01:15:00+01:00", "2023-01-15 01:30:00+01:00", "2023-01-15 01:45:00+01:00", "2023-01-15 02:00:00+01:00", "2023-01-15 02:15:00+01:00", "2023-01-15 02:30:00+01:00", "2023-01-15 02:45:00+01:00", "2023-01-15 03:00:00+01:00", "2023-01-15 03:15:00+01:00", "2023-01-15 03:30:00+01:00", "2023-01-15 03:45:00+01:00", "2023-01-15 04:00:00+01:00", "2023-01-15 04:15:00+01:00", "2023-01-15 04:30:00+01:00", "2023-01-15 04:45:00+01:00", "2023-01-15 05:00:00+01:00", "2023-01-15 05:15:00+01:00", "2023-01-15 05:30:00+01:00", "2023-01-15 05:45:00+01:00", "2023-01-15 06:00:00+01:00", "2023-01-15 06:15:00+01:00", "2023-01-15 06:30:00+01:00", "2023-01-15 06:45:00+01:00", "2023-01-15 07:00:00+01:00", "2023-01-15 07:15:00+01:00", "2023-01-15 07:30:00+01:00", "2023-01-15 07:45:00+01:00", "2023-01-15 08:00:00+01:00", "2023-01-15 08:15:00+01:00", "2023-01-15 08:30:00+01:00", "2023-01-15 08:45:00+01:00", "2023-01-15 09:00:00+01:00", "2023-01-15 09:15:00+01:00", "2023-01-15 09:30:00+01:00", "2023-01-15 09:45:00+01:00", "2023-01-15 10:00:00+01:00", "2023-01-15 10:15:00+01:00", "2023-01-15 10:30:00+01:00", "2023-01-15 10:45:00+01:00", "2023-01-15 11:00:00+01:00", "2023-01-15 11:15:00+01:00", "2023-01-15 11:30:00+01:00", "2023-01-15 11:45:00+01:00", "2023-01-15 12:00:00+01:00", "2023-01-15 12:15:00+01:00", "2023-01-15 12:30:00+01:00", "2023-01-15 12:45:00+01:00", "2023-01-15 13:00:00+01:00", "2023-01-15 13:15:00+01:00", "2023-01-15 13:30:00+01:00", "2023-01-15 13:45:00+01:00", "2023-01-15 14:00:00+01:00", "2023-01-15 14:15:00+01:00", "2023-01-15 14:30:00+01:00", "2023-01-15 14:45:00+01:00", "2023-01-15 15:00:00+01:00", "2023-01-15 15:15:00+01:00", "2023-01-15 15:30:00+01:00", "2023-01-15 15:45:00+01:00", "2023-01-15 16:00:00+01:00", "2023-01-15 16:15:00+01:00", "2023-01-15 16:30:00+01:00", "2023-01-15 16:45:00+01:00", "2023-01-15 17:00:00+01:00", "2023-01-15 17:15:00+01:00", "2023-01-15 17:30:00+01:00", "2023-01-15 17:45:00+01:00", "2023-01-15 18:00:00+01:00", "2023-01-15 18:15:00+01:00", "2023-01-15 18:30:00+01:00", "2023-01-15 18:45:00+01:00", "2023-01-15 19:00:00+01:00", "2023-01-15 19:15:00+01:00", "2023-01-15 19:30:00+01:00", "2023-01-15 19:45:00+01:00", "2023-01-15 20:00:00+01:00", "2023-01-15 20:15:00+01:00", "2023-01-15 20:30:00+01:00", "2023-01-15 20:45:00+01:00", "2023-01-15 21:00:00+01:00", "2023-01-15 21:15:00+01:00", "2023-01-15 21:30:00+01:00", "2023-01-15 21:45:00+01:00", "2023-01-15 22:00:00+01:00", "2023-01-15 22:15:00+01:00", "2023-01-15 22:30:00+01:00", "2023-01-15 22:45:00+01:00", "2023-01-15 23:00:00+01:00", "2023-01-15 23:15:00+01:00", "2023-01-15 23:30:00+01:00", "2023-01-15 23:45:00+01:00", "2023-01-16 00:00:00+01:00", "2023-01-16 00:15:00+01:00", "2023-01-16 00:30:00+01:00", "2023-01-16 00:45:00+01:00", "2023-01-16 01:00:00+01:00", "2023-01-16 01:15:00+01:00", "2023-01-16 01:30:00+01:00", "2023-01-16 01:45:00+01:00", "2023-01-16 02:00:00+01:00", "2023-01-16 02:15:00+01:00", "2023-01-16 02:30:00+01:00", "2023-01-16 02:45:00+01:00", "2023-01-16 03:00:00+01:00", "2023-01-16 03:15:00+01:00", "2023-01-16 03:30:00+01:00", "2023-01-16 03:45:00+01:00", "2023-01-16 04:00:00+01:00", "2023-01-16 04:15:00+01:00", "2023-01-16 04:30:00+01:00", "2023-01-16 04:45:00+01:00", "2023-01-16 05:00:00+01:00", "2023-01-16 05:15:00+01:00", "2023-01-16 05:30:00+01:00", "2023-01-16 05:45:00+01:00", "2023-01-16 06:00:00+01:00", "2023-01-16 06:15:00+01:00", "2023-01-16 06:30:00+01:00", "2023-01-16 06:45:00+01:00", "2023-01-16 07:00:00+01:00", "2023-01-16 07:15:00+01:00", "2023-01-16 07:30:00+01:00", "2023-01-16 07:45:00+01:00", "2023-01-16 08:00:00+01:00", "2023-01-16 08:15:00+01:00", "2023-01-16 08:30:00+01:00", "2023-01-16 08:45:00+01:00", "2023-01-16 09:00:00+01:00", "2023-01-16 09:15:00+01:00", "2023-01-16 09:30:00+01:00", "2023-01-16 09:45:00+01:00", "2023-01-16 10:00:00+01:00", "2023-01-16 10:15:00+01:00", "2023-01-16 10:30:00+01:00", "2023-01-16 10:45:00+01:00", "2023-01-16 11:00:00+01:00", "2023-01-16 11:15:00+01:00", "2023-01-16 11:30:00+01:00", "2023-01-16 11:45:00+01:00", "2023-01-16 12:00:00+01:00", "2023-01-16 12:15:00+01:00", "2023-01-16 12:30:00+01:00", "2023-01-16 12:45:00+01:00", "2023-01-16 13:00:00+01:00", "2023-01-16 13:15:00+01:00", "2023-01-16 13:30:00+01:00", "2023-01-16 13:45:00+01:00", "2023-01-16 14:00:00+01:00", "2023-01-16 14:15:00+01:00", "2023-01-16 14:30:00+01:00", "2023-01-16 14:45:00+01:00", "2023-01-16 15:00:00+01:00", "2023-01-16 15:15:00+01:00", "2023-01-16 15:30:00+01:00", "2023-01-16 15:45:00+01:00", "2023-01-16 16:00:00+01:00", "2023-01-16 16:15:00+01:00", "2023-01-16 16:30:00+01:00", "2023-01-16 16:45:00+01:00", "2023-01-16 17:00:00+01:00", "2023-01-16 17:15:00+01:00", "2023-01-16 17:30:00+01:00", "2023-01-16 17:45:00+01:00", "2023-01-16 18:00:00+01:00", "2023-01-16 18:15:00+01:00", "2023-01-16 18:30:00+01:00", "2023-01-16 18:45:00+01:00", "2023-01-16 19:00:00+01:00", "2023-01-16 19:15:00+01:00", "2023-01-16 19:30:00+01:00", "2023-01-16 19:45:00+01:00", "2023-01-16 20:00:00+01:00", "2023-01-16 20:15:00+01:00", "2023-01-16 20:30:00+01:00", "2023-01-16 20:45:00+01:00", "2023-01-16 21:00:00+01:00", "2023-01-16 21:15:00+01:00", "2023-01-16 21:30:00+01:00", "2023-01-16 21:45:00+01:00", "2023-01-16 22:00:00+01:00", "2023-01-16 22:15:00+01:00", "2023-01-16 22:30:00+01:00", "2023-01-16 22:45:00+01:00", "2023-01-16 23:00:00+01:00", "2023-01-16 23:15:00+01:00", "2023-01-16 23:30:00+01:00", "2023-01-16 23:45:00+01:00", "2023-01-17 00:00:00+01:00", "2023-01-17 00:15:00+01:00", "2023-01-17 00:30:00+01:00", "2023-01-17 00:45:00+01:00", "2023-01-17 01:00:00+01:00", "2023-01-17 01:15:00+01:00", "2023-01-17 01:30:00+01:00", "2023-01-17 01:45:00+01:00", "2023-01-17 02:00:00+01:00", "2023-01-17 02:15:00+01:00", "2023-01-17 02:30:00+01:00", "2023-01-17 02:45:00+01:00", "2023-01-17 03:00:00+01:00", "2023-01-17 03:15:00+01:00", "2023-01-17 03:30:00+01:00", "2023-01-17 03:45:00+01:00", "2023-01-17 04:00:00+01:00", "2023-01-17 04:15:00+01:00", "2023-01-17 04:30:00+01:00", "2023-01-17 04:45:00+01:00", "2023-01-17 05:00:00+01:00", "2023-01-17 05:15:00+01:00", "2023-01-17 05:30:00+01:00", "2023-01-17 05:45:00+01:00", "2023-01-17 06:00:00+01:00", "2023-01-17 06:15:00+01:00", "2023-01-17 06:30:00+01:00", "2023-01-17 06:45:00+01:00", "2023-01-17 07:00:00+01:00", "2023-01-17 07:15:00+01:00", "2023-01-17 07:30:00+01:00", "2023-01-17 07:45:00+01:00", "2023-01-17 08:00:00+01:00", "2023-01-17 08:15:00+01:00", "2023-01-17 08:30:00+01:00", "2023-01-17 08:45:00+01:00", "2023-01-17 09:00:00+01:00", "2023-01-17 09:15:00+01:00", "2023-01-17 09:30:00+01:00", "2023-01-17 09:45:00+01:00", "2023-01-17 10:00:00+01:00", "2023-01-17 10:15:00+01:00", "2023-01-17 10:30:00+01:00", "2023-01-17 10:45:00+01:00", "2023-01-17 11:00:00+01:00", "2023-01-17 11:15:00+01:00", "2023-01-17 11:30:00+01:00", "2023-01-17 11:45:00+01:00", "2023-01-17 12:00:00+01:00", "2023-01-17 12:15:00+01:00", "2023-01-17 12:30:00+01:00", "2023-01-17 12:45:00+01:00", "2023-01-17 13:00:00+01:00", "2023-01-17 13:15:00+01:00", "2023-01-17 13:30:00+01:00", "2023-01-17 13:45:00+01:00", "2023-01-17 14:00:00+01:00", "2023-01-17 14:15:00+01:00", "2023-01-17 14:30:00+01:00", "2023-01-17 14:45:00+01:00", "2023-01-17 15:00:00+01:00", "2023-01-17 15:15:00+01:00", "2023-01-17 15:30:00+01:00", "2023-01-17 15:45:00+01:00", "2023-01-17 16:00:00+01:00", "2023-01-17 16:15:00+01:00", "2023-01-17 16:30:00+01:00", "2023-01-17 16:45:00+01:00", "2023-01-17 17:00:00+01:00", "2023-01-17 17:15:00+01:00", "2023-01-17 17:30:00+01:00", "2023-01-17 17:45:00+01:00", "2023-01-17 18:00:00+01:00", "2023-01-17 18:15:00+01:00", "2023-01-17 18:30:00+01:00", "2023-01-17 18:45:00+01:00", "2023-01-17 19:00:00+01:00", "2023-01-17 19:15:00+01:00", "2023-01-17 19:30:00+01:00", "2023-01-17 19:45:00+01:00", "2023-01-17 20:00:00+01:00", "2023-01-17 20:15:00+01:00", "2023-01-17 20:30:00+01:00", "2023-01-17 20:45:00+01:00", "2023-01-17 21:00:00+01:00", "2023-01-17 21:15:00+01:00", "2023-01-17 21:30:00+01:00", "2023-01-17 21:45:00+01:00", "2023-01-17 22:00:00+01:00", "2023-01-17 22:15:00+01:00", "2023-01-17 22:30:00+01:00", "2023-01-17 22:45:00+01:00", "2023-01-17 23:00:00+01:00", "2023-01-17 23:15:00+01:00", "2023-01-17 23:30:00+01:00", "2023-01-17 23:45:00+01:00", "2023-01-18 00:00:00+01:00", "2023-01-18 00:15:00+01:00", "2023-01-18 00:30:00+01:00", "2023-01-18 00:45:00+01:00", "2023-01-18 01:00:00+01:00", "2023-01-18 01:15:00+01:00", "2023-01-18 01:30:00+01:00", "2023-01-18 01:45:00+01:00", "2023-01-18 02:00:00+01:00", "2023-01-18 02:15:00+01:00", "2023-01-18 02:30:00+01:00", "2023-01-18 02:45:00+01:00", "2023-01-18 03:00:00+01:00", "2023-01-18 03:15:00+01:00", "2023-01-18 03:30:00+01:00", "2023-01-18 03:45:00+01:00", "2023-01-18 04:00:00+01:00", "2023-01-18 04:15:00+01:00", "2023-01-18 04:30:00+01:00", "2023-01-18 04:45:00+01:00", "2023-01-18 05:00:00+01:00", "2023-01-18 05:15:00+01:00", "2023-01-18 05:30:00+01:00", "2023-01-18 05:45:00+01:00", "2023-01-18 06:00:00+01:00", "2023-01-18 06:15:00+01:00", "2023-01-18 06:30:00+01:00", "2023-01-18 06:45:00+01:00", "2023-01-18 07:00:00+01:00", "2023-01-18 07:15:00+01:00", "2023-01-18 07:30:00+01:00", "2023-01-18 07:45:00+01:00", "2023-01-18 08:00:00+01:00", "2023-01-18 08:15:00+01:00", "2023-01-18 08:30:00+01:00", "2023-01-18 08:45:00+01:00", "2023-01-18 09:00:00+01:00", "2023-01-18 09:15:00+01:00", "2023-01-18 09:30:00+01:00", "2023-01-18 09:45:00+01:00", "2023-01-18 10:00:00+01:00", "2023-01-18 10:15:00+01:00", "2023-01-18 10:30:00+01:00", "2023-01-18 10:45:00+01:00", "2023-01-18 11:00:00+01:00", "2023-01-18 11:15:00+01:00", "2023-01-18 11:30:00+01:00", "2023-01-18 11:45:00+01:00", "2023-01-18 12:00:00+01:00", "2023-01-18 12:15:00+01:00", "2023-01-18 12:30:00+01:00", "2023-01-18 12:45:00+01:00", "2023-01-18 13:00:00+01:00", "2023-01-18 13:15:00+01:00", "2023-01-18 13:30:00+01:00", "2023-01-18 13:45:00+01:00", "2023-01-18 14:00:00+01:00", "2023-01-18 14:15:00+01:00", "2023-01-18 14:30:00+01:00", "2023-01-18 14:45:00+01:00", "2023-01-18 15:00:00+01:00", "2023-01-18 15:15:00+01:00", "2023-01-18 15:30:00+01:00", "2023-01-18 15:45:00+01:00", "2023-01-18 16:00:00+01:00", "2023-01-18 16:15:00+01:00", "2023-01-18 16:30:00+01:00", "2023-01-18 16:45:00+01:00", "2023-01-18 17:00:00+01:00", "2023-01-18 17:15:00+01:00", "2023-01-18 17:30:00+01:00", "2023-01-18 17:45:00+01:00", "2023-01-18 18:00:00+01:00", "2023-01-18 18:15:00+01:00", "2023-01-18 18:30:00+01:00", "2023-01-18 18:45:00+01:00", "2023-01-18 19:00:00+01:00", "2023-01-18 19:15:00+01:00", "2023-01-18 19:30:00+01:00", "2023-01-18 19:45:00+01:00", "2023-01-18 20:00:00+01:00", "2023-01-18 20:15:00+01:00", "2023-01-18 20:30:00+01:00", "2023-01-18 20:45:00+01:00", "2023-01-18 21:00:00+01:00", "2023-01-18 21:15:00+01:00", "2023-01-18 21:30:00+01:00", "2023-01-18 21:45:00+01:00", "2023-01-18 22:00:00+01:00", "2023-01-18 22:15:00+01:00", "2023-01-18 22:30:00+01:00", "2023-01-18 22:45:00+01:00", "2023-01-18 23:00:00+01:00", "2023-01-18 23:15:00+01:00", "2023-01-18 23:30:00+01:00", "2023-01-18 23:45:00+01:00", "2023-01-19 00:00:00+01:00", "2023-01-19 00:15:00+01:00", "2023-01-19 00:30:00+01:00", "2023-01-19 00:45:00+01:00", "2023-01-19 01:00:00+01:00", "2023-01-19 01:15:00+01:00", "2023-01-19 01:30:00+01:00", "2023-01-19 01:45:00+01:00", "2023-01-19 02:00:00+01:00", "2023-01-19 02:15:00+01:00", "2023-01-19 02:30:00+01:00", "2023-01-19 02:45:00+01:00", "2023-01-19 03:00:00+01:00", "2023-01-19 03:15:00+01:00", "2023-01-19 03:30:00+01:00", "2023-01-19 03:45:00+01:00", "2023-01-19 04:00:00+01:00", "2023-01-19 04:15:00+01:00", "2023-01-19 04:30:00+01:00", "2023-01-19 04:45:00+01:00", "2023-01-19 05:00:00+01:00", "2023-01-19 05:15:00+01:00", "2023-01-19 05:30:00+01:00", "2023-01-19 05:45:00+01:00", "2023-01-19 06:00:00+01:00", "2023-01-19 06:15:00+01:00", "2023-01-19 06:30:00+01:00", "2023-01-19 06:45:00+01:00", "2023-01-19 07:00:00+01:00", "2023-01-19 07:15:00+01:00", "2023-01-19 07:30:00+01:00", "2023-01-19 07:45:00+01:00", "2023-01-19 08:00:00+01:00", "2023-01-19 08:15:00+01:00", "2023-01-19 08:30:00+01:00", "2023-01-19 08:45:00+01:00", "2023-01-19 09:00:00+01:00", "2023-01-19 09:15:00+01:00", "2023-01-19 09:30:00+01:00", "2023-01-19 09:45:00+01:00", "2023-01-19 10:00:00+01:00", "2023-01-19 10:15:00+01:00", "2023-01-19 10:30:00+01:00", "2023-01-19 10:45:00+01:00", "2023-01-19 11:00:00+01:00", "2023-01-19 11:15:00+01:00", "2023-01-19 11:30:00+01:00", "2023-01-19 11:45:00+01:00", "2023-01-19 12:00:00+01:00", "2023-01-19 12:15:00+01:00", "2023-01-19 12:30:00+01:00", "2023-01-19 12:45:00+01:00", "2023-01-19 13:00:00+01:00", "2023-01-19 13:15:00+01:00", "2023-01-19 13:30:00+01:00", "2023-01-19 13:45:00+01:00", "2023-01-19 14:00:00+01:00", "2023-01-19 14:15:00+01:00", "2023-01-19 14:30:00+01:00", "2023-01-19 14:45:00+01:00", "2023-01-19 15:00:00+01:00", "2023-01-19 15:15:00+01:00", "2023-01-19 15:30:00+01:00", "2023-01-19 15:45:00+01:00", "2023-01-19 16:00:00+01:00", "2023-01-19 16:15:00+01:00", "2023-01-19 16:30:00+01:00", "2023-01-19 16:45:00+01:00", "2023-01-19 17:00:00+01:00", "2023-01-19 17:15:00+01:00", "2023-01-19 17:30:00+01:00", "2023-01-19 17:45:00+01:00", "2023-01-19 18:00:00+01:00", "2023-01-19 18:15:00+01:00", "2023-01-19 18:30:00+01:00", "2023-01-19 18:45:00+01:00", "2023-01-19 19:00:00+01:00", "2023-01-19 19:15:00+01:00", "2023-01-19 19:30:00+01:00", "2023-01-19 19:45:00+01:00", "2023-01-19 20:00:00+01:00", "2023-01-19 20:15:00+01:00", "2023-01-19 20:30:00+01:00", "2023-01-19 20:45:00+01:00", "2023-01-19 21:00:00+01:00", "2023-01-19 21:15:00+01:00", "2023-01-19 21:30:00+01:00", "2023-01-19 21:45:00+01:00", "2023-01-19 22:00:00+01:00", "2023-01-19 22:15:00+01:00", "2023-01-19 22:30:00+01:00", "2023-01-19 22:45:00+01:00", "2023-01-19 23:00:00+01:00", "2023-01-19 23:15:00+01:00", "2023-01-19 23:30:00+01:00", "2023-01-19 23:45:00+01:00", "2023-01-20 00:00:00+01:00", "2023-01-20 00:15:00+01:00", "2023-01-20 00:30:00+01:00", "2023-01-20 00:45:00+01:00", "2023-01-20 01:00:00+01:00", "2023-01-20 01:15:00+01:00", "2023-01-20 01:30:00+01:00", "2023-01-20 01:45:00+01:00", "2023-01-20 02:00:00+01:00", "2023-01-20 02:15:00+01:00", "2023-01-20 02:30:00+01:00", "2023-01-20 02:45:00+01:00", "2023-01-20 03:00:00+01:00", "2023-01-20 03:15:00+01:00", "2023-01-20 03:30:00+01:00", "2023-01-20 03:45:00+01:00", "2023-01-20 04:00:00+01:00", "2023-01-20 04:15:00+01:00", "2023-01-20 04:30:00+01:00", "2023-01-20 04:45:00+01:00", "2023-01-20 05:00:00+01:00", "2023-01-20 05:15:00+01:00", "2023-01-20 05:30:00+01:00", "2023-01-20 05:45:00+01:00", "2023-01-20 06:00:00+01:00", "2023-01-20 06:15:00+01:00", "2023-01-20 06:30:00+01:00", "2023-01-20 06:45:00+01:00", "2023-01-20 07:00:00+01:00", "2023-01-20 07:15:00+01:00", "2023-01-20 07:30:00+01:00", "2023-01-20 07:45:00+01:00", "2023-01-20 08:00:00+01:00", "2023-01-20 08:15:00+01:00", "2023-01-20 08:30:00+01:00", "2023-01-20 08:45:00+01:00", "2023-01-20 09:00:00+01:00", "2023-01-20 09:15:00+01:00", "2023-01-20 09:30:00+01:00", "2023-01-20 09:45:00+01:00", "2023-01-20 10:00:00+01:00", "2023-01-20 10:15:00+01:00", "2023-01-20 10:30:00+01:00", "2023-01-20 10:45:00+01:00", "2023-01-20 11:00:00+01:00", "2023-01-20 11:15:00+01:00", "2023-01-20 11:30:00+01:00", "2023-01-20 11:45:00+01:00", "2023-01-20 12:00:00+01:00", "2023-01-20 12:15:00+01:00", "2023-01-20 12:30:00+01:00", "2023-01-20 12:45:00+01:00", "2023-01-20 13:00:00+01:00", "2023-01-20 13:15:00+01:00", "2023-01-20 13:30:00+01:00", "2023-01-20 13:45:00+01:00", "2023-01-20 14:00:00+01:00", "2023-01-20 14:15:00+01:00", "2023-01-20 14:30:00+01:00", "2023-01-20 14:45:00+01:00", "2023-01-20 15:00:00+01:00", "2023-01-20 15:15:00+01:00", "2023-01-20 15:30:00+01:00", "2023-01-20 15:45:00+01:00", "2023-01-20 16:00:00+01:00", "2023-01-20 16:15:00+01:00", "2023-01-20 16:30:00+01:00", "2023-01-20 16:45:00+01:00", "2023-01-20 17:00:00+01:00", "2023-01-20 17:15:00+01:00", "2023-01-20 17:30:00+01:00", "2023-01-20 17:45:00+01:00", "2023-01-20 18:00:00+01:00", "2023-01-20 18:15:00+01:00", "2023-01-20 18:30:00+01:00", "2023-01-20 18:45:00+01:00", "2023-01-20 19:00:00+01:00", "2023-01-20 19:15:00+01:00", "2023-01-20 19:30:00+01:00", "2023-01-20 19:45:00+01:00", "2023-01-20 20:00:00+01:00", "2023-01-20 20:15:00+01:00", "2023-01-20 20:30:00+01:00", "2023-01-20 20:45:00+01:00", "2023-01-20 21:00:00+01:00", "2023-01-20 21:15:00+01:00", "2023-01-20 21:30:00+01:00", "2023-01-20 21:45:00+01:00", "2023-01-20 22:00:00+01:00", "2023-01-20 22:15:00+01:00", "2023-01-20 22:30:00+01:00", "2023-01-20 22:45:00+01:00", "2023-01-20 23:00:00+01:00", "2023-01-20 23:15:00+01:00", "2023-01-20 23:30:00+01:00", "2023-01-20 23:45:00+01:00", "2023-01-21 00:00:00+01:00", "2023-01-21 00:15:00+01:00", "2023-01-21 00:30:00+01:00", "2023-01-21 00:45:00+01:00", "2023-01-21 01:00:00+01:00", "2023-01-21 01:15:00+01:00", "2023-01-21 01:30:00+01:00", "2023-01-21 01:45:00+01:00", "2023-01-21 02:00:00+01:00", "2023-01-21 02:15:00+01:00", "2023-01-21 02:30:00+01:00", "2023-01-21 02:45:00+01:00", "2023-01-21 03:00:00+01:00", "2023-01-21 03:15:00+01:00", "2023-01-21 03:30:00+01:00", "2023-01-21 03:45:00+01:00", "2023-01-21 04:00:00+01:00", "2023-01-21 04:15:00+01:00", "2023-01-21 04:30:00+01:00", "2023-01-21 04:45:00+01:00", "2023-01-21 05:00:00+01:00", "2023-01-21 05:15:00+01:00", "2023-01-21 05:30:00+01:00", "2023-01-21 05:45:00+01:00", "2023-01-21 06:00:00+01:00", "2023-01-21 06:15:00+01:00", "2023-01-21 06:30:00+01:00", "2023-01-21 06:45:00+01:00", "2023-01-21 07:00:00+01:00", "2023-01-21 07:15:00+01:00", "2023-01-21 07:30:00+01:00", "2023-01-21 07:45:00+01:00", "2023-01-21 08:00:00+01:00", "2023-01-21 08:15:00+01:00", "2023-01-21 08:30:00+01:00", "2023-01-21 08:45:00+01:00", "2023-01-21 09:00:00+01:00", "2023-01-21 09:15:00+01:00", "2023-01-21 09:30:00+01:00", "2023-01-21 09:45:00+01:00", "2023-01-21 10:00:00+01:00", "2023-01-21 10:15:00+01:00", "2023-01-21 10:30:00+01:00", "2023-01-21 10:45:00+01:00", "2023-01-21 11:00:00+01:00", "2023-01-21 11:15:00+01:00", "2023-01-21 11:30:00+01:00", "2023-01-21 11:45:00+01:00", "2023-01-21 12:00:00+01:00", "2023-01-21 12:15:00+01:00", "2023-01-21 12:30:00+01:00", "2023-01-21 12:45:00+01:00", "2023-01-21 13:00:00+01:00", "2023-01-21 13:15:00+01:00", "2023-01-21 13:30:00+01:00", "2023-01-21 13:45:00+01:00", "2023-01-21 14:00:00+01:00", "2023-01-21 14:15:00+01:00", "2023-01-21 14:30:00+01:00", "2023-01-21 14:45:00+01:00", "2023-01-21 15:00:00+01:00", "2023-01-21 15:15:00+01:00", "2023-01-21 15:30:00+01:00", "2023-01-21 15:45:00+01:00", "2023-01-21 16:00:00+01:00", "2023-01-21 16:15:00+01:00", "2023-01-21 16:30:00+01:00", "2023-01-21 16:45:00+01:00", "2023-01-21 17:00:00+01:00", "2023-01-21 17:15:00+01:00", "2023-01-21 17:30:00+01:00", "2023-01-21 17:45:00+01:00", "2023-01-21 18:00:00+01:00", "2023-01-21 18:15:00+01:00", "2023-01-21 18:30:00+01:00", "2023-01-21 18:45:00+01:00", "2023-01-21 19:00:00+01:00", "2023-01-21 19:15:00+01:00", "2023-01-21 19:30:00+01:00", "2023-01-21 19:45:00+01:00", "2023-01-21 20:00:00+01:00", "2023-01-21 20:15:00+01:00", "2023-01-21 20:30:00+01:00", "2023-01-21 20:45:00+01:00", "2023-01-21 21:00:00+01:00", "2023-01-21 21:15:00+01:00", "2023-01-21 21:30:00+01:00", "2023-01-21 21:45:00+01:00", "2023-01-21 22:00:00+01:00", "2023-01-21 22:15:00+01:00", "2023-01-21 22:30:00+01:00", "2023-01-21 22:45:00+01:00", "2023-01-21 23:00:00+01:00", "2023-01-21 23:15:00+01:00", "2023-01-21 23:30:00+01:00", "2023-01-21 23:45:00+01:00", "2023-01-22 00:00:00+01:00", "2023-01-22 00:15:00+01:00", "2023-01-22 00:30:00+01:00", "2023-01-22 00:45:00+01:00", "2023-01-22 01:00:00+01:00", "2023-01-22 01:15:00+01:00", "2023-01-22 01:30:00+01:00", "2023-01-22 01:45:00+01:00", "2023-01-22 02:00:00+01:00", "2023-01-22 02:15:00+01:00", "2023-01-22 02:30:00+01:00", "2023-01-22 02:45:00+01:00", "2023-01-22 03:00:00+01:00", "2023-01-22 03:15:00+01:00", "2023-01-22 03:30:00+01:00", "2023-01-22 03:45:00+01:00", "2023-01-22 04:00:00+01:00", "2023-01-22 04:15:00+01:00", "2023-01-22 04:30:00+01:00", "2023-01-22 04:45:00+01:00", "2023-01-22 05:00:00+01:00", "2023-01-22 05:15:00+01:00", "2023-01-22 05:30:00+01:00", "2023-01-22 05:45:00+01:00", "2023-01-22 06:00:00+01:00", "2023-01-22 06:15:00+01:00", "2023-01-22 06:30:00+01:00", "2023-01-22 06:45:00+01:00", "2023-01-22 07:00:00+01:00", "2023-01-22 07:15:00+01:00", "2023-01-22 07:30:00+01:00", "2023-01-22 07:45:00+01:00", "2023-01-22 08:00:00+01:00", "2023-01-22 08:15:00+01:00", "2023-01-22 08:30:00+01:00", "2023-01-22 08:45:00+01:00", "2023-01-22 09:00:00+01:00", "2023-01-22 09:15:00+01:00", "2023-01-22 09:30:00+01:00", "2023-01-22 09:45:00+01:00", "2023-01-22 10:00:00+01:00", "2023-01-22 10:15:00+01:00", "2023-01-22 10:30:00+01:00", "2023-01-22 10:45:00+01:00", "2023-01-22 11:00:00+01:00", "2023-01-22 11:15:00+01:00", "2023-01-22 11:30:00+01:00", "2023-01-22 11:45:00+01:00", "2023-01-22 12:00:00+01:00", "2023-01-22 12:15:00+01:00", "2023-01-22 12:30:00+01:00", "2023-01-22 12:45:00+01:00", "2023-01-22 13:00:00+01:00", "2023-01-22 13:15:00+01:00", "2023-01-22 13:30:00+01:00", "2023-01-22 13:45:00+01:00", "2023-01-22 14:00:00+01:00", "2023-01-22 14:15:00+01:00", "2023-01-22 14:30:00+01:00", "2023-01-22 14:45:00+01:00", "2023-01-22 15:00:00+01:00", "2023-01-22 15:15:00+01:00", "2023-01-22 15:30:00+01:00", "2023-01-22 15:45:00+01:00", "2023-01-22 16:00:00+01:00", "2023-01-22 16:15:00+01:00", "2023-01-22 16:30:00+01:00", "2023-01-22 16:45:00+01:00", "2023-01-22 17:00:00+01:00", "2023-01-22 17:15:00+01:00", "2023-01-22 17:30:00+01:00", "2023-01-22 17:45:00+01:00", "2023-01-22 18:00:00+01:00", "2023-01-22 18:15:00+01:00", "2023-01-22 18:30:00+01:00", "2023-01-22 18:45:00+01:00", "2023-01-22 19:00:00+01:00", "2023-01-22 19:15:00+01:00", "2023-01-22 19:30:00+01:00", "2023-01-22 19:45:00+01:00", "2023-01-22 20:00:00+01:00", "2023-01-22 20:15:00+01:00", "2023-01-22 20:30:00+01:00", "2023-01-22 20:45:00+01:00", "2023-01-22 21:00:00+01:00", "2023-01-22 21:15:00+01:00", "2023-01-22 21:30:00+01:00", "2023-01-22 21:45:00+01:00", "2023-01-22 22:00:00+01:00", "2023-01-22 22:15:00+01:00", "2023-01-22 22:30:00+01:00", "2023-01-22 22:45:00+01:00", "2023-01-22 23:00:00+01:00", "2023-01-22 23:15:00+01:00", "2023-01-22 23:30:00+01:00", "2023-01-22 23:45:00+01:00", "2023-01-23 00:00:00+01:00", "2023-01-23 00:15:00+01:00", "2023-01-23 00:30:00+01:00", "2023-01-23 00:45:00+01:00", "2023-01-23 01:00:00+01:00", "2023-01-23 01:15:00+01:00", "2023-01-23 01:30:00+01:00", "2023-01-23 01:45:00+01:00", "2023-01-23 02:00:00+01:00", "2023-01-23 02:15:00+01:00", "2023-01-23 02:30:00+01:00", "2023-01-23 02:45:00+01:00", "2023-01-23 03:00:00+01:00", "2023-01-23 03:15:00+01:00", "2023-01-23 03:30:00+01:00", "2023-01-23 03:45:00+01:00", "2023-01-23 04:00:00+01:00", "2023-01-23 04:15:00+01:00", "2023-01-23 04:30:00+01:00", "2023-01-23 04:45:00+01:00", "2023-01-23 05:00:00+01:00", "2023-01-23 05:15:00+01:00", "2023-01-23 05:30:00+01:00", "2023-01-23 05:45:00+01:00", "2023-01-23 06:00:00+01:00", "2023-01-23 06:15:00+01:00", "2023-01-23 06:30:00+01:00", "2023-01-23 06:45:00+01:00", "2023-01-23 07:00:00+01:00", "2023-01-23 07:15:00+01:00", "2023-01-23 07:30:00+01:00", "2023-01-23 07:45:00+01:00", "2023-01-23 08:00:00+01:00", "2023-01-23 08:15:00+01:00", "2023-01-23 08:30:00+01:00", "2023-01-23 08:45:00+01:00", "2023-01-23 09:00:00+01:00", "2023-01-23 09:15:00+01:00", "2023-01-23 09:30:00+01:00", "2023-01-23 09:45:00+01:00", "2023-01-23 10:00:00+01:00", "2023-01-23 10:15:00+01:00", "2023-01-23 10:30:00+01:00", "2023-01-23 10:45:00+01:00", "2023-01-23 11:00:00+01:00", "2023-01-23 11:15:00+01:00", "2023-01-23 11:30:00+01:00", "2023-01-23 11:45:00+01:00", "2023-01-23 12:00:00+01:00", "2023-01-23 12:15:00+01:00", "2023-01-23 12:30:00+01:00", "2023-01-23 12:45:00+01:00", "2023-01-23 13:00:00+01:00", "2023-01-23 13:15:00+01:00", "2023-01-23 13:30:00+01:00", "2023-01-23 13:45:00+01:00", "2023-01-23 14:00:00+01:00", "2023-01-23 14:15:00+01:00", "2023-01-23 14:30:00+01:00", "2023-01-23 14:45:00+01:00", "2023-01-23 15:00:00+01:00", "2023-01-23 15:15:00+01:00", "2023-01-23 15:30:00+01:00", "2023-01-23 15:45:00+01:00", "2023-01-23 16:00:00+01:00", "2023-01-23 16:15:00+01:00", "2023-01-23 16:30:00+01:00", "2023-01-23 16:45:00+01:00", "2023-01-23 17:00:00+01:00", "2023-01-23 17:15:00+01:00", "2023-01-23 17:30:00+01:00", "2023-01-23 17:45:00+01:00", "2023-01-23 18:00:00+01:00", "2023-01-23 18:15:00+01:00", "2023-01-23 18:30:00+01:00", "2023-01-23 18:45:00+01:00", "2023-01-23 19:00:00+01:00", "2023-01-23 19:15:00+01:00", "2023-01-23 19:30:00+01:00", "2023-01-23 19:45:00+01:00", "2023-01-23 20:00:00+01:00", "2023-01-23 20:15:00+01:00", "2023-01-23 20:30:00+01:00", "2023-01-23 20:45:00+01:00", "2023-01-23 21:00:00+01:00", "2023-01-23 21:15:00+01:00", "2023-01-23 21:30:00+01:00", "2023-01-23 21:45:00+01:00", "2023-01-23 22:00:00+01:00", "2023-01-23 22:15:00+01:00", "2023-01-23 22:30:00+01:00", "2023-01-23 22:45:00+01:00", "2023-01-23 23:00:00+01:00", "2023-01-23 23:15:00+01:00", "2023-01-23 23:30:00+01:00", "2023-01-23 23:45:00+01:00", "2023-01-24 00:00:00+01:00", "2023-01-24 00:15:00+01:00", "2023-01-24 00:30:00+01:00", "2023-01-24 00:45:00+01:00", "2023-01-24 01:00:00+01:00", "2023-01-24 01:15:00+01:00", "2023-01-24 01:30:00+01:00", "2023-01-24 01:45:00+01:00", "2023-01-24 02:00:00+01:00", "2023-01-24 02:15:00+01:00", "2023-01-24 02:30:00+01:00", "2023-01-24 02:45:00+01:00", "2023-01-24 03:00:00+01:00", "2023-01-24 03:15:00+01:00", "2023-01-24 03:30:00+01:00", "2023-01-24 03:45:00+01:00", "2023-01-24 04:00:00+01:00", "2023-01-24 04:15:00+01:00", "2023-01-24 04:30:00+01:00", "2023-01-24 04:45:00+01:00", "2023-01-24 05:00:00+01:00", "2023-01-24 05:15:00+01:00", "2023-01-24 05:30:00+01:00", "2023-01-24 05:45:00+01:00", "2023-01-24 06:00:00+01:00", "2023-01-24 06:15:00+01:00", "2023-01-24 06:30:00+01:00", "2023-01-24 06:45:00+01:00", "2023-01-24 07:00:00+01:00", "2023-01-24 07:15:00+01:00", "2023-01-24 07:30:00+01:00", "2023-01-24 07:45:00+01:00", "2023-01-24 08:00:00+01:00", "2023-01-24 08:15:00+01:00", "2023-01-24 08:30:00+01:00", "2023-01-24 08:45:00+01:00", "2023-01-24 09:00:00+01:00", "2023-01-24 09:15:00+01:00", "2023-01-24 09:30:00+01:00", "2023-01-24 09:45:00+01:00", "2023-01-24 10:00:00+01:00", "2023-01-24 10:15:00+01:00", "2023-01-24 10:30:00+01:00", "2023-01-24 10:45:00+01:00", "2023-01-24 11:00:00+01:00", "2023-01-24 11:15:00+01:00", "2023-01-24 11:30:00+01:00", "2023-01-24 11:45:00+01:00", "2023-01-24 12:00:00+01:00", "2023-01-24 12:15:00+01:00", "2023-01-24 12:30:00+01:00", "2023-01-24 12:45:00+01:00", "2023-01-24 13:00:00+01:00", "2023-01-24 13:15:00+01:00", "2023-01-24 13:30:00+01:00", "2023-01-24 13:45:00+01:00", "2023-01-24 14:00:00+01:00", "2023-01-24 14:15:00+01:00", "2023-01-24 14:30:00+01:00", "2023-01-24 14:45:00+01:00", "2023-01-24 15:00:00+01:00", "2023-01-24 15:15:00+01:00", "2023-01-24 15:30:00+01:00", "2023-01-24 15:45:00+01:00", "2023-01-24 16:00:00+01:00", "2023-01-24 16:15:00+01:00", "2023-01-24 16:30:00+01:00", "2023-01-24 16:45:00+01:00", "2023-01-24 17:00:00+01:00", "2023-01-24 17:15:00+01:00", "2023-01-24 17:30:00+01:00", "2023-01-24 17:45:00+01:00", "2023-01-24 18:00:00+01:00", "2023-01-24 18:15:00+01:00", "2023-01-24 18:30:00+01:00", "2023-01-24 18:45:00+01:00", "2023-01-24 19:00:00+01:00", "2023-01-24 19:15:00+01:00", "2023-01-24 19:30:00+01:00", "2023-01-24 19:45:00+01:00", "2023-01-24 20:00:00+01:00", "2023-01-24 20:15:00+01:00", "2023-01-24 20:30:00+01:00", "2023-01-24 20:45:00+01:00", "2023-01-24 21:00:00+01:00", "2023-01-24 21:15:00+01:00", "2023-01-24 21:30:00+01:00", "2023-01-24 21:45:00+01:00", "2023-01-24 22:00:00+01:00", "2023-01-24 22:15:00+01:00", "2023-01-24 22:30:00+01:00", "2023-01-24 22:45:00+01:00", "2023-01-24 23:00:00+01:00", "2023-01-24 23:15:00+01:00", "2023-01-24 23:30:00+01:00", "2023-01-24 23:45:00+01:00", "2023-01-25 00:00:00+01:00", "2023-01-25 00:15:00+01:00", "2023-01-25 00:30:00+01:00", "2023-01-25 00:45:00+01:00", "2023-01-25 01:00:00+01:00", "2023-01-25 01:15:00+01:00", "2023-01-25 01:30:00+01:00", "2023-01-25 01:45:00+01:00", "2023-01-25 02:00:00+01:00", "2023-01-25 02:15:00+01:00", "2023-01-25 02:30:00+01:00", "2023-01-25 02:45:00+01:00", "2023-01-25 03:00:00+01:00", "2023-01-25 03:15:00+01:00", "2023-01-25 03:30:00+01:00", "2023-01-25 03:45:00+01:00", "2023-01-25 04:00:00+01:00", "2023-01-25 04:15:00+01:00", "2023-01-25 04:30:00+01:00", "2023-01-25 04:45:00+01:00", "2023-01-25 05:00:00+01:00", "2023-01-25 05:15:00+01:00", "2023-01-25 05:30:00+01:00", "2023-01-25 05:45:00+01:00", "2023-01-25 06:00:00+01:00", "2023-01-25 06:15:00+01:00", "2023-01-25 06:30:00+01:00", "2023-01-25 06:45:00+01:00", "2023-01-25 07:00:00+01:00", "2023-01-25 07:15:00+01:00", "2023-01-25 07:30:00+01:00", "2023-01-25 07:45:00+01:00", "2023-01-25 08:00:00+01:00", "2023-01-25 08:15:00+01:00", "2023-01-25 08:30:00+01:00", "2023-01-25 08:45:00+01:00", "2023-01-25 09:00:00+01:00", "2023-01-25 09:15:00+01:00", "2023-01-25 09:30:00+01:00", "2023-01-25 09:45:00+01:00", "2023-01-25 10:00:00+01:00", "2023-01-25 10:15:00+01:00", "2023-01-25 10:30:00+01:00", "2023-01-25 10:45:00+01:00", "2023-01-25 11:00:00+01:00", "2023-01-25 11:15:00+01:00", "2023-01-25 11:30:00+01:00", "2023-01-25 11:45:00+01:00", "2023-01-25 12:00:00+01:00", "2023-01-25 12:15:00+01:00", "2023-01-25 12:30:00+01:00", "2023-01-25 12:45:00+01:00", "2023-01-25 13:00:00+01:00", "2023-01-25 13:15:00+01:00", "2023-01-25 13:30:00+01:00", "2023-01-25 13:45:00+01:00", "2023-01-25 14:00:00+01:00", "2023-01-25 14:15:00+01:00", "2023-01-25 14:30:00+01:00", "2023-01-25 14:45:00+01:00", "2023-01-25 15:00:00+01:00", "2023-01-25 15:15:00+01:00", "2023-01-25 15:30:00+01:00", "2023-01-25 15:45:00+01:00", "2023-01-25 16:00:00+01:00", "2023-01-25 16:15:00+01:00", "2023-01-25 16:30:00+01:00", "2023-01-25 16:45:00+01:00", "2023-01-25 17:00:00+01:00", "2023-01-25 17:15:00+01:00", "2023-01-25 17:30:00+01:00", "2023-01-25 17:45:00+01:00", "2023-01-25 18:00:00+01:00", "2023-01-25 18:15:00+01:00", "2023-01-25 18:30:00+01:00", "2023-01-25 18:45:00+01:00", "2023-01-25 19:00:00+01:00", "2023-01-25 19:15:00+01:00", "2023-01-25 19:30:00+01:00", "2023-01-25 19:45:00+01:00", "2023-01-25 20:00:00+01:00", "2023-01-25 20:15:00+01:00", "2023-01-25 20:30:00+01:00", "2023-01-25 20:45:00+01:00", "2023-01-25 21:00:00+01:00", "2023-01-25 21:15:00+01:00", "2023-01-25 21:30:00+01:00", "2023-01-25 21:45:00+01:00", "2023-01-25 22:00:00+01:00", "2023-01-25 22:15:00+01:00", "2023-01-25 22:30:00+01:00", "2023-01-25 22:45:00+01:00", "2023-01-25 23:00:00+01:00", "2023-01-25 23:15:00+01:00", "2023-01-25 23:30:00+01:00", "2023-01-25 23:45:00+01:00", "2023-01-26 00:00:00+01:00", "2023-01-26 00:15:00+01:00", "2023-01-26 00:30:00+01:00", "2023-01-26 00:45:00+01:00", "2023-01-26 01:00:00+01:00", "2023-01-26 01:15:00+01:00", "2023-01-26 01:30:00+01:00", "2023-01-26 01:45:00+01:00", "2023-01-26 02:00:00+01:00", "2023-01-26 02:15:00+01:00", "2023-01-26 02:30:00+01:00", "2023-01-26 02:45:00+01:00", "2023-01-26 03:00:00+01:00", "2023-01-26 03:15:00+01:00", "2023-01-26 03:30:00+01:00", "2023-01-26 03:45:00+01:00", "2023-01-26 04:00:00+01:00", "2023-01-26 04:15:00+01:00", "2023-01-26 04:30:00+01:00", "2023-01-26 04:45:00+01:00", "2023-01-26 05:00:00+01:00", "2023-01-26 05:15:00+01:00", "2023-01-26 05:30:00+01:00", "2023-01-26 05:45:00+01:00", "2023-01-26 06:00:00+01:00", "2023-01-26 06:15:00+01:00", "2023-01-26 06:30:00+01:00", "2023-01-26 06:45:00+01:00", "2023-01-26 07:00:00+01:00", "2023-01-26 07:15:00+01:00", "2023-01-26 07:30:00+01:00", "2023-01-26 07:45:00+01:00", "2023-01-26 08:00:00+01:00", "2023-01-26 08:15:00+01:00", "2023-01-26 08:30:00+01:00", "2023-01-26 08:45:00+01:00", "2023-01-26 09:00:00+01:00", "2023-01-26 09:15:00+01:00", "2023-01-26 09:30:00+01:00", "2023-01-26 09:45:00+01:00", "2023-01-26 10:00:00+01:00", "2023-01-26 10:15:00+01:00", "2023-01-26 10:30:00+01:00", "2023-01-26 10:45:00+01:00", "2023-01-26 11:00:00+01:00", "2023-01-26 11:15:00+01:00", "2023-01-26 11:30:00+01:00", "2023-01-26 11:45:00+01:00", "2023-01-26 12:00:00+01:00", "2023-01-26 12:15:00+01:00", "2023-01-26 12:30:00+01:00", "2023-01-26 12:45:00+01:00", "2023-01-26 13:00:00+01:00", "2023-01-26 13:15:00+01:00", "2023-01-26 13:30:00+01:00", "2023-01-26 13:45:00+01:00", "2023-01-26 14:00:00+01:00", "2023-01-26 14:15:00+01:00", "2023-01-26 14:30:00+01:00", "2023-01-26 14:45:00+01:00", "2023-01-26 15:00:00+01:00", "2023-01-26 15:15:00+01:00", "2023-01-26 15:30:00+01:00", "2023-01-26 15:45:00+01:00", "2023-01-26 16:00:00+01:00", "2023-01-26 16:15:00+01:00", "2023-01-26 16:30:00+01:00", "2023-01-26 16:45:00+01:00", "2023-01-26 17:00:00+01:00", "2023-01-26 17:15:00+01:00", "2023-01-26 17:30:00+01:00", "2023-01-26 17:45:00+01:00", "2023-01-26 18:00:00+01:00", "2023-01-26 18:15:00+01:00", "2023-01-26 18:30:00+01:00", "2023-01-26 18:45:00+01:00", "2023-01-26 19:00:00+01:00", "2023-01-26 19:15:00+01:00", "2023-01-26 19:30:00+01:00", "2023-01-26 19:45:00+01:00", "2023-01-26 20:00:00+01:00", "2023-01-26 20:15:00+01:00", "2023-01-26 20:30:00+01:00", "2023-01-26 20:45:00+01:00", "2023-01-26 21:00:00+01:00", "2023-01-26 21:15:00+01:00", "2023-01-26 21:30:00+01:00", "2023-01-26 21:45:00+01:00", "2023-01-26 22:00:00+01:00", "2023-01-26 22:15:00+01:00", "2023-01-26 22:30:00+01:00", "2023-01-26 22:45:00+01:00", "2023-01-26 23:00:00+01:00", "2023-01-26 23:15:00+01:00", "2023-01-26 23:30:00+01:00", "2023-01-26 23:45:00+01:00", "2023-01-27 00:00:00+01:00", "2023-01-27 00:15:00+01:00", "2023-01-27 00:30:00+01:00", "2023-01-27 00:45:00+01:00", "2023-01-27 01:00:00+01:00", "2023-01-27 01:15:00+01:00", "2023-01-27 01:30:00+01:00", "2023-01-27 01:45:00+01:00", "2023-01-27 02:00:00+01:00", "2023-01-27 02:15:00+01:00", "2023-01-27 02:30:00+01:00", "2023-01-27 02:45:00+01:00", "2023-01-27 03:00:00+01:00", "2023-01-27 03:15:00+01:00", "2023-01-27 03:30:00+01:00", "2023-01-27 03:45:00+01:00", "2023-01-27 04:00:00+01:00", "2023-01-27 04:15:00+01:00", "2023-01-27 04:30:00+01:00", "2023-01-27 04:45:00+01:00", "2023-01-27 05:00:00+01:00", "2023-01-27 05:15:00+01:00", "2023-01-27 05:30:00+01:00", "2023-01-27 05:45:00+01:00", "2023-01-27 06:00:00+01:00", "2023-01-27 06:15:00+01:00", "2023-01-27 06:30:00+01:00", "2023-01-27 06:45:00+01:00", "2023-01-27 07:00:00+01:00", "2023-01-27 07:15:00+01:00", "2023-01-27 07:30:00+01:00", "2023-01-27 07:45:00+01:00", "2023-01-27 08:00:00+01:00", "2023-01-27 08:15:00+01:00", "2023-01-27 08:30:00+01:00", "2023-01-27 08:45:00+01:00", "2023-01-27 09:00:00+01:00", "2023-01-27 09:15:00+01:00", "2023-01-27 09:30:00+01:00", "2023-01-27 09:45:00+01:00", "2023-01-27 10:00:00+01:00", "2023-01-27 10:15:00+01:00", "2023-01-27 10:30:00+01:00", "2023-01-27 10:45:00+01:00", "2023-01-27 11:00:00+01:00", "2023-01-27 11:15:00+01:00", "2023-01-27 11:30:00+01:00", "2023-01-27 11:45:00+01:00", "2023-01-27 12:00:00+01:00", "2023-01-27 12:15:00+01:00", "2023-01-27 12:30:00+01:00", "2023-01-27 12:45:00+01:00", "2023-01-27 13:00:00+01:00", "2023-01-27 13:15:00+01:00", "2023-01-27 13:30:00+01:00", "2023-01-27 13:45:00+01:00", "2023-01-27 14:00:00+01:00", "2023-01-27 14:15:00+01:00", "2023-01-27 14:30:00+01:00", "2023-01-27 14:45:00+01:00", "2023-01-27 15:00:00+01:00", "2023-01-27 15:15:00+01:00", "2023-01-27 15:30:00+01:00", "2023-01-27 15:45:00+01:00", "2023-01-27 16:00:00+01:00", "2023-01-27 16:15:00+01:00", "2023-01-27 16:30:00+01:00", "2023-01-27 16:45:00+01:00", "2023-01-27 17:00:00+01:00", "2023-01-27 17:15:00+01:00", "2023-01-27 17:30:00+01:00", "2023-01-27 17:45:00+01:00", "2023-01-27 18:00:00+01:00", "2023-01-27 18:15:00+01:00", "2023-01-27 18:30:00+01:00", "2023-01-27 18:45:00+01:00", "2023-01-27 19:00:00+01:00", "2023-01-27 19:15:00+01:00", "2023-01-27 19:30:00+01:00", "2023-01-27 19:45:00+01:00", "2023-01-27 20:00:00+01:00", "2023-01-27 20:15:00+01:00", "2023-01-27 20:30:00+01:00", "2023-01-27 20:45:00+01:00", "2023-01-27 21:00:00+01:00", "2023-01-27 21:15:00+01:00", "2023-01-27 21:30:00+01:00", "2023-01-27 21:45:00+01:00", "2023-01-27 22:00:00+01:00", "2023-01-27 22:15:00+01:00", "2023-01-27 22:30:00+01:00", "2023-01-27 22:45:00+01:00", "2023-01-27 23:00:00+01:00", "2023-01-27 23:15:00+01:00", "2023-01-27 23:30:00+01:00", "2023-01-27 23:45:00+01:00", "2023-01-28 00:00:00+01:00", "2023-01-28 00:15:00+01:00", "2023-01-28 00:30:00+01:00", "2023-01-28 00:45:00+01:00", "2023-01-28 01:00:00+01:00", "2023-01-28 01:15:00+01:00", "2023-01-28 01:30:00+01:00", "2023-01-28 01:45:00+01:00", "2023-01-28 02:00:00+01:00", "2023-01-28 02:15:00+01:00", "2023-01-28 02:30:00+01:00", "2023-01-28 02:45:00+01:00", "2023-01-28 03:00:00+01:00", "2023-01-28 03:15:00+01:00", "2023-01-28 03:30:00+01:00", "2023-01-28 03:45:00+01:00", "2023-01-28 04:00:00+01:00", "2023-01-28 04:15:00+01:00", "2023-01-28 04:30:00+01:00", "2023-01-28 04:45:00+01:00", "2023-01-28 05:00:00+01:00", "2023-01-28 05:15:00+01:00", "2023-01-28 05:30:00+01:00", "2023-01-28 05:45:00+01:00", "2023-01-28 06:00:00+01:00", "2023-01-28 06:15:00+01:00", "2023-01-28 06:30:00+01:00", "2023-01-28 06:45:00+01:00", "2023-01-28 07:00:00+01:00", "2023-01-28 07:15:00+01:00", "2023-01-28 07:30:00+01:00", "2023-01-28 07:45:00+01:00", "2023-01-28 08:00:00+01:00", "2023-01-28 08:15:00+01:00", "2023-01-28 08:30:00+01:00", "2023-01-28 08:45:00+01:00", "2023-01-28 09:00:00+01:00", "2023-01-28 09:15:00+01:00", "2023-01-28 09:30:00+01:00", "2023-01-28 09:45:00+01:00", "2023-01-28 10:00:00+01:00", "2023-01-28 10:15:00+01:00", "2023-01-28 10:30:00+01:00", "2023-01-28 10:45:00+01:00", "2023-01-28 11:00:00+01:00", "2023-01-28 11:15:00+01:00", "2023-01-28 11:30:00+01:00", "2023-01-28 11:45:00+01:00", "2023-01-28 12:00:00+01:00", "2023-01-28 12:15:00+01:00", "2023-01-28 12:30:00+01:00", "2023-01-28 12:45:00+01:00", "2023-01-28 13:00:00+01:00", "2023-01-28 13:15:00+01:00", "2023-01-28 13:30:00+01:00", "2023-01-28 13:45:00+01:00", "2023-01-28 14:00:00+01:00", "2023-01-28 14:15:00+01:00", "2023-01-28 14:30:00+01:00", "2023-01-28 14:45:00+01:00", "2023-01-28 15:00:00+01:00", "2023-01-28 15:15:00+01:00", "2023-01-28 15:30:00+01:00", "2023-01-28 15:45:00+01:00", "2023-01-28 16:00:00+01:00", "2023-01-28 16:15:00+01:00", "2023-01-28 16:30:00+01:00", "2023-01-28 16:45:00+01:00", "2023-01-28 17:00:00+01:00", "2023-01-28 17:15:00+01:00", "2023-01-28 17:30:00+01:00", "2023-01-28 17:45:00+01:00", "2023-01-28 18:00:00+01:00", "2023-01-28 18:15:00+01:00", "2023-01-28 18:30:00+01:00", "2023-01-28 18:45:00+01:00", "2023-01-28 19:00:00+01:00", "2023-01-28 19:15:00+01:00", "2023-01-28 19:30:00+01:00", "2023-01-28 19:45:00+01:00", "2023-01-28 20:00:00+01:00", "2023-01-28 20:15:00+01:00", "2023-01-28 20:30:00+01:00", "2023-01-28 20:45:00+01:00", "2023-01-28 21:00:00+01:00", "2023-01-28 21:15:00+01:00", "2023-01-28 21:30:00+01:00", "2023-01-28 21:45:00+01:00", "2023-01-28 22:00:00+01:00", "2023-01-28 22:15:00+01:00", "2023-01-28 22:30:00+01:00", "2023-01-28 22:45:00+01:00", "2023-01-28 23:00:00+01:00", "2023-01-28 23:15:00+01:00", "2023-01-28 23:30:00+01:00", "2023-01-28 23:45:00+01:00", "2023-01-29 00:00:00+01:00", "2023-01-29 00:15:00+01:00", "2023-01-29 00:30:00+01:00", "2023-01-29 00:45:00+01:00", "2023-01-29 01:00:00+01:00", "2023-01-29 01:15:00+01:00", "2023-01-29 01:30:00+01:00", "2023-01-29 01:45:00+01:00", "2023-01-29 02:00:00+01:00", "2023-01-29 02:15:00+01:00", "2023-01-29 02:30:00+01:00", "2023-01-29 02:45:00+01:00", "2023-01-29 03:00:00+01:00", "2023-01-29 03:15:00+01:00", "2023-01-29 03:30:00+01:00", "2023-01-29 03:45:00+01:00", "2023-01-29 04:00:00+01:00", "2023-01-29 04:15:00+01:00", "2023-01-29 04:30:00+01:00", "2023-01-29 04:45:00+01:00", "2023-01-29 05:00:00+01:00", "2023-01-29 05:15:00+01:00", "2023-01-29 05:30:00+01:00", "2023-01-29 05:45:00+01:00", "2023-01-29 06:00:00+01:00", "2023-01-29 06:15:00+01:00", "2023-01-29 06:30:00+01:00", "2023-01-29 06:45:00+01:00", "2023-01-29 07:00:00+01:00", "2023-01-29 07:15:00+01:00", "2023-01-29 07:30:00+01:00", "2023-01-29 07:45:00+01:00", "2023-01-29 08:00:00+01:00", "2023-01-29 08:15:00+01:00", "2023-01-29 08:30:00+01:00", "2023-01-29 08:45:00+01:00", "2023-01-29 09:00:00+01:00", "2023-01-29 09:15:00+01:00", "2023-01-29 09:30:00+01:00", "2023-01-29 09:45:00+01:00", "2023-01-29 10:00:00+01:00", "2023-01-29 10:15:00+01:00", "2023-01-29 10:30:00+01:00", "2023-01-29 10:45:00+01:00", "2023-01-29 11:00:00+01:00", "2023-01-29 11:15:00+01:00", "2023-01-29 11:30:00+01:00", "2023-01-29 11:45:00+01:00", "2023-01-29 12:00:00+01:00", "2023-01-29 12:15:00+01:00", "2023-01-29 12:30:00+01:00", "2023-01-29 12:45:00+01:00", "2023-01-29 13:00:00+01:00", "2023-01-29 13:15:00+01:00", "2023-01-29 13:30:00+01:00", "2023-01-29 13:45:00+01:00", "2023-01-29 14:00:00+01:00", "2023-01-29 14:15:00+01:00", "2023-01-29 14:30:00+01:00", "2023-01-29 14:45:00+01:00", "2023-01-29 15:00:00+01:00", "2023-01-29 15:15:00+01:00", "2023-01-29 15:30:00+01:00", "2023-01-29 15:45:00+01:00", "2023-01-29 16:00:00+01:00", "2023-01-29 16:15:00+01:00", "2023-01-29 16:30:00+01:00", "2023-01-29 16:45:00+01:00", "2023-01-29 17:00:00+01:00", "2023-01-29 17:15:00+01:00", "2023-01-29 17:30:00+01:00", "2023-01-29 17:45:00+01:00", "2023-01-29 18:00:00+01:00", "2023-01-29 18:15:00+01:00", "2023-01-29 18:30:00+01:00", "2023-01-29 18:45:00+01:00", "2023-01-29 19:00:00+01:00", "2023-01-29 19:15:00+01:00", "2023-01-29 19:30:00+01:00", "2023-01-29 19:45:00+01:00", "2023-01-29 20:00:00+01:00", "2023-01-29 20:15:00+01:00", "2023-01-29 20:30:00+01:00", "2023-01-29 20:45:00+01:00", "2023-01-29 21:00:00+01:00", "2023-01-29 21:15:00+01:00", "2023-01-29 21:30:00+01:00", "2023-01-29 21:45:00+01:00", "2023-01-29 22:00:00+01:00", "2023-01-29 22:15:00+01:00", "2023-01-29 22:30:00+01:00", "2023-01-29 22:45:00+01:00", "2023-01-29 23:00:00+01:00", "2023-01-29 23:15:00+01:00", "2023-01-29 23:30:00+01:00", "2023-01-29 23:45:00+01:00", "2023-01-30 00:00:00+01:00", "2023-01-30 00:15:00+01:00", "2023-01-30 00:30:00+01:00", "2023-01-30 00:45:00+01:00", "2023-01-30 01:00:00+01:00", "2023-01-30 01:15:00+01:00", "2023-01-30 01:30:00+01:00", "2023-01-30 01:45:00+01:00", "2023-01-30 02:00:00+01:00", "2023-01-30 02:15:00+01:00", "2023-01-30 02:30:00+01:00", "2023-01-30 02:45:00+01:00", "2023-01-30 03:00:00+01:00", "2023-01-30 03:15:00+01:00", "2023-01-30 03:30:00+01:00", "2023-01-30 03:45:00+01:00", "2023-01-30 04:00:00+01:00", "2023-01-30 04:15:00+01:00", "2023-01-30 04:30:00+01:00", "2023-01-30 04:45:00+01:00", "2023-01-30 05:00:00+01:00", "2023-01-30 05:15:00+01:00", "2023-01-30 05:30:00+01:00", "2023-01-30 05:45:00+01:00", "2023-01-30 06:00:00+01:00", "2023-01-30 06:15:00+01:00", "2023-01-30 06:30:00+01:00", "2023-01-30 06:45:00+01:00", "2023-01-30 07:00:00+01:00", "2023-01-30 07:15:00+01:00", "2023-01-30 07:30:00+01:00", "2023-01-30 07:45:00+01:00", "2023-01-30 08:00:00+01:00", "2023-01-30 08:15:00+01:00", "2023-01-30 08:30:00+01:00", "2023-01-30 08:45:00+01:00", "2023-01-30 09:00:00+01:00", "2023-01-30 09:15:00+01:00", "2023-01-30 09:30:00+01:00", "2023-01-30 09:45:00+01:00", "2023-01-30 10:00:00+01:00", "2023-01-30 10:15:00+01:00", "2023-01-30 10:30:00+01:00", "2023-01-30 10:45:00+01:00", "2023-01-30 11:00:00+01:00", "2023-01-30 11:15:00+01:00", "2023-01-30 11:30:00+01:00", "2023-01-30 11:45:00+01:00", "2023-01-30 12:00:00+01:00", "2023-01-30 12:15:00+01:00", "2023-01-30 12:30:00+01:00", "2023-01-30 12:45:00+01:00", "2023-01-30 13:00:00+01:00", "2023-01-30 13:15:00+01:00", "2023-01-30 13:30:00+01:00", "2023-01-30 13:45:00+01:00", "2023-01-30 14:00:00+01:00", "2023-01-30 14:15:00+01:00", "2023-01-30 14:30:00+01:00", "2023-01-30 14:45:00+01:00", "2023-01-30 15:00:00+01:00", "2023-01-30 15:15:00+01:00", "2023-01-30 15:30:00+01:00", "2023-01-30 15:45:00+01:00", "2023-01-30 16:00:00+01:00", "2023-01-30 16:15:00+01:00", "2023-01-30 16:30:00+01:00", "2023-01-30 16:45:00+01:00", "2023-01-30 17:00:00+01:00", "2023-01-30 17:15:00+01:00", "2023-01-30 17:30:00+01:00", "2023-01-30 17:45:00+01:00", "2023-01-30 18:00:00+01:00", "2023-01-30 18:15:00+01:00", "2023-01-30 18:30:00+01:00", "2023-01-30 18:45:00+01:00", "2023-01-30 19:00:00+01:00", "2023-01-30 19:15:00+01:00", "2023-01-30 19:30:00+01:00", "2023-01-30 19:45:00+01:00", "2023-01-30 20:00:00+01:00", "2023-01-30 20:15:00+01:00", "2023-01-30 20:30:00+01:00", "2023-01-30 20:45:00+01:00", "2023-01-30 21:00:00+01:00", "2023-01-30 21:15:00+01:00", "2023-01-30 21:30:00+01:00", "2023-01-30 21:45:00+01:00", "2023-01-30 22:00:00+01:00", "2023-01-30 22:15:00+01:00", "2023-01-30 22:30:00+01:00", "2023-01-30 22:45:00+01:00", "2023-01-30 23:00:00+01:00", "2023-01-30 23:15:00+01:00", "2023-01-30 23:30:00+01:00", "2023-01-30 23:45:00+01:00", "2023-01-31 00:00:00+01:00", "2023-01-31 00:15:00+01:00", "2023-01-31 00:30:00+01:00", "2023-01-31 00:45:00+01:00", "2023-01-31 01:00:00+01:00", "2023-01-31 01:15:00+01:00", "2023-01-31 01:30:00+01:00", "2023-01-31 01:45:00+01:00", "2023-01-31 02:00:00+01:00", "2023-01-31 02:15:00+01:00", "2023-01-31 02:30:00+01:00", "2023-01-31 02:45:00+01:00", "2023-01-31 03:00:00+01:00", "2023-01-31 03:15:00+01:00", "2023-01-31 03:30:00+01:00", "2023-01-31 03:45:00+01:00", "2023-01-31 04:00:00+01:00", "2023-01-31 04:15:00+01:00", "2023-01-31 04:30:00+01:00", "2023-01-31 04:45:00+01:00", "2023-01-31 05:00:00+01:00", "2023-01-31 05:15:00+01:00", "2023-01-31 05:30:00+01:00", "2023-01-31 05:45:00+01:00", "2023-01-31 06:00:00+01:00", "2023-01-31 06:15:00+01:00", "2023-01-31 06:30:00+01:00", "2023-01-31 06:45:00+01:00", "2023-01-31 07:00:00+01:00", "2023-01-31 07:15:00+01:00", "2023-01-31 07:30:00+01:00", "2023-01-31 07:45:00+01:00", "2023-01-31 08:00:00+01:00", "2023-01-31 08:15:00+01:00", "2023-01-31 08:30:00+01:00", "2023-01-31 08:45:00+01:00", "2023-01-31 09:00:00+01:00", "2023-01-31 09:15:00+01:00", "2023-01-31 09:30:00+01:00", "2023-01-31 09:45:00+01:00", "2023-01-31 10:00:00+01:00", "2023-01-31 10:15:00+01:00", "2023-01-31 10:30:00+01:00", "2023-01-31 10:45:00+01:00", "2023-01-31 11:00:00+01:00", "2023-01-31 11:15:00+01:00", "2023-01-31 11:30:00+01:00", "2023-01-31 11:45:00+01:00", "2023-01-31 12:00:00+01:00", "2023-01-31 12:15:00+01:00", "2023-01-31 12:30:00+01:00", "2023-01-31 12:45:00+01:00", "2023-01-31 13:00:00+01:00", "2023-01-31 13:15:00+01:00", "2023-01-31 13:30:00+01:00", "2023-01-31 13:45:00+01:00", "2023-01-31 14:00:00+01:00", "2023-01-31 14:15:00+01:00", "2023-01-31 14:30:00+01:00", "2023-01-31 14:45:00+01:00", "2023-01-31 15:00:00+01:00", "2023-01-31 15:15:00+01:00", "2023-01-31 15:30:00+01:00", "2023-01-31 15:45:00+01:00", "2023-01-31 16:00:00+01:00", "2023-01-31 16:15:00+01:00", "2023-01-31 16:30:00+01:00", "2023-01-31 16:45:00+01:00", "2023-01-31 17:00:00+01:00", "2023-01-31 17:15:00+01:00", "2023-01-31 17:30:00+01:00", "2023-01-31 17:45:00+01:00", "2023-01-31 18:00:00+01:00", "2023-01-31 18:15:00+01:00", "2023-01-31 18:30:00+01:00", "2023-01-31 18:45:00+01:00", "2023-01-31 19:00:00+01:00", "2023-01-31 19:15:00+01:00", "2023-01-31 19:30:00+01:00", "2023-01-31 19:45:00+01:00", "2023-01-31 20:00:00+01:00", "2023-01-31 20:15:00+01:00", "2023-01-31 20:30:00+01:00", "2023-01-31 20:45:00+01:00", "2023-01-31 21:00:00+01:00", "2023-01-31 21:15:00+01:00", "2023-01-31 21:30:00+01:00", "2023-01-31 21:45:00+01:00", "2023-01-31 22:00:00+01:00", "2023-01-31 22:15:00+01:00", "2023-01-31 22:30:00+01:00", "2023-01-31 22:45:00+01:00", "2023-01-31 23:00:00+01:00", "2023-01-31 23:15:00+01:00", "2023-01-31 23:30:00+01:00", "2023-01-31 23:45:00+01:00", "2023-02-01 00:00:00+01:00", "2023-02-01 00:15:00+01:00", "2023-02-01 00:30:00+01:00", "2023-02-01 00:45:00+01:00", "2023-02-01 01:00:00+01:00", "2023-02-01 01:15:00+01:00", "2023-02-01 01:30:00+01:00", "2023-02-01 01:45:00+01:00", "2023-02-01 02:00:00+01:00", "2023-02-01 02:15:00+01:00", "2023-02-01 02:30:00+01:00", "2023-02-01 02:45:00+01:00", "2023-02-01 03:00:00+01:00", "2023-02-01 03:15:00+01:00", "2023-02-01 03:30:00+01:00", "2023-02-01 03:45:00+01:00", "2023-02-01 04:00:00+01:00", "2023-02-01 04:15:00+01:00", "2023-02-01 04:30:00+01:00", "2023-02-01 04:45:00+01:00", "2023-02-01 05:00:00+01:00", "2023-02-01 05:15:00+01:00", "2023-02-01 05:30:00+01:00", "2023-02-01 05:45:00+01:00", "2023-02-01 06:00:00+01:00", "2023-02-01 06:15:00+01:00", "2023-02-01 06:30:00+01:00", "2023-02-01 06:45:00+01:00", "2023-02-01 07:00:00+01:00", "2023-02-01 07:15:00+01:00", "2023-02-01 07:30:00+01:00", "2023-02-01 07:45:00+01:00", "2023-02-01 08:00:00+01:00", "2023-02-01 08:15:00+01:00", "2023-02-01 08:30:00+01:00", "2023-02-01 08:45:00+01:00", "2023-02-01 09:00:00+01:00", "2023-02-01 09:15:00+01:00", "2023-02-01 09:30:00+01:00", "2023-02-01 09:45:00+01:00", "2023-02-01 10:00:00+01:00", "2023-02-01 10:15:00+01:00", "2023-02-01 10:30:00+01:00", "2023-02-01 10:45:00+01:00", "2023-02-01 11:00:00+01:00", "2023-02-01 11:15:00+01:00", "2023-02-01 11:30:00+01:00", "2023-02-01 11:45:00+01:00", "2023-02-01 12:00:00+01:00", "2023-02-01 12:15:00+01:00", "2023-02-01 12:30:00+01:00", "2023-02-01 12:45:00+01:00", "2023-02-01 13:00:00+01:00", "2023-02-01 13:15:00+01:00", "2023-02-01 13:30:00+01:00", "2023-02-01 13:45:00+01:00", "2023-02-01 14:00:00+01:00", "2023-02-01 14:15:00+01:00", "2023-02-01 14:30:00+01:00", "2023-02-01 14:45:00+01:00", "2023-02-01 15:00:00+01:00", "2023-02-01 15:15:00+01:00", "2023-02-01 15:30:00+01:00", "2023-02-01 15:45:00+01:00", "2023-02-01 16:00:00+01:00", "2023-02-01 16:15:00+01:00", "2023-02-01 16:30:00+01:00", "2023-02-01 16:45:00+01:00", "2023-02-01 17:00:00+01:00", "2023-02-01 17:15:00+01:00", "2023-02-01 17:30:00+01:00", "2023-02-01 17:45:00+01:00", "2023-02-01 18:00:00+01:00", "2023-02-01 18:15:00+01:00", "2023-02-01 18:30:00+01:00", "2023-02-01 18:45:00+01:00", "2023-02-01 19:00:00+01:00", "2023-02-01 19:15:00+01:00", "2023-02-01 19:30:00+01:00", "2023-02-01 19:45:00+01:00", "2023-02-01 20:00:00+01:00", "2023-02-01 20:15:00+01:00", "2023-02-01 20:30:00+01:00", "2023-02-01 20:45:00+01:00", "2023-02-01 21:00:00+01:00", "2023-02-01 21:15:00+01:00", "2023-02-01 21:30:00+01:00", "2023-02-01 21:45:00+01:00", "2023-02-01 22:00:00+01:00", "2023-02-01 22:15:00+01:00", "2023-02-01 22:30:00+01:00", "2023-02-01 22:45:00+01:00", "2023-02-01 23:00:00+01:00", "2023-02-01 23:15:00+01:00", "2023-02-01 23:30:00+01:00", "2023-02-01 23:45:00+01:00", "2023-02-02 00:00:00+01:00", "2023-02-02 00:15:00+01:00", "2023-02-02 00:30:00+01:00", "2023-02-02 00:45:00+01:00", "2023-02-02 01:00:00+01:00", "2023-02-02 01:15:00+01:00", "2023-02-02 01:30:00+01:00", "2023-02-02 01:45:00+01:00", "2023-02-02 02:00:00+01:00", "2023-02-02 02:15:00+01:00", "2023-02-02 02:30:00+01:00", "2023-02-02 02:45:00+01:00", "2023-02-02 03:00:00+01:00", "2023-02-02 03:15:00+01:00", "2023-02-02 03:30:00+01:00", "2023-02-02 03:45:00+01:00", "2023-02-02 04:00:00+01:00", "2023-02-02 04:15:00+01:00", "2023-02-02 04:30:00+01:00", "2023-02-02 04:45:00+01:00", "2023-02-02 05:00:00+01:00", "2023-02-02 05:15:00+01:00", "2023-02-02 05:30:00+01:00", "2023-02-02 05:45:00+01:00", "2023-02-02 06:00:00+01:00", "2023-02-02 06:15:00+01:00", "2023-02-02 06:30:00+01:00", "2023-02-02 06:45:00+01:00", "2023-02-02 07:00:00+01:00", "2023-02-02 07:15:00+01:00", "2023-02-02 07:30:00+01:00", "2023-02-02 07:45:00+01:00", "2023-02-02 08:00:00+01:00", "2023-02-02 08:15:00+01:00", "2023-02-02 08:30:00+01:00", "2023-02-02 08:45:00+01:00", "2023-02-02 09:00:00+01:00", "2023-02-02 09:15:00+01:00", "2023-02-02 09:30:00+01:00", "2023-02-02 09:45:00+01:00", "2023-02-02 10:00:00+01:00", "2023-02-02 10:15:00+01:00", "2023-02-02 10:30:00+01:00", "2023-02-02 10:45:00+01:00", "2023-02-02 11:00:00+01:00", "2023-02-02 11:15:00+01:00", "2023-02-02 11:30:00+01:00", "2023-02-02 11:45:00+01:00", "2023-02-02 12:00:00+01:00", "2023-02-02 12:15:00+01:00", "2023-02-02 12:30:00+01:00", "2023-02-02 12:45:00+01:00", "2023-02-02 13:00:00+01:00", "2023-02-02 13:15:00+01:00", "2023-02-02 13:30:00+01:00", "2023-02-02 13:45:00+01:00", "2023-02-02 14:00:00+01:00", "2023-02-02 14:15:00+01:00", "2023-02-02 14:30:00+01:00", "2023-02-02 14:45:00+01:00", "2023-02-02 15:00:00+01:00", "2023-02-02 15:15:00+01:00", "2023-02-02 15:30:00+01:00", "2023-02-02 15:45:00+01:00", "2023-02-02 16:00:00+01:00", "2023-02-02 16:15:00+01:00", "2023-02-02 16:30:00+01:00", "2023-02-02 16:45:00+01:00", "2023-02-02 17:00:00+01:00", "2023-02-02 17:15:00+01:00", "2023-02-02 17:30:00+01:00", "2023-02-02 17:45:00+01:00", "2023-02-02 18:00:00+01:00", "2023-02-02 18:15:00+01:00", "2023-02-02 18:30:00+01:00", "2023-02-02 18:45:00+01:00", "2023-02-02 19:00:00+01:00", "2023-02-02 19:15:00+01:00", "2023-02-02 19:30:00+01:00", "2023-02-02 19:45:00+01:00", "2023-02-02 20:00:00+01:00", "2023-02-02 20:15:00+01:00", "2023-02-02 20:30:00+01:00", "2023-02-02 20:45:00+01:00", "2023-02-02 21:00:00+01:00", "2023-02-02 21:15:00+01:00", "2023-02-02 21:30:00+01:00", "2023-02-02 21:45:00+01:00", "2023-02-02 22:00:00+01:00", "2023-02-02 22:15:00+01:00", "2023-02-02 22:30:00+01:00", "2023-02-02 22:45:00+01:00", "2023-02-02 23:00:00+01:00", "2023-02-02 23:15:00+01:00", "2023-02-02 23:30:00+01:00", "2023-02-02 23:45:00+01:00", "2023-02-03 00:00:00+01:00", "2023-02-03 00:15:00+01:00", "2023-02-03 00:30:00+01:00", "2023-02-03 00:45:00+01:00", "2023-02-03 01:00:00+01:00", "2023-02-03 01:15:00+01:00", "2023-02-03 01:30:00+01:00", "2023-02-03 01:45:00+01:00", "2023-02-03 02:00:00+01:00", "2023-02-03 02:15:00+01:00", "2023-02-03 02:30:00+01:00", "2023-02-03 02:45:00+01:00", "2023-02-03 03:00:00+01:00", "2023-02-03 03:15:00+01:00", "2023-02-03 03:30:00+01:00", "2023-02-03 03:45:00+01:00", "2023-02-03 04:00:00+01:00", "2023-02-03 04:15:00+01:00", "2023-02-03 04:30:00+01:00", "2023-02-03 04:45:00+01:00", "2023-02-03 05:00:00+01:00", "2023-02-03 05:15:00+01:00", "2023-02-03 05:30:00+01:00", "2023-02-03 05:45:00+01:00", "2023-02-03 06:00:00+01:00", "2023-02-03 06:15:00+01:00", "2023-02-03 06:30:00+01:00", "2023-02-03 06:45:00+01:00", "2023-02-03 07:00:00+01:00", "2023-02-03 07:15:00+01:00", "2023-02-03 07:30:00+01:00", "2023-02-03 07:45:00+01:00", "2023-02-03 08:00:00+01:00", "2023-02-03 08:15:00+01:00", "2023-02-03 08:30:00+01:00", "2023-02-03 08:45:00+01:00", "2023-02-03 09:00:00+01:00", "2023-02-03 09:15:00+01:00", "2023-02-03 09:30:00+01:00", "2023-02-03 09:45:00+01:00", "2023-02-03 10:00:00+01:00", "2023-02-03 10:15:00+01:00", "2023-02-03 10:30:00+01:00", "2023-02-03 10:45:00+01:00", "2023-02-03 11:00:00+01:00", "2023-02-03 11:15:00+01:00", "2023-02-03 11:30:00+01:00", "2023-02-03 11:45:00+01:00", "2023-02-03 12:00:00+01:00", "2023-02-03 12:15:00+01:00", "2023-02-03 12:30:00+01:00", "2023-02-03 12:45:00+01:00", "2023-02-03 13:00:00+01:00", "2023-02-03 13:15:00+01:00", "2023-02-03 13:30:00+01:00", "2023-02-03 13:45:00+01:00", "2023-02-03 14:00:00+01:00", "2023-02-03 14:15:00+01:00", "2023-02-03 14:30:00+01:00", "2023-02-03 14:45:00+01:00", "2023-02-03 15:00:00+01:00", "2023-02-03 15:15:00+01:00", "2023-02-03 15:30:00+01:00", "2023-02-03 15:45:00+01:00", "2023-02-03 16:00:00+01:00", "2023-02-03 16:15:00+01:00", "2023-02-03 16:30:00+01:00", "2023-02-03 16:45:00+01:00", "2023-02-03 17:00:00+01:00", "2023-02-03 17:15:00+01:00", "2023-02-03 17:30:00+01:00", "2023-02-03 17:45:00+01:00", "2023-02-03 18:00:00+01:00", "2023-02-03 18:15:00+01:00", "2023-02-03 18:30:00+01:00", "2023-02-03 18:45:00+01:00", "2023-02-03 19:00:00+01:00", "2023-02-03 19:15:00+01:00", "2023-02-03 19:30:00+01:00", "2023-02-03 19:45:00+01:00", "2023-02-03 20:00:00+01:00", "2023-02-03 20:15:00+01:00", "2023-02-03 20:30:00+01:00", "2023-02-03 20:45:00+01:00", "2023-02-03 21:00:00+01:00", "2023-02-03 21:15:00+01:00", "2023-02-03 21:30:00+01:00", "2023-02-03 21:45:00+01:00", "2023-02-03 22:00:00+01:00", "2023-02-03 22:15:00+01:00", "2023-02-03 22:30:00+01:00", "2023-02-03 22:45:00+01:00", "2023-02-03 23:00:00+01:00", "2023-02-03 23:15:00+01:00", "2023-02-03 23:30:00+01:00", "2023-02-03 23:45:00+01:00", "2023-02-04 00:00:00+01:00", "2023-02-04 00:15:00+01:00", "2023-02-04 00:30:00+01:00", "2023-02-04 00:45:00+01:00", "2023-02-04 01:00:00+01:00", "2023-02-04 01:15:00+01:00", "2023-02-04 01:30:00+01:00", "2023-02-04 01:45:00+01:00", "2023-02-04 02:00:00+01:00", "2023-02-04 02:15:00+01:00", "2023-02-04 02:30:00+01:00", "2023-02-04 02:45:00+01:00", "2023-02-04 03:00:00+01:00", "2023-02-04 03:15:00+01:00", "2023-02-04 03:30:00+01:00", "2023-02-04 03:45:00+01:00", "2023-02-04 04:00:00+01:00", "2023-02-04 04:15:00+01:00", "2023-02-04 04:30:00+01:00", "2023-02-04 04:45:00+01:00", "2023-02-04 05:00:00+01:00", "2023-02-04 05:15:00+01:00", "2023-02-04 05:30:00+01:00", "2023-02-04 05:45:00+01:00", "2023-02-04 06:00:00+01:00", "2023-02-04 06:15:00+01:00", "2023-02-04 06:30:00+01:00", "2023-02-04 06:45:00+01:00", "2023-02-04 07:00:00+01:00", "2023-02-04 07:15:00+01:00", "2023-02-04 07:30:00+01:00", "2023-02-04 07:45:00+01:00", "2023-02-04 08:00:00+01:00", "2023-02-04 08:15:00+01:00", "2023-02-04 08:30:00+01:00", "2023-02-04 08:45:00+01:00", "2023-02-04 09:00:00+01:00", "2023-02-04 09:15:00+01:00", "2023-02-04 09:30:00+01:00", "2023-02-04 09:45:00+01:00", "2023-02-04 10:00:00+01:00", "2023-02-04 10:15:00+01:00", "2023-02-04 10:30:00+01:00", "2023-02-04 10:45:00+01:00", "2023-02-04 11:00:00+01:00", "2023-02-04 11:15:00+01:00", "2023-02-04 11:30:00+01:00", "2023-02-04 11:45:00+01:00", "2023-02-04 12:00:00+01:00", "2023-02-04 12:15:00+01:00", "2023-02-04 12:30:00+01:00", "2023-02-04 12:45:00+01:00", "2023-02-04 13:00:00+01:00", "2023-02-04 13:15:00+01:00", "2023-02-04 13:30:00+01:00", "2023-02-04 13:45:00+01:00", "2023-02-04 14:00:00+01:00", "2023-02-04 14:15:00+01:00", "2023-02-04 14:30:00+01:00", "2023-02-04 14:45:00+01:00", "2023-02-04 15:00:00+01:00", "2023-02-04 15:15:00+01:00", "2023-02-04 15:30:00+01:00", "2023-02-04 15:45:00+01:00", "2023-02-04 16:00:00+01:00", "2023-02-04 16:15:00+01:00", "2023-02-04 16:30:00+01:00", "2023-02-04 16:45:00+01:00", "2023-02-04 17:00:00+01:00", "2023-02-04 17:15:00+01:00", "2023-02-04 17:30:00+01:00", "2023-02-04 17:45:00+01:00", "2023-02-04 18:00:00+01:00", "2023-02-04 18:15:00+01:00", "2023-02-04 18:30:00+01:00", "2023-02-04 18:45:00+01:00", "2023-02-04 19:00:00+01:00", "2023-02-04 19:15:00+01:00", "2023-02-04 19:30:00+01:00", "2023-02-04 19:45:00+01:00", "2023-02-04 20:00:00+01:00", "2023-02-04 20:15:00+01:00", "2023-02-04 20:30:00+01:00", "2023-02-04 20:45:00+01:00", "2023-02-04 21:00:00+01:00", "2023-02-04 21:15:00+01:00", "2023-02-04 21:30:00+01:00", "2023-02-04 21:45:00+01:00", "2023-02-04 22:00:00+01:00", "2023-02-04 22:15:00+01:00", "2023-02-04 22:30:00+01:00", "2023-02-04 22:45:00+01:00", "2023-02-04 23:00:00+01:00", "2023-02-04 23:15:00+01:00", "2023-02-04 23:30:00+01:00", "2023-02-04 23:45:00+01:00", "2023-02-05 00:00:00+01:00", "2023-02-05 00:15:00+01:00", "2023-02-05 00:30:00+01:00", "2023-02-05 00:45:00+01:00", "2023-02-05 01:00:00+01:00", "2023-02-05 01:15:00+01:00", "2023-02-05 01:30:00+01:00", "2023-02-05 01:45:00+01:00", "2023-02-05 02:00:00+01:00", "2023-02-05 02:15:00+01:00", "2023-02-05 02:30:00+01:00", "2023-02-05 02:45:00+01:00", "2023-02-05 03:00:00+01:00", "2023-02-05 03:15:00+01:00", "2023-02-05 03:30:00+01:00", "2023-02-05 03:45:00+01:00", "2023-02-05 04:00:00+01:00", "2023-02-05 04:15:00+01:00", "2023-02-05 04:30:00+01:00", "2023-02-05 04:45:00+01:00", "2023-02-05 05:00:00+01:00", "2023-02-05 05:15:00+01:00", "2023-02-05 05:30:00+01:00", "2023-02-05 05:45:00+01:00", "2023-02-05 06:00:00+01:00", "2023-02-05 06:15:00+01:00", "2023-02-05 06:30:00+01:00", "2023-02-05 06:45:00+01:00", "2023-02-05 07:00:00+01:00", "2023-02-05 07:15:00+01:00", "2023-02-05 07:30:00+01:00", "2023-02-05 07:45:00+01:00", "2023-02-05 08:00:00+01:00", "2023-02-05 08:15:00+01:00", "2023-02-05 08:30:00+01:00", "2023-02-05 08:45:00+01:00", "2023-02-05 09:00:00+01:00", "2023-02-05 09:15:00+01:00", "2023-02-05 09:30:00+01:00", "2023-02-05 09:45:00+01:00", "2023-02-05 10:00:00+01:00", "2023-02-05 10:15:00+01:00", "2023-02-05 10:30:00+01:00", "2023-02-05 10:45:00+01:00", "2023-02-05 11:00:00+01:00", "2023-02-05 11:15:00+01:00", "2023-02-05 11:30:00+01:00", "2023-02-05 11:45:00+01:00", "2023-02-05 12:00:00+01:00", "2023-02-05 12:15:00+01:00", "2023-02-05 12:30:00+01:00", "2023-02-05 12:45:00+01:00", "2023-02-05 13:00:00+01:00", "2023-02-05 13:15:00+01:00", "2023-02-05 13:30:00+01:00", "2023-02-05 13:45:00+01:00", "2023-02-05 14:00:00+01:00", "2023-02-05 14:15:00+01:00", "2023-02-05 14:30:00+01:00", "2023-02-05 14:45:00+01:00", "2023-02-05 15:00:00+01:00", "2023-02-05 15:15:00+01:00", "2023-02-05 15:30:00+01:00", "2023-02-05 15:45:00+01:00", "2023-02-05 16:00:00+01:00", "2023-02-05 16:15:00+01:00", "2023-02-05 16:30:00+01:00", "2023-02-05 16:45:00+01:00", "2023-02-05 17:00:00+01:00", "2023-02-05 17:15:00+01:00", "2023-02-05 17:30:00+01:00", "2023-02-05 17:45:00+01:00", "2023-02-05 18:00:00+01:00", "2023-02-05 18:15:00+01:00", "2023-02-05 18:30:00+01:00", "2023-02-05 18:45:00+01:00", "2023-02-05 19:00:00+01:00", "2023-02-05 19:15:00+01:00", "2023-02-05 19:30:00+01:00", "2023-02-05 19:45:00+01:00", "2023-02-05 20:00:00+01:00", "2023-02-05 20:15:00+01:00", "2023-02-05 20:30:00+01:00", "2023-02-05 20:45:00+01:00", "2023-02-05 21:00:00+01:00", "2023-02-05 21:15:00+01:00", "2023-02-05 21:30:00+01:00", "2023-02-05 21:45:00+01:00", "2023-02-05 22:00:00+01:00", "2023-02-05 22:15:00+01:00", "2023-02-05 22:30:00+01:00", "2023-02-05 22:45:00+01:00", "2023-02-05 23:00:00+01:00", "2023-02-05 23:15:00+01:00", "2023-02-05 23:30:00+01:00", "2023-02-05 23:45:00+01:00", "2023-02-06 00:00:00+01:00", "2023-02-06 00:15:00+01:00", "2023-02-06 00:30:00+01:00", "2023-02-06 00:45:00+01:00", "2023-02-06 01:00:00+01:00", "2023-02-06 01:15:00+01:00", "2023-02-06 01:30:00+01:00", "2023-02-06 01:45:00+01:00", "2023-02-06 02:00:00+01:00", "2023-02-06 02:15:00+01:00", "2023-02-06 02:30:00+01:00", "2023-02-06 02:45:00+01:00", "2023-02-06 03:00:00+01:00", "2023-02-06 03:15:00+01:00", "2023-02-06 03:30:00+01:00", "2023-02-06 03:45:00+01:00", "2023-02-06 04:00:00+01:00", "2023-02-06 04:15:00+01:00", "2023-02-06 04:30:00+01:00", "2023-02-06 04:45:00+01:00", "2023-02-06 05:00:00+01:00", "2023-02-06 05:15:00+01:00", "2023-02-06 05:30:00+01:00", "2023-02-06 05:45:00+01:00", "2023-02-06 06:00:00+01:00", "2023-02-06 06:15:00+01:00", "2023-02-06 06:30:00+01:00", "2023-02-06 06:45:00+01:00", "2023-02-06 07:00:00+01:00", "2023-02-06 07:15:00+01:00", "2023-02-06 07:30:00+01:00", "2023-02-06 07:45:00+01:00", "2023-02-06 08:00:00+01:00", "2023-02-06 08:15:00+01:00", "2023-02-06 08:30:00+01:00", "2023-02-06 08:45:00+01:00", "2023-02-06 09:00:00+01:00", "2023-02-06 09:15:00+01:00", "2023-02-06 09:30:00+01:00", "2023-02-06 09:45:00+01:00", "2023-02-06 10:00:00+01:00", "2023-02-06 10:15:00+01:00", "2023-02-06 10:30:00+01:00", "2023-02-06 10:45:00+01:00", "2023-02-06 11:00:00+01:00", "2023-02-06 11:15:00+01:00", "2023-02-06 11:30:00+01:00", "2023-02-06 11:45:00+01:00" ], "y": [ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75 ] }, { "line": { "color": "rgba(55, 128, 191, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "Tsink (VDG)", "text": "", "type": "scatter", "x": [ "2023-01-01 00:00:00+01:00", "2023-01-01 00:15:00+01:00", "2023-01-01 00:30:00+01:00", "2023-01-01 00:45:00+01:00", "2023-01-01 01:00:00+01:00", "2023-01-01 01:15:00+01:00", "2023-01-01 01:30:00+01:00", "2023-01-01 01:45:00+01:00", "2023-01-01 02:00:00+01:00", "2023-01-01 02:15:00+01:00", "2023-01-01 02:30:00+01:00", "2023-01-01 02:45:00+01:00", "2023-01-01 03:00:00+01:00", "2023-01-01 03:15:00+01:00", "2023-01-01 03:30:00+01:00", "2023-01-01 03:45:00+01:00", "2023-01-01 04:00:00+01:00", "2023-01-01 04:15:00+01:00", "2023-01-01 04:30:00+01:00", "2023-01-01 04:45:00+01:00", "2023-01-01 05:00:00+01:00", "2023-01-01 05:15:00+01:00", "2023-01-01 05:30:00+01:00", "2023-01-01 05:45:00+01:00", "2023-01-01 06:00:00+01:00", "2023-01-01 06:15:00+01:00", "2023-01-01 06:30:00+01:00", "2023-01-01 06:45:00+01:00", "2023-01-01 07:00:00+01:00", "2023-01-01 07:15:00+01:00", "2023-01-01 07:30:00+01:00", "2023-01-01 07:45:00+01:00", "2023-01-01 08:00:00+01:00", "2023-01-01 08:15:00+01:00", "2023-01-01 08:30:00+01:00", "2023-01-01 08:45:00+01:00", "2023-01-01 09:00:00+01:00", "2023-01-01 09:15:00+01:00", "2023-01-01 09:30:00+01:00", "2023-01-01 09:45:00+01:00", "2023-01-01 10:00:00+01:00", "2023-01-01 10:15:00+01:00", "2023-01-01 10:30:00+01:00", "2023-01-01 10:45:00+01:00", "2023-01-01 11:00:00+01:00", "2023-01-01 11:15:00+01:00", "2023-01-01 11:30:00+01:00", "2023-01-01 11:45:00+01:00", "2023-01-01 12:00:00+01:00", "2023-01-01 12:15:00+01:00", "2023-01-01 12:30:00+01:00", "2023-01-01 12:45:00+01:00", "2023-01-01 13:00:00+01:00", "2023-01-01 13:15:00+01:00", "2023-01-01 13:30:00+01:00", "2023-01-01 13:45:00+01:00", "2023-01-01 14:00:00+01:00", "2023-01-01 14:15:00+01:00", "2023-01-01 14:30:00+01:00", "2023-01-01 14:45:00+01:00", "2023-01-01 15:00:00+01:00", "2023-01-01 15:15:00+01:00", "2023-01-01 15:30:00+01:00", "2023-01-01 15:45:00+01:00", "2023-01-01 16:00:00+01:00", "2023-01-01 16:15:00+01:00", "2023-01-01 16:30:00+01:00", "2023-01-01 16:45:00+01:00", "2023-01-01 17:00:00+01:00", "2023-01-01 17:15:00+01:00", "2023-01-01 17:30:00+01:00", "2023-01-01 17:45:00+01:00", "2023-01-01 18:00:00+01:00", "2023-01-01 18:15:00+01:00", "2023-01-01 18:30:00+01:00", "2023-01-01 18:45:00+01:00", "2023-01-01 19:00:00+01:00", "2023-01-01 19:15:00+01:00", "2023-01-01 19:30:00+01:00", "2023-01-01 19:45:00+01:00", "2023-01-01 20:00:00+01:00", "2023-01-01 20:15:00+01:00", "2023-01-01 20:30:00+01:00", "2023-01-01 20:45:00+01:00", "2023-01-01 21:00:00+01:00", "2023-01-01 21:15:00+01:00", "2023-01-01 21:30:00+01:00", "2023-01-01 21:45:00+01:00", "2023-01-01 22:00:00+01:00", "2023-01-01 22:15:00+01:00", "2023-01-01 22:30:00+01:00", "2023-01-01 22:45:00+01:00", "2023-01-01 23:00:00+01:00", "2023-01-01 23:15:00+01:00", "2023-01-01 23:30:00+01:00", "2023-01-01 23:45:00+01:00", "2023-01-02 00:00:00+01:00", "2023-01-02 00:15:00+01:00", "2023-01-02 00:30:00+01:00", "2023-01-02 00:45:00+01:00", "2023-01-02 01:00:00+01:00", "2023-01-02 01:15:00+01:00", "2023-01-02 01:30:00+01:00", "2023-01-02 01:45:00+01:00", "2023-01-02 02:00:00+01:00", "2023-01-02 02:15:00+01:00", "2023-01-02 02:30:00+01:00", "2023-01-02 02:45:00+01:00", "2023-01-02 03:00:00+01:00", "2023-01-02 03:15:00+01:00", "2023-01-02 03:30:00+01:00", "2023-01-02 03:45:00+01:00", "2023-01-02 04:00:00+01:00", "2023-01-02 04:15:00+01:00", "2023-01-02 04:30:00+01:00", "2023-01-02 04:45:00+01:00", "2023-01-02 05:00:00+01:00", "2023-01-02 05:15:00+01:00", "2023-01-02 05:30:00+01:00", "2023-01-02 05:45:00+01:00", "2023-01-02 06:00:00+01:00", "2023-01-02 06:15:00+01:00", "2023-01-02 06:30:00+01:00", "2023-01-02 06:45:00+01:00", "2023-01-02 07:00:00+01:00", "2023-01-02 07:15:00+01:00", "2023-01-02 07:30:00+01:00", "2023-01-02 07:45:00+01:00", "2023-01-02 08:00:00+01:00", "2023-01-02 08:15:00+01:00", "2023-01-02 08:30:00+01:00", "2023-01-02 08:45:00+01:00", "2023-01-02 09:00:00+01:00", "2023-01-02 09:15:00+01:00", "2023-01-02 09:30:00+01:00", "2023-01-02 09:45:00+01:00", "2023-01-02 10:00:00+01:00", "2023-01-02 10:15:00+01:00", "2023-01-02 10:30:00+01:00", "2023-01-02 10:45:00+01:00", "2023-01-02 11:00:00+01:00", "2023-01-02 11:15:00+01:00", "2023-01-02 11:30:00+01:00", "2023-01-02 11:45:00+01:00", "2023-01-02 12:00:00+01:00", "2023-01-02 12:15:00+01:00", "2023-01-02 12:30:00+01:00", "2023-01-02 12:45:00+01:00", "2023-01-02 13:00:00+01:00", "2023-01-02 13:15:00+01:00", "2023-01-02 13:30:00+01:00", "2023-01-02 13:45:00+01:00", "2023-01-02 14:00:00+01:00", "2023-01-02 14:15:00+01:00", "2023-01-02 14:30:00+01:00", "2023-01-02 14:45:00+01:00", "2023-01-02 15:00:00+01:00", "2023-01-02 15:15:00+01:00", "2023-01-02 15:30:00+01:00", "2023-01-02 15:45:00+01:00", "2023-01-02 16:00:00+01:00", "2023-01-02 16:15:00+01:00", "2023-01-02 16:30:00+01:00", "2023-01-02 16:45:00+01:00", "2023-01-02 17:00:00+01:00", "2023-01-02 17:15:00+01:00", "2023-01-02 17:30:00+01:00", "2023-01-02 17:45:00+01:00", "2023-01-02 18:00:00+01:00", "2023-01-02 18:15:00+01:00", "2023-01-02 18:30:00+01:00", "2023-01-02 18:45:00+01:00", "2023-01-02 19:00:00+01:00", "2023-01-02 19:15:00+01:00", "2023-01-02 19:30:00+01:00", "2023-01-02 19:45:00+01:00", "2023-01-02 20:00:00+01:00", "2023-01-02 20:15:00+01:00", "2023-01-02 20:30:00+01:00", "2023-01-02 20:45:00+01:00", "2023-01-02 21:00:00+01:00", "2023-01-02 21:15:00+01:00", "2023-01-02 21:30:00+01:00", "2023-01-02 21:45:00+01:00", "2023-01-02 22:00:00+01:00", "2023-01-02 22:15:00+01:00", "2023-01-02 22:30:00+01:00", "2023-01-02 22:45:00+01:00", "2023-01-02 23:00:00+01:00", "2023-01-02 23:15:00+01:00", "2023-01-02 23:30:00+01:00", "2023-01-02 23:45:00+01:00", "2023-01-03 00:00:00+01:00", "2023-01-03 00:15:00+01:00", "2023-01-03 00:30:00+01:00", "2023-01-03 00:45:00+01:00", "2023-01-03 01:00:00+01:00", "2023-01-03 01:15:00+01:00", "2023-01-03 01:30:00+01:00", "2023-01-03 01:45:00+01:00", "2023-01-03 02:00:00+01:00", "2023-01-03 02:15:00+01:00", "2023-01-03 02:30:00+01:00", "2023-01-03 02:45:00+01:00", "2023-01-03 03:00:00+01:00", "2023-01-03 03:15:00+01:00", "2023-01-03 03:30:00+01:00", "2023-01-03 03:45:00+01:00", "2023-01-03 04:00:00+01:00", "2023-01-03 04:15:00+01:00", "2023-01-03 04:30:00+01:00", "2023-01-03 04:45:00+01:00", "2023-01-03 05:00:00+01:00", "2023-01-03 05:15:00+01:00", "2023-01-03 05:30:00+01:00", "2023-01-03 05:45:00+01:00", "2023-01-03 06:00:00+01:00", "2023-01-03 06:15:00+01:00", "2023-01-03 06:30:00+01:00", "2023-01-03 06:45:00+01:00", "2023-01-03 07:00:00+01:00", "2023-01-03 07:15:00+01:00", "2023-01-03 07:30:00+01:00", "2023-01-03 07:45:00+01:00", "2023-01-03 08:00:00+01:00", "2023-01-03 08:15:00+01:00", "2023-01-03 08:30:00+01:00", "2023-01-03 08:45:00+01:00", "2023-01-03 09:00:00+01:00", "2023-01-03 09:15:00+01:00", "2023-01-03 09:30:00+01:00", "2023-01-03 09:45:00+01:00", "2023-01-03 10:00:00+01:00", "2023-01-03 10:15:00+01:00", "2023-01-03 10:30:00+01:00", "2023-01-03 10:45:00+01:00", "2023-01-03 11:00:00+01:00", "2023-01-03 11:15:00+01:00", "2023-01-03 11:30:00+01:00", "2023-01-03 11:45:00+01:00", "2023-01-03 12:00:00+01:00", "2023-01-03 12:15:00+01:00", "2023-01-03 12:30:00+01:00", "2023-01-03 12:45:00+01:00", "2023-01-03 13:00:00+01:00", "2023-01-03 13:15:00+01:00", "2023-01-03 13:30:00+01:00", "2023-01-03 13:45:00+01:00", "2023-01-03 14:00:00+01:00", "2023-01-03 14:15:00+01:00", "2023-01-03 14:30:00+01:00", "2023-01-03 14:45:00+01:00", "2023-01-03 15:00:00+01:00", "2023-01-03 15:15:00+01:00", "2023-01-03 15:30:00+01:00", "2023-01-03 15:45:00+01:00", "2023-01-03 16:00:00+01:00", "2023-01-03 16:15:00+01:00", "2023-01-03 16:30:00+01:00", "2023-01-03 16:45:00+01:00", "2023-01-03 17:00:00+01:00", "2023-01-03 17:15:00+01:00", "2023-01-03 17:30:00+01:00", "2023-01-03 17:45:00+01:00", "2023-01-03 18:00:00+01:00", "2023-01-03 18:15:00+01:00", "2023-01-03 18:30:00+01:00", "2023-01-03 18:45:00+01:00", "2023-01-03 19:00:00+01:00", "2023-01-03 19:15:00+01:00", "2023-01-03 19:30:00+01:00", "2023-01-03 19:45:00+01:00", "2023-01-03 20:00:00+01:00", "2023-01-03 20:15:00+01:00", "2023-01-03 20:30:00+01:00", "2023-01-03 20:45:00+01:00", "2023-01-03 21:00:00+01:00", "2023-01-03 21:15:00+01:00", "2023-01-03 21:30:00+01:00", "2023-01-03 21:45:00+01:00", "2023-01-03 22:00:00+01:00", "2023-01-03 22:15:00+01:00", "2023-01-03 22:30:00+01:00", "2023-01-03 22:45:00+01:00", "2023-01-03 23:00:00+01:00", "2023-01-03 23:15:00+01:00", "2023-01-03 23:30:00+01:00", "2023-01-03 23:45:00+01:00", "2023-01-04 00:00:00+01:00", "2023-01-04 00:15:00+01:00", "2023-01-04 00:30:00+01:00", "2023-01-04 00:45:00+01:00", "2023-01-04 01:00:00+01:00", "2023-01-04 01:15:00+01:00", "2023-01-04 01:30:00+01:00", "2023-01-04 01:45:00+01:00", "2023-01-04 02:00:00+01:00", "2023-01-04 02:15:00+01:00", "2023-01-04 02:30:00+01:00", "2023-01-04 02:45:00+01:00", "2023-01-04 03:00:00+01:00", "2023-01-04 03:15:00+01:00", "2023-01-04 03:30:00+01:00", "2023-01-04 03:45:00+01:00", "2023-01-04 04:00:00+01:00", "2023-01-04 04:15:00+01:00", "2023-01-04 04:30:00+01:00", "2023-01-04 04:45:00+01:00", "2023-01-04 05:00:00+01:00", "2023-01-04 05:15:00+01:00", "2023-01-04 05:30:00+01:00", "2023-01-04 05:45:00+01:00", "2023-01-04 06:00:00+01:00", "2023-01-04 06:15:00+01:00", "2023-01-04 06:30:00+01:00", "2023-01-04 06:45:00+01:00", "2023-01-04 07:00:00+01:00", "2023-01-04 07:15:00+01:00", "2023-01-04 07:30:00+01:00", "2023-01-04 07:45:00+01:00", "2023-01-04 08:00:00+01:00", "2023-01-04 08:15:00+01:00", "2023-01-04 08:30:00+01:00", "2023-01-04 08:45:00+01:00", "2023-01-04 09:00:00+01:00", "2023-01-04 09:15:00+01:00", "2023-01-04 09:30:00+01:00", "2023-01-04 09:45:00+01:00", "2023-01-04 10:00:00+01:00", "2023-01-04 10:15:00+01:00", "2023-01-04 10:30:00+01:00", "2023-01-04 10:45:00+01:00", "2023-01-04 11:00:00+01:00", "2023-01-04 11:15:00+01:00", "2023-01-04 11:30:00+01:00", "2023-01-04 11:45:00+01:00", "2023-01-04 12:00:00+01:00", "2023-01-04 12:15:00+01:00", "2023-01-04 12:30:00+01:00", "2023-01-04 12:45:00+01:00", "2023-01-04 13:00:00+01:00", "2023-01-04 13:15:00+01:00", "2023-01-04 13:30:00+01:00", "2023-01-04 13:45:00+01:00", "2023-01-04 14:00:00+01:00", "2023-01-04 14:15:00+01:00", "2023-01-04 14:30:00+01:00", "2023-01-04 14:45:00+01:00", "2023-01-04 15:00:00+01:00", "2023-01-04 15:15:00+01:00", "2023-01-04 15:30:00+01:00", "2023-01-04 15:45:00+01:00", "2023-01-04 16:00:00+01:00", "2023-01-04 16:15:00+01:00", "2023-01-04 16:30:00+01:00", "2023-01-04 16:45:00+01:00", "2023-01-04 17:00:00+01:00", "2023-01-04 17:15:00+01:00", "2023-01-04 17:30:00+01:00", "2023-01-04 17:45:00+01:00", "2023-01-04 18:00:00+01:00", "2023-01-04 18:15:00+01:00", "2023-01-04 18:30:00+01:00", "2023-01-04 18:45:00+01:00", "2023-01-04 19:00:00+01:00", "2023-01-04 19:15:00+01:00", "2023-01-04 19:30:00+01:00", "2023-01-04 19:45:00+01:00", "2023-01-04 20:00:00+01:00", "2023-01-04 20:15:00+01:00", "2023-01-04 20:30:00+01:00", "2023-01-04 20:45:00+01:00", "2023-01-04 21:00:00+01:00", "2023-01-04 21:15:00+01:00", "2023-01-04 21:30:00+01:00", "2023-01-04 21:45:00+01:00", "2023-01-04 22:00:00+01:00", "2023-01-04 22:15:00+01:00", "2023-01-04 22:30:00+01:00", "2023-01-04 22:45:00+01:00", "2023-01-04 23:00:00+01:00", "2023-01-04 23:15:00+01:00", "2023-01-04 23:30:00+01:00", "2023-01-04 23:45:00+01:00", "2023-01-05 00:00:00+01:00", "2023-01-05 00:15:00+01:00", "2023-01-05 00:30:00+01:00", "2023-01-05 00:45:00+01:00", "2023-01-05 01:00:00+01:00", "2023-01-05 01:15:00+01:00", "2023-01-05 01:30:00+01:00", "2023-01-05 01:45:00+01:00", "2023-01-05 02:00:00+01:00", "2023-01-05 02:15:00+01:00", "2023-01-05 02:30:00+01:00", "2023-01-05 02:45:00+01:00", "2023-01-05 03:00:00+01:00", "2023-01-05 03:15:00+01:00", "2023-01-05 03:30:00+01:00", "2023-01-05 03:45:00+01:00", "2023-01-05 04:00:00+01:00", "2023-01-05 04:15:00+01:00", "2023-01-05 04:30:00+01:00", "2023-01-05 04:45:00+01:00", "2023-01-05 05:00:00+01:00", "2023-01-05 05:15:00+01:00", "2023-01-05 05:30:00+01:00", "2023-01-05 05:45:00+01:00", "2023-01-05 06:00:00+01:00", "2023-01-05 06:15:00+01:00", "2023-01-05 06:30:00+01:00", "2023-01-05 06:45:00+01:00", "2023-01-05 07:00:00+01:00", "2023-01-05 07:15:00+01:00", "2023-01-05 07:30:00+01:00", "2023-01-05 07:45:00+01:00", "2023-01-05 08:00:00+01:00", "2023-01-05 08:15:00+01:00", "2023-01-05 08:30:00+01:00", "2023-01-05 08:45:00+01:00", "2023-01-05 09:00:00+01:00", "2023-01-05 09:15:00+01:00", "2023-01-05 09:30:00+01:00", "2023-01-05 09:45:00+01:00", "2023-01-05 10:00:00+01:00", "2023-01-05 10:15:00+01:00", "2023-01-05 10:30:00+01:00", "2023-01-05 10:45:00+01:00", "2023-01-05 11:00:00+01:00", "2023-01-05 11:15:00+01:00", "2023-01-05 11:30:00+01:00", "2023-01-05 11:45:00+01:00", "2023-01-05 12:00:00+01:00", "2023-01-05 12:15:00+01:00", "2023-01-05 12:30:00+01:00", "2023-01-05 12:45:00+01:00", "2023-01-05 13:00:00+01:00", "2023-01-05 13:15:00+01:00", "2023-01-05 13:30:00+01:00", "2023-01-05 13:45:00+01:00", "2023-01-05 14:00:00+01:00", "2023-01-05 14:15:00+01:00", "2023-01-05 14:30:00+01:00", "2023-01-05 14:45:00+01:00", "2023-01-05 15:00:00+01:00", "2023-01-05 15:15:00+01:00", "2023-01-05 15:30:00+01:00", "2023-01-05 15:45:00+01:00", "2023-01-05 16:00:00+01:00", "2023-01-05 16:15:00+01:00", "2023-01-05 16:30:00+01:00", "2023-01-05 16:45:00+01:00", "2023-01-05 17:00:00+01:00", "2023-01-05 17:15:00+01:00", "2023-01-05 17:30:00+01:00", "2023-01-05 17:45:00+01:00", "2023-01-05 18:00:00+01:00", "2023-01-05 18:15:00+01:00", "2023-01-05 18:30:00+01:00", "2023-01-05 18:45:00+01:00", "2023-01-05 19:00:00+01:00", "2023-01-05 19:15:00+01:00", "2023-01-05 19:30:00+01:00", "2023-01-05 19:45:00+01:00", "2023-01-05 20:00:00+01:00", "2023-01-05 20:15:00+01:00", "2023-01-05 20:30:00+01:00", "2023-01-05 20:45:00+01:00", "2023-01-05 21:00:00+01:00", "2023-01-05 21:15:00+01:00", "2023-01-05 21:30:00+01:00", "2023-01-05 21:45:00+01:00", "2023-01-05 22:00:00+01:00", "2023-01-05 22:15:00+01:00", "2023-01-05 22:30:00+01:00", "2023-01-05 22:45:00+01:00", "2023-01-05 23:00:00+01:00", "2023-01-05 23:15:00+01:00", "2023-01-05 23:30:00+01:00", "2023-01-05 23:45:00+01:00", "2023-01-06 00:00:00+01:00", "2023-01-06 00:15:00+01:00", "2023-01-06 00:30:00+01:00", "2023-01-06 00:45:00+01:00", "2023-01-06 01:00:00+01:00", "2023-01-06 01:15:00+01:00", "2023-01-06 01:30:00+01:00", "2023-01-06 01:45:00+01:00", "2023-01-06 02:00:00+01:00", "2023-01-06 02:15:00+01:00", "2023-01-06 02:30:00+01:00", "2023-01-06 02:45:00+01:00", "2023-01-06 03:00:00+01:00", "2023-01-06 03:15:00+01:00", "2023-01-06 03:30:00+01:00", "2023-01-06 03:45:00+01:00", "2023-01-06 04:00:00+01:00", "2023-01-06 04:15:00+01:00", "2023-01-06 04:30:00+01:00", "2023-01-06 04:45:00+01:00", "2023-01-06 05:00:00+01:00", "2023-01-06 05:15:00+01:00", "2023-01-06 05:30:00+01:00", "2023-01-06 05:45:00+01:00", "2023-01-06 06:00:00+01:00", "2023-01-06 06:15:00+01:00", "2023-01-06 06:30:00+01:00", "2023-01-06 06:45:00+01:00", "2023-01-06 07:00:00+01:00", "2023-01-06 07:15:00+01:00", "2023-01-06 07:30:00+01:00", "2023-01-06 07:45:00+01:00", "2023-01-06 08:00:00+01:00", "2023-01-06 08:15:00+01:00", "2023-01-06 08:30:00+01:00", "2023-01-06 08:45:00+01:00", "2023-01-06 09:00:00+01:00", "2023-01-06 09:15:00+01:00", "2023-01-06 09:30:00+01:00", "2023-01-06 09:45:00+01:00", "2023-01-06 10:00:00+01:00", "2023-01-06 10:15:00+01:00", "2023-01-06 10:30:00+01:00", "2023-01-06 10:45:00+01:00", "2023-01-06 11:00:00+01:00", "2023-01-06 11:15:00+01:00", "2023-01-06 11:30:00+01:00", "2023-01-06 11:45:00+01:00", "2023-01-06 12:00:00+01:00", "2023-01-06 12:15:00+01:00", "2023-01-06 12:30:00+01:00", "2023-01-06 12:45:00+01:00", "2023-01-06 13:00:00+01:00", "2023-01-06 13:15:00+01:00", "2023-01-06 13:30:00+01:00", "2023-01-06 13:45:00+01:00", "2023-01-06 14:00:00+01:00", "2023-01-06 14:15:00+01:00", "2023-01-06 14:30:00+01:00", "2023-01-06 14:45:00+01:00", "2023-01-06 15:00:00+01:00", "2023-01-06 15:15:00+01:00", "2023-01-06 15:30:00+01:00", "2023-01-06 15:45:00+01:00", "2023-01-06 16:00:00+01:00", "2023-01-06 16:15:00+01:00", "2023-01-06 16:30:00+01:00", "2023-01-06 16:45:00+01:00", "2023-01-06 17:00:00+01:00", "2023-01-06 17:15:00+01:00", "2023-01-06 17:30:00+01:00", "2023-01-06 17:45:00+01:00", "2023-01-06 18:00:00+01:00", "2023-01-06 18:15:00+01:00", "2023-01-06 18:30:00+01:00", "2023-01-06 18:45:00+01:00", "2023-01-06 19:00:00+01:00", "2023-01-06 19:15:00+01:00", "2023-01-06 19:30:00+01:00", "2023-01-06 19:45:00+01:00", "2023-01-06 20:00:00+01:00", "2023-01-06 20:15:00+01:00", "2023-01-06 20:30:00+01:00", "2023-01-06 20:45:00+01:00", "2023-01-06 21:00:00+01:00", "2023-01-06 21:15:00+01:00", "2023-01-06 21:30:00+01:00", "2023-01-06 21:45:00+01:00", "2023-01-06 22:00:00+01:00", "2023-01-06 22:15:00+01:00", "2023-01-06 22:30:00+01:00", "2023-01-06 22:45:00+01:00", "2023-01-06 23:00:00+01:00", "2023-01-06 23:15:00+01:00", "2023-01-06 23:30:00+01:00", "2023-01-06 23:45:00+01:00", "2023-01-07 00:00:00+01:00", "2023-01-07 00:15:00+01:00", "2023-01-07 00:30:00+01:00", "2023-01-07 00:45:00+01:00", "2023-01-07 01:00:00+01:00", "2023-01-07 01:15:00+01:00", "2023-01-07 01:30:00+01:00", "2023-01-07 01:45:00+01:00", "2023-01-07 02:00:00+01:00", "2023-01-07 02:15:00+01:00", "2023-01-07 02:30:00+01:00", "2023-01-07 02:45:00+01:00", "2023-01-07 03:00:00+01:00", "2023-01-07 03:15:00+01:00", "2023-01-07 03:30:00+01:00", "2023-01-07 03:45:00+01:00", "2023-01-07 04:00:00+01:00", "2023-01-07 04:15:00+01:00", "2023-01-07 04:30:00+01:00", "2023-01-07 04:45:00+01:00", "2023-01-07 05:00:00+01:00", "2023-01-07 05:15:00+01:00", "2023-01-07 05:30:00+01:00", "2023-01-07 05:45:00+01:00", "2023-01-07 06:00:00+01:00", "2023-01-07 06:15:00+01:00", "2023-01-07 06:30:00+01:00", "2023-01-07 06:45:00+01:00", "2023-01-07 07:00:00+01:00", "2023-01-07 07:15:00+01:00", "2023-01-07 07:30:00+01:00", "2023-01-07 07:45:00+01:00", "2023-01-07 08:00:00+01:00", "2023-01-07 08:15:00+01:00", "2023-01-07 08:30:00+01:00", "2023-01-07 08:45:00+01:00", "2023-01-07 09:00:00+01:00", "2023-01-07 09:15:00+01:00", "2023-01-07 09:30:00+01:00", "2023-01-07 09:45:00+01:00", "2023-01-07 10:00:00+01:00", "2023-01-07 10:15:00+01:00", "2023-01-07 10:30:00+01:00", "2023-01-07 10:45:00+01:00", "2023-01-07 11:00:00+01:00", "2023-01-07 11:15:00+01:00", "2023-01-07 11:30:00+01:00", "2023-01-07 11:45:00+01:00", "2023-01-07 12:00:00+01:00", "2023-01-07 12:15:00+01:00", "2023-01-07 12:30:00+01:00", "2023-01-07 12:45:00+01:00", "2023-01-07 13:00:00+01:00", "2023-01-07 13:15:00+01:00", "2023-01-07 13:30:00+01:00", "2023-01-07 13:45:00+01:00", "2023-01-07 14:00:00+01:00", "2023-01-07 14:15:00+01:00", "2023-01-07 14:30:00+01:00", "2023-01-07 14:45:00+01:00", "2023-01-07 15:00:00+01:00", "2023-01-07 15:15:00+01:00", "2023-01-07 15:30:00+01:00", "2023-01-07 15:45:00+01:00", "2023-01-07 16:00:00+01:00", "2023-01-07 16:15:00+01:00", "2023-01-07 16:30:00+01:00", "2023-01-07 16:45:00+01:00", "2023-01-07 17:00:00+01:00", "2023-01-07 17:15:00+01:00", "2023-01-07 17:30:00+01:00", "2023-01-07 17:45:00+01:00", "2023-01-07 18:00:00+01:00", "2023-01-07 18:15:00+01:00", "2023-01-07 18:30:00+01:00", "2023-01-07 18:45:00+01:00", "2023-01-07 19:00:00+01:00", "2023-01-07 19:15:00+01:00", "2023-01-07 19:30:00+01:00", "2023-01-07 19:45:00+01:00", "2023-01-07 20:00:00+01:00", "2023-01-07 20:15:00+01:00", "2023-01-07 20:30:00+01:00", "2023-01-07 20:45:00+01:00", "2023-01-07 21:00:00+01:00", "2023-01-07 21:15:00+01:00", "2023-01-07 21:30:00+01:00", "2023-01-07 21:45:00+01:00", "2023-01-07 22:00:00+01:00", "2023-01-07 22:15:00+01:00", "2023-01-07 22:30:00+01:00", "2023-01-07 22:45:00+01:00", "2023-01-07 23:00:00+01:00", "2023-01-07 23:15:00+01:00", "2023-01-07 23:30:00+01:00", "2023-01-07 23:45:00+01:00", "2023-01-08 00:00:00+01:00", "2023-01-08 00:15:00+01:00", "2023-01-08 00:30:00+01:00", "2023-01-08 00:45:00+01:00", "2023-01-08 01:00:00+01:00", "2023-01-08 01:15:00+01:00", "2023-01-08 01:30:00+01:00", "2023-01-08 01:45:00+01:00", "2023-01-08 02:00:00+01:00", "2023-01-08 02:15:00+01:00", "2023-01-08 02:30:00+01:00", "2023-01-08 02:45:00+01:00", "2023-01-08 03:00:00+01:00", "2023-01-08 03:15:00+01:00", "2023-01-08 03:30:00+01:00", "2023-01-08 03:45:00+01:00", "2023-01-08 04:00:00+01:00", "2023-01-08 04:15:00+01:00", "2023-01-08 04:30:00+01:00", "2023-01-08 04:45:00+01:00", "2023-01-08 05:00:00+01:00", "2023-01-08 05:15:00+01:00", "2023-01-08 05:30:00+01:00", "2023-01-08 05:45:00+01:00", "2023-01-08 06:00:00+01:00", "2023-01-08 06:15:00+01:00", "2023-01-08 06:30:00+01:00", "2023-01-08 06:45:00+01:00", "2023-01-08 07:00:00+01:00", "2023-01-08 07:15:00+01:00", "2023-01-08 07:30:00+01:00", "2023-01-08 07:45:00+01:00", "2023-01-08 08:00:00+01:00", "2023-01-08 08:15:00+01:00", "2023-01-08 08:30:00+01:00", "2023-01-08 08:45:00+01:00", "2023-01-08 09:00:00+01:00", "2023-01-08 09:15:00+01:00", "2023-01-08 09:30:00+01:00", "2023-01-08 09:45:00+01:00", "2023-01-08 10:00:00+01:00", "2023-01-08 10:15:00+01:00", "2023-01-08 10:30:00+01:00", "2023-01-08 10:45:00+01:00", "2023-01-08 11:00:00+01:00", "2023-01-08 11:15:00+01:00", "2023-01-08 11:30:00+01:00", "2023-01-08 11:45:00+01:00", "2023-01-08 12:00:00+01:00", "2023-01-08 12:15:00+01:00", "2023-01-08 12:30:00+01:00", "2023-01-08 12:45:00+01:00", "2023-01-08 13:00:00+01:00", "2023-01-08 13:15:00+01:00", "2023-01-08 13:30:00+01:00", "2023-01-08 13:45:00+01:00", "2023-01-08 14:00:00+01:00", "2023-01-08 14:15:00+01:00", "2023-01-08 14:30:00+01:00", "2023-01-08 14:45:00+01:00", "2023-01-08 15:00:00+01:00", "2023-01-08 15:15:00+01:00", "2023-01-08 15:30:00+01:00", "2023-01-08 15:45:00+01:00", "2023-01-08 16:00:00+01:00", "2023-01-08 16:15:00+01:00", "2023-01-08 16:30:00+01:00", "2023-01-08 16:45:00+01:00", "2023-01-08 17:00:00+01:00", "2023-01-08 17:15:00+01:00", "2023-01-08 17:30:00+01:00", "2023-01-08 17:45:00+01:00", "2023-01-08 18:00:00+01:00", "2023-01-08 18:15:00+01:00", "2023-01-08 18:30:00+01:00", "2023-01-08 18:45:00+01:00", "2023-01-08 19:00:00+01:00", "2023-01-08 19:15:00+01:00", "2023-01-08 19:30:00+01:00", "2023-01-08 19:45:00+01:00", "2023-01-08 20:00:00+01:00", "2023-01-08 20:15:00+01:00", "2023-01-08 20:30:00+01:00", "2023-01-08 20:45:00+01:00", "2023-01-08 21:00:00+01:00", "2023-01-08 21:15:00+01:00", "2023-01-08 21:30:00+01:00", "2023-01-08 21:45:00+01:00", "2023-01-08 22:00:00+01:00", "2023-01-08 22:15:00+01:00", "2023-01-08 22:30:00+01:00", "2023-01-08 22:45:00+01:00", "2023-01-08 23:00:00+01:00", "2023-01-08 23:15:00+01:00", "2023-01-08 23:30:00+01:00", "2023-01-08 23:45:00+01:00", "2023-01-09 00:00:00+01:00", "2023-01-09 00:15:00+01:00", "2023-01-09 00:30:00+01:00", "2023-01-09 00:45:00+01:00", "2023-01-09 01:00:00+01:00", "2023-01-09 01:15:00+01:00", "2023-01-09 01:30:00+01:00", "2023-01-09 01:45:00+01:00", "2023-01-09 02:00:00+01:00", "2023-01-09 02:15:00+01:00", "2023-01-09 02:30:00+01:00", "2023-01-09 02:45:00+01:00", "2023-01-09 03:00:00+01:00", "2023-01-09 03:15:00+01:00", "2023-01-09 03:30:00+01:00", "2023-01-09 03:45:00+01:00", "2023-01-09 04:00:00+01:00", "2023-01-09 04:15:00+01:00", "2023-01-09 04:30:00+01:00", "2023-01-09 04:45:00+01:00", "2023-01-09 05:00:00+01:00", "2023-01-09 05:15:00+01:00", "2023-01-09 05:30:00+01:00", "2023-01-09 05:45:00+01:00", "2023-01-09 06:00:00+01:00", "2023-01-09 06:15:00+01:00", "2023-01-09 06:30:00+01:00", "2023-01-09 06:45:00+01:00", "2023-01-09 07:00:00+01:00", "2023-01-09 07:15:00+01:00", "2023-01-09 07:30:00+01:00", "2023-01-09 07:45:00+01:00", "2023-01-09 08:00:00+01:00", "2023-01-09 08:15:00+01:00", "2023-01-09 08:30:00+01:00", "2023-01-09 08:45:00+01:00", "2023-01-09 09:00:00+01:00", "2023-01-09 09:15:00+01:00", "2023-01-09 09:30:00+01:00", "2023-01-09 09:45:00+01:00", "2023-01-09 10:00:00+01:00", "2023-01-09 10:15:00+01:00", "2023-01-09 10:30:00+01:00", "2023-01-09 10:45:00+01:00", "2023-01-09 11:00:00+01:00", "2023-01-09 11:15:00+01:00", "2023-01-09 11:30:00+01:00", "2023-01-09 11:45:00+01:00", "2023-01-09 12:00:00+01:00", "2023-01-09 12:15:00+01:00", "2023-01-09 12:30:00+01:00", "2023-01-09 12:45:00+01:00", "2023-01-09 13:00:00+01:00", "2023-01-09 13:15:00+01:00", "2023-01-09 13:30:00+01:00", "2023-01-09 13:45:00+01:00", "2023-01-09 14:00:00+01:00", "2023-01-09 14:15:00+01:00", "2023-01-09 14:30:00+01:00", "2023-01-09 14:45:00+01:00", "2023-01-09 15:00:00+01:00", "2023-01-09 15:15:00+01:00", "2023-01-09 15:30:00+01:00", "2023-01-09 15:45:00+01:00", "2023-01-09 16:00:00+01:00", "2023-01-09 16:15:00+01:00", "2023-01-09 16:30:00+01:00", "2023-01-09 16:45:00+01:00", "2023-01-09 17:00:00+01:00", "2023-01-09 17:15:00+01:00", "2023-01-09 17:30:00+01:00", "2023-01-09 17:45:00+01:00", "2023-01-09 18:00:00+01:00", "2023-01-09 18:15:00+01:00", "2023-01-09 18:30:00+01:00", "2023-01-09 18:45:00+01:00", "2023-01-09 19:00:00+01:00", "2023-01-09 19:15:00+01:00", "2023-01-09 19:30:00+01:00", "2023-01-09 19:45:00+01:00", "2023-01-09 20:00:00+01:00", "2023-01-09 20:15:00+01:00", "2023-01-09 20:30:00+01:00", "2023-01-09 20:45:00+01:00", "2023-01-09 21:00:00+01:00", "2023-01-09 21:15:00+01:00", "2023-01-09 21:30:00+01:00", "2023-01-09 21:45:00+01:00", "2023-01-09 22:00:00+01:00", "2023-01-09 22:15:00+01:00", "2023-01-09 22:30:00+01:00", "2023-01-09 22:45:00+01:00", "2023-01-09 23:00:00+01:00", "2023-01-09 23:15:00+01:00", "2023-01-09 23:30:00+01:00", "2023-01-09 23:45:00+01:00", "2023-01-10 00:00:00+01:00", "2023-01-10 00:15:00+01:00", "2023-01-10 00:30:00+01:00", "2023-01-10 00:45:00+01:00", "2023-01-10 01:00:00+01:00", "2023-01-10 01:15:00+01:00", "2023-01-10 01:30:00+01:00", "2023-01-10 01:45:00+01:00", "2023-01-10 02:00:00+01:00", "2023-01-10 02:15:00+01:00", "2023-01-10 02:30:00+01:00", "2023-01-10 02:45:00+01:00", "2023-01-10 03:00:00+01:00", "2023-01-10 03:15:00+01:00", "2023-01-10 03:30:00+01:00", "2023-01-10 03:45:00+01:00", "2023-01-10 04:00:00+01:00", "2023-01-10 04:15:00+01:00", "2023-01-10 04:30:00+01:00", "2023-01-10 04:45:00+01:00", "2023-01-10 05:00:00+01:00", "2023-01-10 05:15:00+01:00", "2023-01-10 05:30:00+01:00", "2023-01-10 05:45:00+01:00", "2023-01-10 06:00:00+01:00", "2023-01-10 06:15:00+01:00", "2023-01-10 06:30:00+01:00", "2023-01-10 06:45:00+01:00", "2023-01-10 07:00:00+01:00", "2023-01-10 07:15:00+01:00", "2023-01-10 07:30:00+01:00", "2023-01-10 07:45:00+01:00", "2023-01-10 08:00:00+01:00", "2023-01-10 08:15:00+01:00", "2023-01-10 08:30:00+01:00", "2023-01-10 08:45:00+01:00", "2023-01-10 09:00:00+01:00", "2023-01-10 09:15:00+01:00", "2023-01-10 09:30:00+01:00", "2023-01-10 09:45:00+01:00", "2023-01-10 10:00:00+01:00", "2023-01-10 10:15:00+01:00", "2023-01-10 10:30:00+01:00", "2023-01-10 10:45:00+01:00", "2023-01-10 11:00:00+01:00", "2023-01-10 11:15:00+01:00", "2023-01-10 11:30:00+01:00", "2023-01-10 11:45:00+01:00", "2023-01-10 12:00:00+01:00", "2023-01-10 12:15:00+01:00", "2023-01-10 12:30:00+01:00", "2023-01-10 12:45:00+01:00", "2023-01-10 13:00:00+01:00", "2023-01-10 13:15:00+01:00", "2023-01-10 13:30:00+01:00", "2023-01-10 13:45:00+01:00", "2023-01-10 14:00:00+01:00", "2023-01-10 14:15:00+01:00", "2023-01-10 14:30:00+01:00", "2023-01-10 14:45:00+01:00", "2023-01-10 15:00:00+01:00", "2023-01-10 15:15:00+01:00", "2023-01-10 15:30:00+01:00", "2023-01-10 15:45:00+01:00", "2023-01-10 16:00:00+01:00", "2023-01-10 16:15:00+01:00", "2023-01-10 16:30:00+01:00", "2023-01-10 16:45:00+01:00", "2023-01-10 17:00:00+01:00", "2023-01-10 17:15:00+01:00", "2023-01-10 17:30:00+01:00", "2023-01-10 17:45:00+01:00", "2023-01-10 18:00:00+01:00", "2023-01-10 18:15:00+01:00", "2023-01-10 18:30:00+01:00", "2023-01-10 18:45:00+01:00", "2023-01-10 19:00:00+01:00", "2023-01-10 19:15:00+01:00", "2023-01-10 19:30:00+01:00", "2023-01-10 19:45:00+01:00", "2023-01-10 20:00:00+01:00", "2023-01-10 20:15:00+01:00", "2023-01-10 20:30:00+01:00", "2023-01-10 20:45:00+01:00", "2023-01-10 21:00:00+01:00", "2023-01-10 21:15:00+01:00", "2023-01-10 21:30:00+01:00", "2023-01-10 21:45:00+01:00", "2023-01-10 22:00:00+01:00", "2023-01-10 22:15:00+01:00", "2023-01-10 22:30:00+01:00", "2023-01-10 22:45:00+01:00", "2023-01-10 23:00:00+01:00", "2023-01-10 23:15:00+01:00", "2023-01-10 23:30:00+01:00", "2023-01-10 23:45:00+01:00", "2023-01-11 00:00:00+01:00", "2023-01-11 00:15:00+01:00", "2023-01-11 00:30:00+01:00", "2023-01-11 00:45:00+01:00", "2023-01-11 01:00:00+01:00", "2023-01-11 01:15:00+01:00", "2023-01-11 01:30:00+01:00", "2023-01-11 01:45:00+01:00", "2023-01-11 02:00:00+01:00", "2023-01-11 02:15:00+01:00", "2023-01-11 02:30:00+01:00", "2023-01-11 02:45:00+01:00", "2023-01-11 03:00:00+01:00", "2023-01-11 03:15:00+01:00", "2023-01-11 03:30:00+01:00", "2023-01-11 03:45:00+01:00", "2023-01-11 04:00:00+01:00", "2023-01-11 04:15:00+01:00", "2023-01-11 04:30:00+01:00", "2023-01-11 04:45:00+01:00", "2023-01-11 05:00:00+01:00", "2023-01-11 05:15:00+01:00", "2023-01-11 05:30:00+01:00", "2023-01-11 05:45:00+01:00", "2023-01-11 06:00:00+01:00", "2023-01-11 06:15:00+01:00", "2023-01-11 06:30:00+01:00", "2023-01-11 06:45:00+01:00", "2023-01-11 07:00:00+01:00", "2023-01-11 07:15:00+01:00", "2023-01-11 07:30:00+01:00", "2023-01-11 07:45:00+01:00", "2023-01-11 08:00:00+01:00", "2023-01-11 08:15:00+01:00", "2023-01-11 08:30:00+01:00", "2023-01-11 08:45:00+01:00", "2023-01-11 09:00:00+01:00", "2023-01-11 09:15:00+01:00", "2023-01-11 09:30:00+01:00", "2023-01-11 09:45:00+01:00", "2023-01-11 10:00:00+01:00", "2023-01-11 10:15:00+01:00", "2023-01-11 10:30:00+01:00", "2023-01-11 10:45:00+01:00", "2023-01-11 11:00:00+01:00", "2023-01-11 11:15:00+01:00", "2023-01-11 11:30:00+01:00", "2023-01-11 11:45:00+01:00", "2023-01-11 12:00:00+01:00", "2023-01-11 12:15:00+01:00", "2023-01-11 12:30:00+01:00", "2023-01-11 12:45:00+01:00", "2023-01-11 13:00:00+01:00", "2023-01-11 13:15:00+01:00", "2023-01-11 13:30:00+01:00", "2023-01-11 13:45:00+01:00", "2023-01-11 14:00:00+01:00", "2023-01-11 14:15:00+01:00", "2023-01-11 14:30:00+01:00", "2023-01-11 14:45:00+01:00", "2023-01-11 15:00:00+01:00", "2023-01-11 15:15:00+01:00", "2023-01-11 15:30:00+01:00", "2023-01-11 15:45:00+01:00", "2023-01-11 16:00:00+01:00", "2023-01-11 16:15:00+01:00", "2023-01-11 16:30:00+01:00", "2023-01-11 16:45:00+01:00", "2023-01-11 17:00:00+01:00", "2023-01-11 17:15:00+01:00", "2023-01-11 17:30:00+01:00", "2023-01-11 17:45:00+01:00", "2023-01-11 18:00:00+01:00", "2023-01-11 18:15:00+01:00", "2023-01-11 18:30:00+01:00", "2023-01-11 18:45:00+01:00", "2023-01-11 19:00:00+01:00", "2023-01-11 19:15:00+01:00", "2023-01-11 19:30:00+01:00", "2023-01-11 19:45:00+01:00", "2023-01-11 20:00:00+01:00", "2023-01-11 20:15:00+01:00", "2023-01-11 20:30:00+01:00", "2023-01-11 20:45:00+01:00", "2023-01-11 21:00:00+01:00", "2023-01-11 21:15:00+01:00", "2023-01-11 21:30:00+01:00", "2023-01-11 21:45:00+01:00", "2023-01-11 22:00:00+01:00", "2023-01-11 22:15:00+01:00", "2023-01-11 22:30:00+01:00", "2023-01-11 22:45:00+01:00", "2023-01-11 23:00:00+01:00", "2023-01-11 23:15:00+01:00", "2023-01-11 23:30:00+01:00", "2023-01-11 23:45:00+01:00", "2023-01-12 00:00:00+01:00", "2023-01-12 00:15:00+01:00", "2023-01-12 00:30:00+01:00", "2023-01-12 00:45:00+01:00", "2023-01-12 01:00:00+01:00", "2023-01-12 01:15:00+01:00", "2023-01-12 01:30:00+01:00", "2023-01-12 01:45:00+01:00", "2023-01-12 02:00:00+01:00", "2023-01-12 02:15:00+01:00", "2023-01-12 02:30:00+01:00", "2023-01-12 02:45:00+01:00", "2023-01-12 03:00:00+01:00", "2023-01-12 03:15:00+01:00", "2023-01-12 03:30:00+01:00", "2023-01-12 03:45:00+01:00", "2023-01-12 04:00:00+01:00", "2023-01-12 04:15:00+01:00", "2023-01-12 04:30:00+01:00", "2023-01-12 04:45:00+01:00", "2023-01-12 05:00:00+01:00", "2023-01-12 05:15:00+01:00", "2023-01-12 05:30:00+01:00", "2023-01-12 05:45:00+01:00", "2023-01-12 06:00:00+01:00", "2023-01-12 06:15:00+01:00", "2023-01-12 06:30:00+01:00", "2023-01-12 06:45:00+01:00", "2023-01-12 07:00:00+01:00", "2023-01-12 07:15:00+01:00", "2023-01-12 07:30:00+01:00", "2023-01-12 07:45:00+01:00", "2023-01-12 08:00:00+01:00", "2023-01-12 08:15:00+01:00", "2023-01-12 08:30:00+01:00", "2023-01-12 08:45:00+01:00", "2023-01-12 09:00:00+01:00", "2023-01-12 09:15:00+01:00", "2023-01-12 09:30:00+01:00", "2023-01-12 09:45:00+01:00", "2023-01-12 10:00:00+01:00", "2023-01-12 10:15:00+01:00", "2023-01-12 10:30:00+01:00", "2023-01-12 10:45:00+01:00", "2023-01-12 11:00:00+01:00", "2023-01-12 11:15:00+01:00", "2023-01-12 11:30:00+01:00", "2023-01-12 11:45:00+01:00", "2023-01-12 12:00:00+01:00", "2023-01-12 12:15:00+01:00", "2023-01-12 12:30:00+01:00", "2023-01-12 12:45:00+01:00", "2023-01-12 13:00:00+01:00", "2023-01-12 13:15:00+01:00", "2023-01-12 13:30:00+01:00", "2023-01-12 13:45:00+01:00", "2023-01-12 14:00:00+01:00", "2023-01-12 14:15:00+01:00", "2023-01-12 14:30:00+01:00", "2023-01-12 14:45:00+01:00", "2023-01-12 15:00:00+01:00", "2023-01-12 15:15:00+01:00", "2023-01-12 15:30:00+01:00", "2023-01-12 15:45:00+01:00", "2023-01-12 16:00:00+01:00", "2023-01-12 16:15:00+01:00", "2023-01-12 16:30:00+01:00", "2023-01-12 16:45:00+01:00", "2023-01-12 17:00:00+01:00", "2023-01-12 17:15:00+01:00", "2023-01-12 17:30:00+01:00", "2023-01-12 17:45:00+01:00", "2023-01-12 18:00:00+01:00", "2023-01-12 18:15:00+01:00", "2023-01-12 18:30:00+01:00", "2023-01-12 18:45:00+01:00", "2023-01-12 19:00:00+01:00", "2023-01-12 19:15:00+01:00", "2023-01-12 19:30:00+01:00", "2023-01-12 19:45:00+01:00", "2023-01-12 20:00:00+01:00", "2023-01-12 20:15:00+01:00", "2023-01-12 20:30:00+01:00", "2023-01-12 20:45:00+01:00", "2023-01-12 21:00:00+01:00", "2023-01-12 21:15:00+01:00", "2023-01-12 21:30:00+01:00", "2023-01-12 21:45:00+01:00", "2023-01-12 22:00:00+01:00", "2023-01-12 22:15:00+01:00", "2023-01-12 22:30:00+01:00", "2023-01-12 22:45:00+01:00", "2023-01-12 23:00:00+01:00", "2023-01-12 23:15:00+01:00", "2023-01-12 23:30:00+01:00", "2023-01-12 23:45:00+01:00", "2023-01-13 00:00:00+01:00", "2023-01-13 00:15:00+01:00", "2023-01-13 00:30:00+01:00", "2023-01-13 00:45:00+01:00", "2023-01-13 01:00:00+01:00", "2023-01-13 01:15:00+01:00", "2023-01-13 01:30:00+01:00", "2023-01-13 01:45:00+01:00", "2023-01-13 02:00:00+01:00", "2023-01-13 02:15:00+01:00", "2023-01-13 02:30:00+01:00", "2023-01-13 02:45:00+01:00", "2023-01-13 03:00:00+01:00", "2023-01-13 03:15:00+01:00", "2023-01-13 03:30:00+01:00", "2023-01-13 03:45:00+01:00", "2023-01-13 04:00:00+01:00", "2023-01-13 04:15:00+01:00", "2023-01-13 04:30:00+01:00", "2023-01-13 04:45:00+01:00", "2023-01-13 05:00:00+01:00", "2023-01-13 05:15:00+01:00", "2023-01-13 05:30:00+01:00", "2023-01-13 05:45:00+01:00", "2023-01-13 06:00:00+01:00", "2023-01-13 06:15:00+01:00", "2023-01-13 06:30:00+01:00", "2023-01-13 06:45:00+01:00", "2023-01-13 07:00:00+01:00", "2023-01-13 07:15:00+01:00", "2023-01-13 07:30:00+01:00", "2023-01-13 07:45:00+01:00", "2023-01-13 08:00:00+01:00", "2023-01-13 08:15:00+01:00", "2023-01-13 08:30:00+01:00", "2023-01-13 08:45:00+01:00", "2023-01-13 09:00:00+01:00", "2023-01-13 09:15:00+01:00", "2023-01-13 09:30:00+01:00", "2023-01-13 09:45:00+01:00", "2023-01-13 10:00:00+01:00", "2023-01-13 10:15:00+01:00", "2023-01-13 10:30:00+01:00", "2023-01-13 10:45:00+01:00", "2023-01-13 11:00:00+01:00", "2023-01-13 11:15:00+01:00", "2023-01-13 11:30:00+01:00", "2023-01-13 11:45:00+01:00", "2023-01-13 12:00:00+01:00", "2023-01-13 12:15:00+01:00", "2023-01-13 12:30:00+01:00", "2023-01-13 12:45:00+01:00", "2023-01-13 13:00:00+01:00", "2023-01-13 13:15:00+01:00", "2023-01-13 13:30:00+01:00", "2023-01-13 13:45:00+01:00", "2023-01-13 14:00:00+01:00", "2023-01-13 14:15:00+01:00", "2023-01-13 14:30:00+01:00", "2023-01-13 14:45:00+01:00", "2023-01-13 15:00:00+01:00", "2023-01-13 15:15:00+01:00", "2023-01-13 15:30:00+01:00", "2023-01-13 15:45:00+01:00", "2023-01-13 16:00:00+01:00", "2023-01-13 16:15:00+01:00", "2023-01-13 16:30:00+01:00", "2023-01-13 16:45:00+01:00", "2023-01-13 17:00:00+01:00", "2023-01-13 17:15:00+01:00", "2023-01-13 17:30:00+01:00", "2023-01-13 17:45:00+01:00", "2023-01-13 18:00:00+01:00", "2023-01-13 18:15:00+01:00", "2023-01-13 18:30:00+01:00", "2023-01-13 18:45:00+01:00", "2023-01-13 19:00:00+01:00", "2023-01-13 19:15:00+01:00", "2023-01-13 19:30:00+01:00", "2023-01-13 19:45:00+01:00", "2023-01-13 20:00:00+01:00", "2023-01-13 20:15:00+01:00", "2023-01-13 20:30:00+01:00", "2023-01-13 20:45:00+01:00", "2023-01-13 21:00:00+01:00", "2023-01-13 21:15:00+01:00", "2023-01-13 21:30:00+01:00", "2023-01-13 21:45:00+01:00", "2023-01-13 22:00:00+01:00", "2023-01-13 22:15:00+01:00", "2023-01-13 22:30:00+01:00", "2023-01-13 22:45:00+01:00", "2023-01-13 23:00:00+01:00", "2023-01-13 23:15:00+01:00", "2023-01-13 23:30:00+01:00", "2023-01-13 23:45:00+01:00", "2023-01-14 00:00:00+01:00", "2023-01-14 00:15:00+01:00", "2023-01-14 00:30:00+01:00", "2023-01-14 00:45:00+01:00", "2023-01-14 01:00:00+01:00", "2023-01-14 01:15:00+01:00", "2023-01-14 01:30:00+01:00", "2023-01-14 01:45:00+01:00", "2023-01-14 02:00:00+01:00", "2023-01-14 02:15:00+01:00", "2023-01-14 02:30:00+01:00", "2023-01-14 02:45:00+01:00", "2023-01-14 03:00:00+01:00", "2023-01-14 03:15:00+01:00", "2023-01-14 03:30:00+01:00", "2023-01-14 03:45:00+01:00", "2023-01-14 04:00:00+01:00", "2023-01-14 04:15:00+01:00", "2023-01-14 04:30:00+01:00", "2023-01-14 04:45:00+01:00", "2023-01-14 05:00:00+01:00", "2023-01-14 05:15:00+01:00", "2023-01-14 05:30:00+01:00", "2023-01-14 05:45:00+01:00", "2023-01-14 06:00:00+01:00", "2023-01-14 06:15:00+01:00", "2023-01-14 06:30:00+01:00", "2023-01-14 06:45:00+01:00", "2023-01-14 07:00:00+01:00", "2023-01-14 07:15:00+01:00", "2023-01-14 07:30:00+01:00", "2023-01-14 07:45:00+01:00", "2023-01-14 08:00:00+01:00", "2023-01-14 08:15:00+01:00", "2023-01-14 08:30:00+01:00", "2023-01-14 08:45:00+01:00", "2023-01-14 09:00:00+01:00", "2023-01-14 09:15:00+01:00", "2023-01-14 09:30:00+01:00", "2023-01-14 09:45:00+01:00", "2023-01-14 10:00:00+01:00", "2023-01-14 10:15:00+01:00", "2023-01-14 10:30:00+01:00", "2023-01-14 10:45:00+01:00", "2023-01-14 11:00:00+01:00", "2023-01-14 11:15:00+01:00", "2023-01-14 11:30:00+01:00", "2023-01-14 11:45:00+01:00", "2023-01-14 12:00:00+01:00", "2023-01-14 12:15:00+01:00", "2023-01-14 12:30:00+01:00", "2023-01-14 12:45:00+01:00", "2023-01-14 13:00:00+01:00", "2023-01-14 13:15:00+01:00", "2023-01-14 13:30:00+01:00", "2023-01-14 13:45:00+01:00", "2023-01-14 14:00:00+01:00", "2023-01-14 14:15:00+01:00", "2023-01-14 14:30:00+01:00", "2023-01-14 14:45:00+01:00", "2023-01-14 15:00:00+01:00", "2023-01-14 15:15:00+01:00", "2023-01-14 15:30:00+01:00", "2023-01-14 15:45:00+01:00", "2023-01-14 16:00:00+01:00", "2023-01-14 16:15:00+01:00", "2023-01-14 16:30:00+01:00", "2023-01-14 16:45:00+01:00", "2023-01-14 17:00:00+01:00", "2023-01-14 17:15:00+01:00", "2023-01-14 17:30:00+01:00", "2023-01-14 17:45:00+01:00", "2023-01-14 18:00:00+01:00", "2023-01-14 18:15:00+01:00", "2023-01-14 18:30:00+01:00", "2023-01-14 18:45:00+01:00", "2023-01-14 19:00:00+01:00", "2023-01-14 19:15:00+01:00", "2023-01-14 19:30:00+01:00", "2023-01-14 19:45:00+01:00", "2023-01-14 20:00:00+01:00", "2023-01-14 20:15:00+01:00", "2023-01-14 20:30:00+01:00", "2023-01-14 20:45:00+01:00", "2023-01-14 21:00:00+01:00", "2023-01-14 21:15:00+01:00", "2023-01-14 21:30:00+01:00", "2023-01-14 21:45:00+01:00", "2023-01-14 22:00:00+01:00", "2023-01-14 22:15:00+01:00", "2023-01-14 22:30:00+01:00", "2023-01-14 22:45:00+01:00", "2023-01-14 23:00:00+01:00", "2023-01-14 23:15:00+01:00", "2023-01-14 23:30:00+01:00", "2023-01-14 23:45:00+01:00", "2023-01-15 00:00:00+01:00", "2023-01-15 00:15:00+01:00", "2023-01-15 00:30:00+01:00", "2023-01-15 00:45:00+01:00", "2023-01-15 01:00:00+01:00", "2023-01-15 01:15:00+01:00", "2023-01-15 01:30:00+01:00", "2023-01-15 01:45:00+01:00", "2023-01-15 02:00:00+01:00", "2023-01-15 02:15:00+01:00", "2023-01-15 02:30:00+01:00", "2023-01-15 02:45:00+01:00", "2023-01-15 03:00:00+01:00", "2023-01-15 03:15:00+01:00", "2023-01-15 03:30:00+01:00", "2023-01-15 03:45:00+01:00", "2023-01-15 04:00:00+01:00", "2023-01-15 04:15:00+01:00", "2023-01-15 04:30:00+01:00", "2023-01-15 04:45:00+01:00", "2023-01-15 05:00:00+01:00", "2023-01-15 05:15:00+01:00", "2023-01-15 05:30:00+01:00", "2023-01-15 05:45:00+01:00", "2023-01-15 06:00:00+01:00", "2023-01-15 06:15:00+01:00", "2023-01-15 06:30:00+01:00", "2023-01-15 06:45:00+01:00", "2023-01-15 07:00:00+01:00", "2023-01-15 07:15:00+01:00", "2023-01-15 07:30:00+01:00", "2023-01-15 07:45:00+01:00", "2023-01-15 08:00:00+01:00", "2023-01-15 08:15:00+01:00", "2023-01-15 08:30:00+01:00", "2023-01-15 08:45:00+01:00", "2023-01-15 09:00:00+01:00", "2023-01-15 09:15:00+01:00", "2023-01-15 09:30:00+01:00", "2023-01-15 09:45:00+01:00", "2023-01-15 10:00:00+01:00", "2023-01-15 10:15:00+01:00", "2023-01-15 10:30:00+01:00", "2023-01-15 10:45:00+01:00", "2023-01-15 11:00:00+01:00", "2023-01-15 11:15:00+01:00", "2023-01-15 11:30:00+01:00", "2023-01-15 11:45:00+01:00", "2023-01-15 12:00:00+01:00", "2023-01-15 12:15:00+01:00", "2023-01-15 12:30:00+01:00", "2023-01-15 12:45:00+01:00", "2023-01-15 13:00:00+01:00", "2023-01-15 13:15:00+01:00", "2023-01-15 13:30:00+01:00", "2023-01-15 13:45:00+01:00", "2023-01-15 14:00:00+01:00", "2023-01-15 14:15:00+01:00", "2023-01-15 14:30:00+01:00", "2023-01-15 14:45:00+01:00", "2023-01-15 15:00:00+01:00", "2023-01-15 15:15:00+01:00", "2023-01-15 15:30:00+01:00", "2023-01-15 15:45:00+01:00", "2023-01-15 16:00:00+01:00", "2023-01-15 16:15:00+01:00", "2023-01-15 16:30:00+01:00", "2023-01-15 16:45:00+01:00", "2023-01-15 17:00:00+01:00", "2023-01-15 17:15:00+01:00", "2023-01-15 17:30:00+01:00", "2023-01-15 17:45:00+01:00", "2023-01-15 18:00:00+01:00", "2023-01-15 18:15:00+01:00", "2023-01-15 18:30:00+01:00", "2023-01-15 18:45:00+01:00", "2023-01-15 19:00:00+01:00", "2023-01-15 19:15:00+01:00", "2023-01-15 19:30:00+01:00", "2023-01-15 19:45:00+01:00", "2023-01-15 20:00:00+01:00", "2023-01-15 20:15:00+01:00", "2023-01-15 20:30:00+01:00", "2023-01-15 20:45:00+01:00", "2023-01-15 21:00:00+01:00", "2023-01-15 21:15:00+01:00", "2023-01-15 21:30:00+01:00", "2023-01-15 21:45:00+01:00", "2023-01-15 22:00:00+01:00", "2023-01-15 22:15:00+01:00", "2023-01-15 22:30:00+01:00", "2023-01-15 22:45:00+01:00", "2023-01-15 23:00:00+01:00", "2023-01-15 23:15:00+01:00", "2023-01-15 23:30:00+01:00", "2023-01-15 23:45:00+01:00", "2023-01-16 00:00:00+01:00", "2023-01-16 00:15:00+01:00", "2023-01-16 00:30:00+01:00", "2023-01-16 00:45:00+01:00", "2023-01-16 01:00:00+01:00", "2023-01-16 01:15:00+01:00", "2023-01-16 01:30:00+01:00", "2023-01-16 01:45:00+01:00", "2023-01-16 02:00:00+01:00", "2023-01-16 02:15:00+01:00", "2023-01-16 02:30:00+01:00", "2023-01-16 02:45:00+01:00", "2023-01-16 03:00:00+01:00", "2023-01-16 03:15:00+01:00", "2023-01-16 03:30:00+01:00", "2023-01-16 03:45:00+01:00", "2023-01-16 04:00:00+01:00", "2023-01-16 04:15:00+01:00", "2023-01-16 04:30:00+01:00", "2023-01-16 04:45:00+01:00", "2023-01-16 05:00:00+01:00", "2023-01-16 05:15:00+01:00", "2023-01-16 05:30:00+01:00", "2023-01-16 05:45:00+01:00", "2023-01-16 06:00:00+01:00", "2023-01-16 06:15:00+01:00", "2023-01-16 06:30:00+01:00", "2023-01-16 06:45:00+01:00", "2023-01-16 07:00:00+01:00", "2023-01-16 07:15:00+01:00", "2023-01-16 07:30:00+01:00", "2023-01-16 07:45:00+01:00", "2023-01-16 08:00:00+01:00", "2023-01-16 08:15:00+01:00", "2023-01-16 08:30:00+01:00", "2023-01-16 08:45:00+01:00", "2023-01-16 09:00:00+01:00", "2023-01-16 09:15:00+01:00", "2023-01-16 09:30:00+01:00", "2023-01-16 09:45:00+01:00", "2023-01-16 10:00:00+01:00", "2023-01-16 10:15:00+01:00", "2023-01-16 10:30:00+01:00", "2023-01-16 10:45:00+01:00", "2023-01-16 11:00:00+01:00", "2023-01-16 11:15:00+01:00", "2023-01-16 11:30:00+01:00", "2023-01-16 11:45:00+01:00", "2023-01-16 12:00:00+01:00", "2023-01-16 12:15:00+01:00", "2023-01-16 12:30:00+01:00", "2023-01-16 12:45:00+01:00", "2023-01-16 13:00:00+01:00", "2023-01-16 13:15:00+01:00", "2023-01-16 13:30:00+01:00", "2023-01-16 13:45:00+01:00", "2023-01-16 14:00:00+01:00", "2023-01-16 14:15:00+01:00", "2023-01-16 14:30:00+01:00", "2023-01-16 14:45:00+01:00", "2023-01-16 15:00:00+01:00", "2023-01-16 15:15:00+01:00", "2023-01-16 15:30:00+01:00", "2023-01-16 15:45:00+01:00", "2023-01-16 16:00:00+01:00", "2023-01-16 16:15:00+01:00", "2023-01-16 16:30:00+01:00", "2023-01-16 16:45:00+01:00", "2023-01-16 17:00:00+01:00", "2023-01-16 17:15:00+01:00", "2023-01-16 17:30:00+01:00", "2023-01-16 17:45:00+01:00", "2023-01-16 18:00:00+01:00", "2023-01-16 18:15:00+01:00", "2023-01-16 18:30:00+01:00", "2023-01-16 18:45:00+01:00", "2023-01-16 19:00:00+01:00", "2023-01-16 19:15:00+01:00", "2023-01-16 19:30:00+01:00", "2023-01-16 19:45:00+01:00", "2023-01-16 20:00:00+01:00", "2023-01-16 20:15:00+01:00", "2023-01-16 20:30:00+01:00", "2023-01-16 20:45:00+01:00", "2023-01-16 21:00:00+01:00", "2023-01-16 21:15:00+01:00", "2023-01-16 21:30:00+01:00", "2023-01-16 21:45:00+01:00", "2023-01-16 22:00:00+01:00", "2023-01-16 22:15:00+01:00", "2023-01-16 22:30:00+01:00", "2023-01-16 22:45:00+01:00", "2023-01-16 23:00:00+01:00", "2023-01-16 23:15:00+01:00", "2023-01-16 23:30:00+01:00", "2023-01-16 23:45:00+01:00", "2023-01-17 00:00:00+01:00", "2023-01-17 00:15:00+01:00", "2023-01-17 00:30:00+01:00", "2023-01-17 00:45:00+01:00", "2023-01-17 01:00:00+01:00", "2023-01-17 01:15:00+01:00", "2023-01-17 01:30:00+01:00", "2023-01-17 01:45:00+01:00", "2023-01-17 02:00:00+01:00", "2023-01-17 02:15:00+01:00", "2023-01-17 02:30:00+01:00", "2023-01-17 02:45:00+01:00", "2023-01-17 03:00:00+01:00", "2023-01-17 03:15:00+01:00", "2023-01-17 03:30:00+01:00", "2023-01-17 03:45:00+01:00", "2023-01-17 04:00:00+01:00", "2023-01-17 04:15:00+01:00", "2023-01-17 04:30:00+01:00", "2023-01-17 04:45:00+01:00", "2023-01-17 05:00:00+01:00", "2023-01-17 05:15:00+01:00", "2023-01-17 05:30:00+01:00", "2023-01-17 05:45:00+01:00", "2023-01-17 06:00:00+01:00", "2023-01-17 06:15:00+01:00", "2023-01-17 06:30:00+01:00", "2023-01-17 06:45:00+01:00", "2023-01-17 07:00:00+01:00", "2023-01-17 07:15:00+01:00", "2023-01-17 07:30:00+01:00", "2023-01-17 07:45:00+01:00", "2023-01-17 08:00:00+01:00", "2023-01-17 08:15:00+01:00", "2023-01-17 08:30:00+01:00", "2023-01-17 08:45:00+01:00", "2023-01-17 09:00:00+01:00", "2023-01-17 09:15:00+01:00", "2023-01-17 09:30:00+01:00", "2023-01-17 09:45:00+01:00", "2023-01-17 10:00:00+01:00", "2023-01-17 10:15:00+01:00", "2023-01-17 10:30:00+01:00", "2023-01-17 10:45:00+01:00", "2023-01-17 11:00:00+01:00", "2023-01-17 11:15:00+01:00", "2023-01-17 11:30:00+01:00", "2023-01-17 11:45:00+01:00", "2023-01-17 12:00:00+01:00", "2023-01-17 12:15:00+01:00", "2023-01-17 12:30:00+01:00", "2023-01-17 12:45:00+01:00", "2023-01-17 13:00:00+01:00", "2023-01-17 13:15:00+01:00", "2023-01-17 13:30:00+01:00", "2023-01-17 13:45:00+01:00", "2023-01-17 14:00:00+01:00", "2023-01-17 14:15:00+01:00", "2023-01-17 14:30:00+01:00", "2023-01-17 14:45:00+01:00", "2023-01-17 15:00:00+01:00", "2023-01-17 15:15:00+01:00", "2023-01-17 15:30:00+01:00", "2023-01-17 15:45:00+01:00", "2023-01-17 16:00:00+01:00", "2023-01-17 16:15:00+01:00", "2023-01-17 16:30:00+01:00", "2023-01-17 16:45:00+01:00", "2023-01-17 17:00:00+01:00", "2023-01-17 17:15:00+01:00", "2023-01-17 17:30:00+01:00", "2023-01-17 17:45:00+01:00", "2023-01-17 18:00:00+01:00", "2023-01-17 18:15:00+01:00", "2023-01-17 18:30:00+01:00", "2023-01-17 18:45:00+01:00", "2023-01-17 19:00:00+01:00", "2023-01-17 19:15:00+01:00", "2023-01-17 19:30:00+01:00", "2023-01-17 19:45:00+01:00", "2023-01-17 20:00:00+01:00", "2023-01-17 20:15:00+01:00", "2023-01-17 20:30:00+01:00", "2023-01-17 20:45:00+01:00", "2023-01-17 21:00:00+01:00", "2023-01-17 21:15:00+01:00", "2023-01-17 21:30:00+01:00", "2023-01-17 21:45:00+01:00", "2023-01-17 22:00:00+01:00", "2023-01-17 22:15:00+01:00", "2023-01-17 22:30:00+01:00", "2023-01-17 22:45:00+01:00", "2023-01-17 23:00:00+01:00", "2023-01-17 23:15:00+01:00", "2023-01-17 23:30:00+01:00", "2023-01-17 23:45:00+01:00", "2023-01-18 00:00:00+01:00", "2023-01-18 00:15:00+01:00", "2023-01-18 00:30:00+01:00", "2023-01-18 00:45:00+01:00", "2023-01-18 01:00:00+01:00", "2023-01-18 01:15:00+01:00", "2023-01-18 01:30:00+01:00", "2023-01-18 01:45:00+01:00", "2023-01-18 02:00:00+01:00", "2023-01-18 02:15:00+01:00", "2023-01-18 02:30:00+01:00", "2023-01-18 02:45:00+01:00", "2023-01-18 03:00:00+01:00", "2023-01-18 03:15:00+01:00", "2023-01-18 03:30:00+01:00", "2023-01-18 03:45:00+01:00", "2023-01-18 04:00:00+01:00", "2023-01-18 04:15:00+01:00", "2023-01-18 04:30:00+01:00", "2023-01-18 04:45:00+01:00", "2023-01-18 05:00:00+01:00", "2023-01-18 05:15:00+01:00", "2023-01-18 05:30:00+01:00", "2023-01-18 05:45:00+01:00", "2023-01-18 06:00:00+01:00", "2023-01-18 06:15:00+01:00", "2023-01-18 06:30:00+01:00", "2023-01-18 06:45:00+01:00", "2023-01-18 07:00:00+01:00", "2023-01-18 07:15:00+01:00", "2023-01-18 07:30:00+01:00", "2023-01-18 07:45:00+01:00", "2023-01-18 08:00:00+01:00", "2023-01-18 08:15:00+01:00", "2023-01-18 08:30:00+01:00", "2023-01-18 08:45:00+01:00", "2023-01-18 09:00:00+01:00", "2023-01-18 09:15:00+01:00", "2023-01-18 09:30:00+01:00", "2023-01-18 09:45:00+01:00", "2023-01-18 10:00:00+01:00", "2023-01-18 10:15:00+01:00", "2023-01-18 10:30:00+01:00", "2023-01-18 10:45:00+01:00", "2023-01-18 11:00:00+01:00", "2023-01-18 11:15:00+01:00", "2023-01-18 11:30:00+01:00", "2023-01-18 11:45:00+01:00", "2023-01-18 12:00:00+01:00", "2023-01-18 12:15:00+01:00", "2023-01-18 12:30:00+01:00", "2023-01-18 12:45:00+01:00", "2023-01-18 13:00:00+01:00", "2023-01-18 13:15:00+01:00", "2023-01-18 13:30:00+01:00", "2023-01-18 13:45:00+01:00", "2023-01-18 14:00:00+01:00", "2023-01-18 14:15:00+01:00", "2023-01-18 14:30:00+01:00", "2023-01-18 14:45:00+01:00", "2023-01-18 15:00:00+01:00", "2023-01-18 15:15:00+01:00", "2023-01-18 15:30:00+01:00", "2023-01-18 15:45:00+01:00", "2023-01-18 16:00:00+01:00", "2023-01-18 16:15:00+01:00", "2023-01-18 16:30:00+01:00", "2023-01-18 16:45:00+01:00", "2023-01-18 17:00:00+01:00", "2023-01-18 17:15:00+01:00", "2023-01-18 17:30:00+01:00", "2023-01-18 17:45:00+01:00", "2023-01-18 18:00:00+01:00", "2023-01-18 18:15:00+01:00", "2023-01-18 18:30:00+01:00", "2023-01-18 18:45:00+01:00", "2023-01-18 19:00:00+01:00", "2023-01-18 19:15:00+01:00", "2023-01-18 19:30:00+01:00", "2023-01-18 19:45:00+01:00", "2023-01-18 20:00:00+01:00", "2023-01-18 20:15:00+01:00", "2023-01-18 20:30:00+01:00", "2023-01-18 20:45:00+01:00", "2023-01-18 21:00:00+01:00", "2023-01-18 21:15:00+01:00", "2023-01-18 21:30:00+01:00", "2023-01-18 21:45:00+01:00", "2023-01-18 22:00:00+01:00", "2023-01-18 22:15:00+01:00", "2023-01-18 22:30:00+01:00", "2023-01-18 22:45:00+01:00", "2023-01-18 23:00:00+01:00", "2023-01-18 23:15:00+01:00", "2023-01-18 23:30:00+01:00", "2023-01-18 23:45:00+01:00", "2023-01-19 00:00:00+01:00", "2023-01-19 00:15:00+01:00", "2023-01-19 00:30:00+01:00", "2023-01-19 00:45:00+01:00", "2023-01-19 01:00:00+01:00", "2023-01-19 01:15:00+01:00", "2023-01-19 01:30:00+01:00", "2023-01-19 01:45:00+01:00", "2023-01-19 02:00:00+01:00", "2023-01-19 02:15:00+01:00", "2023-01-19 02:30:00+01:00", "2023-01-19 02:45:00+01:00", "2023-01-19 03:00:00+01:00", "2023-01-19 03:15:00+01:00", "2023-01-19 03:30:00+01:00", "2023-01-19 03:45:00+01:00", "2023-01-19 04:00:00+01:00", "2023-01-19 04:15:00+01:00", "2023-01-19 04:30:00+01:00", "2023-01-19 04:45:00+01:00", "2023-01-19 05:00:00+01:00", "2023-01-19 05:15:00+01:00", "2023-01-19 05:30:00+01:00", "2023-01-19 05:45:00+01:00", "2023-01-19 06:00:00+01:00", "2023-01-19 06:15:00+01:00", "2023-01-19 06:30:00+01:00", "2023-01-19 06:45:00+01:00", "2023-01-19 07:00:00+01:00", "2023-01-19 07:15:00+01:00", "2023-01-19 07:30:00+01:00", "2023-01-19 07:45:00+01:00", "2023-01-19 08:00:00+01:00", "2023-01-19 08:15:00+01:00", "2023-01-19 08:30:00+01:00", "2023-01-19 08:45:00+01:00", "2023-01-19 09:00:00+01:00", "2023-01-19 09:15:00+01:00", "2023-01-19 09:30:00+01:00", "2023-01-19 09:45:00+01:00", "2023-01-19 10:00:00+01:00", "2023-01-19 10:15:00+01:00", "2023-01-19 10:30:00+01:00", "2023-01-19 10:45:00+01:00", "2023-01-19 11:00:00+01:00", "2023-01-19 11:15:00+01:00", "2023-01-19 11:30:00+01:00", "2023-01-19 11:45:00+01:00", "2023-01-19 12:00:00+01:00", "2023-01-19 12:15:00+01:00", "2023-01-19 12:30:00+01:00", "2023-01-19 12:45:00+01:00", "2023-01-19 13:00:00+01:00", "2023-01-19 13:15:00+01:00", "2023-01-19 13:30:00+01:00", "2023-01-19 13:45:00+01:00", "2023-01-19 14:00:00+01:00", "2023-01-19 14:15:00+01:00", "2023-01-19 14:30:00+01:00", "2023-01-19 14:45:00+01:00", "2023-01-19 15:00:00+01:00", "2023-01-19 15:15:00+01:00", "2023-01-19 15:30:00+01:00", "2023-01-19 15:45:00+01:00", "2023-01-19 16:00:00+01:00", "2023-01-19 16:15:00+01:00", "2023-01-19 16:30:00+01:00", "2023-01-19 16:45:00+01:00", "2023-01-19 17:00:00+01:00", "2023-01-19 17:15:00+01:00", "2023-01-19 17:30:00+01:00", "2023-01-19 17:45:00+01:00", "2023-01-19 18:00:00+01:00", "2023-01-19 18:15:00+01:00", "2023-01-19 18:30:00+01:00", "2023-01-19 18:45:00+01:00", "2023-01-19 19:00:00+01:00", "2023-01-19 19:15:00+01:00", "2023-01-19 19:30:00+01:00", "2023-01-19 19:45:00+01:00", "2023-01-19 20:00:00+01:00", "2023-01-19 20:15:00+01:00", "2023-01-19 20:30:00+01:00", "2023-01-19 20:45:00+01:00", "2023-01-19 21:00:00+01:00", "2023-01-19 21:15:00+01:00", "2023-01-19 21:30:00+01:00", "2023-01-19 21:45:00+01:00", "2023-01-19 22:00:00+01:00", "2023-01-19 22:15:00+01:00", "2023-01-19 22:30:00+01:00", "2023-01-19 22:45:00+01:00", "2023-01-19 23:00:00+01:00", "2023-01-19 23:15:00+01:00", "2023-01-19 23:30:00+01:00", "2023-01-19 23:45:00+01:00", "2023-01-20 00:00:00+01:00", "2023-01-20 00:15:00+01:00", "2023-01-20 00:30:00+01:00", "2023-01-20 00:45:00+01:00", "2023-01-20 01:00:00+01:00", "2023-01-20 01:15:00+01:00", "2023-01-20 01:30:00+01:00", "2023-01-20 01:45:00+01:00", "2023-01-20 02:00:00+01:00", "2023-01-20 02:15:00+01:00", "2023-01-20 02:30:00+01:00", "2023-01-20 02:45:00+01:00", "2023-01-20 03:00:00+01:00", "2023-01-20 03:15:00+01:00", "2023-01-20 03:30:00+01:00", "2023-01-20 03:45:00+01:00", "2023-01-20 04:00:00+01:00", "2023-01-20 04:15:00+01:00", "2023-01-20 04:30:00+01:00", "2023-01-20 04:45:00+01:00", "2023-01-20 05:00:00+01:00", "2023-01-20 05:15:00+01:00", "2023-01-20 05:30:00+01:00", "2023-01-20 05:45:00+01:00", "2023-01-20 06:00:00+01:00", "2023-01-20 06:15:00+01:00", "2023-01-20 06:30:00+01:00", "2023-01-20 06:45:00+01:00", "2023-01-20 07:00:00+01:00", "2023-01-20 07:15:00+01:00", "2023-01-20 07:30:00+01:00", "2023-01-20 07:45:00+01:00", "2023-01-20 08:00:00+01:00", "2023-01-20 08:15:00+01:00", "2023-01-20 08:30:00+01:00", "2023-01-20 08:45:00+01:00", "2023-01-20 09:00:00+01:00", "2023-01-20 09:15:00+01:00", "2023-01-20 09:30:00+01:00", "2023-01-20 09:45:00+01:00", "2023-01-20 10:00:00+01:00", "2023-01-20 10:15:00+01:00", "2023-01-20 10:30:00+01:00", "2023-01-20 10:45:00+01:00", "2023-01-20 11:00:00+01:00", "2023-01-20 11:15:00+01:00", "2023-01-20 11:30:00+01:00", "2023-01-20 11:45:00+01:00", "2023-01-20 12:00:00+01:00", "2023-01-20 12:15:00+01:00", "2023-01-20 12:30:00+01:00", "2023-01-20 12:45:00+01:00", "2023-01-20 13:00:00+01:00", "2023-01-20 13:15:00+01:00", "2023-01-20 13:30:00+01:00", "2023-01-20 13:45:00+01:00", "2023-01-20 14:00:00+01:00", "2023-01-20 14:15:00+01:00", "2023-01-20 14:30:00+01:00", "2023-01-20 14:45:00+01:00", "2023-01-20 15:00:00+01:00", "2023-01-20 15:15:00+01:00", "2023-01-20 15:30:00+01:00", "2023-01-20 15:45:00+01:00", "2023-01-20 16:00:00+01:00", "2023-01-20 16:15:00+01:00", "2023-01-20 16:30:00+01:00", "2023-01-20 16:45:00+01:00", "2023-01-20 17:00:00+01:00", "2023-01-20 17:15:00+01:00", "2023-01-20 17:30:00+01:00", "2023-01-20 17:45:00+01:00", "2023-01-20 18:00:00+01:00", "2023-01-20 18:15:00+01:00", "2023-01-20 18:30:00+01:00", "2023-01-20 18:45:00+01:00", "2023-01-20 19:00:00+01:00", "2023-01-20 19:15:00+01:00", "2023-01-20 19:30:00+01:00", "2023-01-20 19:45:00+01:00", "2023-01-20 20:00:00+01:00", "2023-01-20 20:15:00+01:00", "2023-01-20 20:30:00+01:00", "2023-01-20 20:45:00+01:00", "2023-01-20 21:00:00+01:00", "2023-01-20 21:15:00+01:00", "2023-01-20 21:30:00+01:00", "2023-01-20 21:45:00+01:00", "2023-01-20 22:00:00+01:00", "2023-01-20 22:15:00+01:00", "2023-01-20 22:30:00+01:00", "2023-01-20 22:45:00+01:00", "2023-01-20 23:00:00+01:00", "2023-01-20 23:15:00+01:00", "2023-01-20 23:30:00+01:00", "2023-01-20 23:45:00+01:00", "2023-01-21 00:00:00+01:00", "2023-01-21 00:15:00+01:00", "2023-01-21 00:30:00+01:00", "2023-01-21 00:45:00+01:00", "2023-01-21 01:00:00+01:00", "2023-01-21 01:15:00+01:00", "2023-01-21 01:30:00+01:00", "2023-01-21 01:45:00+01:00", "2023-01-21 02:00:00+01:00", "2023-01-21 02:15:00+01:00", "2023-01-21 02:30:00+01:00", "2023-01-21 02:45:00+01:00", "2023-01-21 03:00:00+01:00", "2023-01-21 03:15:00+01:00", "2023-01-21 03:30:00+01:00", "2023-01-21 03:45:00+01:00", "2023-01-21 04:00:00+01:00", "2023-01-21 04:15:00+01:00", "2023-01-21 04:30:00+01:00", "2023-01-21 04:45:00+01:00", "2023-01-21 05:00:00+01:00", "2023-01-21 05:15:00+01:00", "2023-01-21 05:30:00+01:00", "2023-01-21 05:45:00+01:00", "2023-01-21 06:00:00+01:00", "2023-01-21 06:15:00+01:00", "2023-01-21 06:30:00+01:00", "2023-01-21 06:45:00+01:00", "2023-01-21 07:00:00+01:00", "2023-01-21 07:15:00+01:00", "2023-01-21 07:30:00+01:00", "2023-01-21 07:45:00+01:00", "2023-01-21 08:00:00+01:00", "2023-01-21 08:15:00+01:00", "2023-01-21 08:30:00+01:00", "2023-01-21 08:45:00+01:00", "2023-01-21 09:00:00+01:00", "2023-01-21 09:15:00+01:00", "2023-01-21 09:30:00+01:00", "2023-01-21 09:45:00+01:00", "2023-01-21 10:00:00+01:00", "2023-01-21 10:15:00+01:00", "2023-01-21 10:30:00+01:00", "2023-01-21 10:45:00+01:00", "2023-01-21 11:00:00+01:00", "2023-01-21 11:15:00+01:00", "2023-01-21 11:30:00+01:00", "2023-01-21 11:45:00+01:00", "2023-01-21 12:00:00+01:00", "2023-01-21 12:15:00+01:00", "2023-01-21 12:30:00+01:00", "2023-01-21 12:45:00+01:00", "2023-01-21 13:00:00+01:00", "2023-01-21 13:15:00+01:00", "2023-01-21 13:30:00+01:00", "2023-01-21 13:45:00+01:00", "2023-01-21 14:00:00+01:00", "2023-01-21 14:15:00+01:00", "2023-01-21 14:30:00+01:00", "2023-01-21 14:45:00+01:00", "2023-01-21 15:00:00+01:00", "2023-01-21 15:15:00+01:00", "2023-01-21 15:30:00+01:00", "2023-01-21 15:45:00+01:00", "2023-01-21 16:00:00+01:00", "2023-01-21 16:15:00+01:00", "2023-01-21 16:30:00+01:00", "2023-01-21 16:45:00+01:00", "2023-01-21 17:00:00+01:00", "2023-01-21 17:15:00+01:00", "2023-01-21 17:30:00+01:00", "2023-01-21 17:45:00+01:00", "2023-01-21 18:00:00+01:00", "2023-01-21 18:15:00+01:00", "2023-01-21 18:30:00+01:00", "2023-01-21 18:45:00+01:00", "2023-01-21 19:00:00+01:00", "2023-01-21 19:15:00+01:00", "2023-01-21 19:30:00+01:00", "2023-01-21 19:45:00+01:00", "2023-01-21 20:00:00+01:00", "2023-01-21 20:15:00+01:00", "2023-01-21 20:30:00+01:00", "2023-01-21 20:45:00+01:00", "2023-01-21 21:00:00+01:00", "2023-01-21 21:15:00+01:00", "2023-01-21 21:30:00+01:00", "2023-01-21 21:45:00+01:00", "2023-01-21 22:00:00+01:00", "2023-01-21 22:15:00+01:00", "2023-01-21 22:30:00+01:00", "2023-01-21 22:45:00+01:00", "2023-01-21 23:00:00+01:00", "2023-01-21 23:15:00+01:00", "2023-01-21 23:30:00+01:00", "2023-01-21 23:45:00+01:00", "2023-01-22 00:00:00+01:00", "2023-01-22 00:15:00+01:00", "2023-01-22 00:30:00+01:00", "2023-01-22 00:45:00+01:00", "2023-01-22 01:00:00+01:00", "2023-01-22 01:15:00+01:00", "2023-01-22 01:30:00+01:00", "2023-01-22 01:45:00+01:00", "2023-01-22 02:00:00+01:00", "2023-01-22 02:15:00+01:00", "2023-01-22 02:30:00+01:00", "2023-01-22 02:45:00+01:00", "2023-01-22 03:00:00+01:00", "2023-01-22 03:15:00+01:00", "2023-01-22 03:30:00+01:00", "2023-01-22 03:45:00+01:00", "2023-01-22 04:00:00+01:00", "2023-01-22 04:15:00+01:00", "2023-01-22 04:30:00+01:00", "2023-01-22 04:45:00+01:00", "2023-01-22 05:00:00+01:00", "2023-01-22 05:15:00+01:00", "2023-01-22 05:30:00+01:00", "2023-01-22 05:45:00+01:00", "2023-01-22 06:00:00+01:00", "2023-01-22 06:15:00+01:00", "2023-01-22 06:30:00+01:00", "2023-01-22 06:45:00+01:00", "2023-01-22 07:00:00+01:00", "2023-01-22 07:15:00+01:00", "2023-01-22 07:30:00+01:00", "2023-01-22 07:45:00+01:00", "2023-01-22 08:00:00+01:00", "2023-01-22 08:15:00+01:00", "2023-01-22 08:30:00+01:00", "2023-01-22 08:45:00+01:00", "2023-01-22 09:00:00+01:00", "2023-01-22 09:15:00+01:00", "2023-01-22 09:30:00+01:00", "2023-01-22 09:45:00+01:00", "2023-01-22 10:00:00+01:00", "2023-01-22 10:15:00+01:00", "2023-01-22 10:30:00+01:00", "2023-01-22 10:45:00+01:00", "2023-01-22 11:00:00+01:00", "2023-01-22 11:15:00+01:00", "2023-01-22 11:30:00+01:00", "2023-01-22 11:45:00+01:00", "2023-01-22 12:00:00+01:00", "2023-01-22 12:15:00+01:00", "2023-01-22 12:30:00+01:00", "2023-01-22 12:45:00+01:00", "2023-01-22 13:00:00+01:00", "2023-01-22 13:15:00+01:00", "2023-01-22 13:30:00+01:00", "2023-01-22 13:45:00+01:00", "2023-01-22 14:00:00+01:00", "2023-01-22 14:15:00+01:00", "2023-01-22 14:30:00+01:00", "2023-01-22 14:45:00+01:00", "2023-01-22 15:00:00+01:00", "2023-01-22 15:15:00+01:00", "2023-01-22 15:30:00+01:00", "2023-01-22 15:45:00+01:00", "2023-01-22 16:00:00+01:00", "2023-01-22 16:15:00+01:00", "2023-01-22 16:30:00+01:00", "2023-01-22 16:45:00+01:00", "2023-01-22 17:00:00+01:00", "2023-01-22 17:15:00+01:00", "2023-01-22 17:30:00+01:00", "2023-01-22 17:45:00+01:00", "2023-01-22 18:00:00+01:00", "2023-01-22 18:15:00+01:00", "2023-01-22 18:30:00+01:00", "2023-01-22 18:45:00+01:00", "2023-01-22 19:00:00+01:00", "2023-01-22 19:15:00+01:00", "2023-01-22 19:30:00+01:00", "2023-01-22 19:45:00+01:00", "2023-01-22 20:00:00+01:00", "2023-01-22 20:15:00+01:00", "2023-01-22 20:30:00+01:00", "2023-01-22 20:45:00+01:00", "2023-01-22 21:00:00+01:00", "2023-01-22 21:15:00+01:00", "2023-01-22 21:30:00+01:00", "2023-01-22 21:45:00+01:00", "2023-01-22 22:00:00+01:00", "2023-01-22 22:15:00+01:00", "2023-01-22 22:30:00+01:00", "2023-01-22 22:45:00+01:00", "2023-01-22 23:00:00+01:00", "2023-01-22 23:15:00+01:00", "2023-01-22 23:30:00+01:00", "2023-01-22 23:45:00+01:00", "2023-01-23 00:00:00+01:00", "2023-01-23 00:15:00+01:00", "2023-01-23 00:30:00+01:00", "2023-01-23 00:45:00+01:00", "2023-01-23 01:00:00+01:00", "2023-01-23 01:15:00+01:00", "2023-01-23 01:30:00+01:00", "2023-01-23 01:45:00+01:00", "2023-01-23 02:00:00+01:00", "2023-01-23 02:15:00+01:00", "2023-01-23 02:30:00+01:00", "2023-01-23 02:45:00+01:00", "2023-01-23 03:00:00+01:00", "2023-01-23 03:15:00+01:00", "2023-01-23 03:30:00+01:00", "2023-01-23 03:45:00+01:00", "2023-01-23 04:00:00+01:00", "2023-01-23 04:15:00+01:00", "2023-01-23 04:30:00+01:00", "2023-01-23 04:45:00+01:00", "2023-01-23 05:00:00+01:00", "2023-01-23 05:15:00+01:00", "2023-01-23 05:30:00+01:00", "2023-01-23 05:45:00+01:00", "2023-01-23 06:00:00+01:00", "2023-01-23 06:15:00+01:00", "2023-01-23 06:30:00+01:00", "2023-01-23 06:45:00+01:00", "2023-01-23 07:00:00+01:00", "2023-01-23 07:15:00+01:00", "2023-01-23 07:30:00+01:00", "2023-01-23 07:45:00+01:00", "2023-01-23 08:00:00+01:00", "2023-01-23 08:15:00+01:00", "2023-01-23 08:30:00+01:00", "2023-01-23 08:45:00+01:00", "2023-01-23 09:00:00+01:00", "2023-01-23 09:15:00+01:00", "2023-01-23 09:30:00+01:00", "2023-01-23 09:45:00+01:00", "2023-01-23 10:00:00+01:00", "2023-01-23 10:15:00+01:00", "2023-01-23 10:30:00+01:00", "2023-01-23 10:45:00+01:00", "2023-01-23 11:00:00+01:00", "2023-01-23 11:15:00+01:00", "2023-01-23 11:30:00+01:00", "2023-01-23 11:45:00+01:00", "2023-01-23 12:00:00+01:00", "2023-01-23 12:15:00+01:00", "2023-01-23 12:30:00+01:00", "2023-01-23 12:45:00+01:00", "2023-01-23 13:00:00+01:00", "2023-01-23 13:15:00+01:00", "2023-01-23 13:30:00+01:00", "2023-01-23 13:45:00+01:00", "2023-01-23 14:00:00+01:00", "2023-01-23 14:15:00+01:00", "2023-01-23 14:30:00+01:00", "2023-01-23 14:45:00+01:00", "2023-01-23 15:00:00+01:00", "2023-01-23 15:15:00+01:00", "2023-01-23 15:30:00+01:00", "2023-01-23 15:45:00+01:00", "2023-01-23 16:00:00+01:00", "2023-01-23 16:15:00+01:00", "2023-01-23 16:30:00+01:00", "2023-01-23 16:45:00+01:00", "2023-01-23 17:00:00+01:00", "2023-01-23 17:15:00+01:00", "2023-01-23 17:30:00+01:00", "2023-01-23 17:45:00+01:00", "2023-01-23 18:00:00+01:00", "2023-01-23 18:15:00+01:00", "2023-01-23 18:30:00+01:00", "2023-01-23 18:45:00+01:00", "2023-01-23 19:00:00+01:00", "2023-01-23 19:15:00+01:00", "2023-01-23 19:30:00+01:00", "2023-01-23 19:45:00+01:00", "2023-01-23 20:00:00+01:00", "2023-01-23 20:15:00+01:00", "2023-01-23 20:30:00+01:00", "2023-01-23 20:45:00+01:00", "2023-01-23 21:00:00+01:00", "2023-01-23 21:15:00+01:00", "2023-01-23 21:30:00+01:00", "2023-01-23 21:45:00+01:00", "2023-01-23 22:00:00+01:00", "2023-01-23 22:15:00+01:00", "2023-01-23 22:30:00+01:00", "2023-01-23 22:45:00+01:00", "2023-01-23 23:00:00+01:00", "2023-01-23 23:15:00+01:00", "2023-01-23 23:30:00+01:00", "2023-01-23 23:45:00+01:00", "2023-01-24 00:00:00+01:00", "2023-01-24 00:15:00+01:00", "2023-01-24 00:30:00+01:00", "2023-01-24 00:45:00+01:00", "2023-01-24 01:00:00+01:00", "2023-01-24 01:15:00+01:00", "2023-01-24 01:30:00+01:00", "2023-01-24 01:45:00+01:00", "2023-01-24 02:00:00+01:00", "2023-01-24 02:15:00+01:00", "2023-01-24 02:30:00+01:00", "2023-01-24 02:45:00+01:00", "2023-01-24 03:00:00+01:00", "2023-01-24 03:15:00+01:00", "2023-01-24 03:30:00+01:00", "2023-01-24 03:45:00+01:00", "2023-01-24 04:00:00+01:00", "2023-01-24 04:15:00+01:00", "2023-01-24 04:30:00+01:00", "2023-01-24 04:45:00+01:00", "2023-01-24 05:00:00+01:00", "2023-01-24 05:15:00+01:00", "2023-01-24 05:30:00+01:00", "2023-01-24 05:45:00+01:00", "2023-01-24 06:00:00+01:00", "2023-01-24 06:15:00+01:00", "2023-01-24 06:30:00+01:00", "2023-01-24 06:45:00+01:00", "2023-01-24 07:00:00+01:00", "2023-01-24 07:15:00+01:00", "2023-01-24 07:30:00+01:00", "2023-01-24 07:45:00+01:00", "2023-01-24 08:00:00+01:00", "2023-01-24 08:15:00+01:00", "2023-01-24 08:30:00+01:00", "2023-01-24 08:45:00+01:00", "2023-01-24 09:00:00+01:00", "2023-01-24 09:15:00+01:00", "2023-01-24 09:30:00+01:00", "2023-01-24 09:45:00+01:00", "2023-01-24 10:00:00+01:00", "2023-01-24 10:15:00+01:00", "2023-01-24 10:30:00+01:00", "2023-01-24 10:45:00+01:00", "2023-01-24 11:00:00+01:00", "2023-01-24 11:15:00+01:00", "2023-01-24 11:30:00+01:00", "2023-01-24 11:45:00+01:00", "2023-01-24 12:00:00+01:00", "2023-01-24 12:15:00+01:00", "2023-01-24 12:30:00+01:00", "2023-01-24 12:45:00+01:00", "2023-01-24 13:00:00+01:00", "2023-01-24 13:15:00+01:00", "2023-01-24 13:30:00+01:00", "2023-01-24 13:45:00+01:00", "2023-01-24 14:00:00+01:00", "2023-01-24 14:15:00+01:00", "2023-01-24 14:30:00+01:00", "2023-01-24 14:45:00+01:00", "2023-01-24 15:00:00+01:00", "2023-01-24 15:15:00+01:00", "2023-01-24 15:30:00+01:00", "2023-01-24 15:45:00+01:00", "2023-01-24 16:00:00+01:00", "2023-01-24 16:15:00+01:00", "2023-01-24 16:30:00+01:00", "2023-01-24 16:45:00+01:00", "2023-01-24 17:00:00+01:00", "2023-01-24 17:15:00+01:00", "2023-01-24 17:30:00+01:00", "2023-01-24 17:45:00+01:00", "2023-01-24 18:00:00+01:00", "2023-01-24 18:15:00+01:00", "2023-01-24 18:30:00+01:00", "2023-01-24 18:45:00+01:00", "2023-01-24 19:00:00+01:00", "2023-01-24 19:15:00+01:00", "2023-01-24 19:30:00+01:00", "2023-01-24 19:45:00+01:00", "2023-01-24 20:00:00+01:00", "2023-01-24 20:15:00+01:00", "2023-01-24 20:30:00+01:00", "2023-01-24 20:45:00+01:00", "2023-01-24 21:00:00+01:00", "2023-01-24 21:15:00+01:00", "2023-01-24 21:30:00+01:00", "2023-01-24 21:45:00+01:00", "2023-01-24 22:00:00+01:00", "2023-01-24 22:15:00+01:00", "2023-01-24 22:30:00+01:00", "2023-01-24 22:45:00+01:00", "2023-01-24 23:00:00+01:00", "2023-01-24 23:15:00+01:00", "2023-01-24 23:30:00+01:00", "2023-01-24 23:45:00+01:00", "2023-01-25 00:00:00+01:00", "2023-01-25 00:15:00+01:00", "2023-01-25 00:30:00+01:00", "2023-01-25 00:45:00+01:00", "2023-01-25 01:00:00+01:00", "2023-01-25 01:15:00+01:00", "2023-01-25 01:30:00+01:00", "2023-01-25 01:45:00+01:00", "2023-01-25 02:00:00+01:00", "2023-01-25 02:15:00+01:00", "2023-01-25 02:30:00+01:00", "2023-01-25 02:45:00+01:00", "2023-01-25 03:00:00+01:00", "2023-01-25 03:15:00+01:00", "2023-01-25 03:30:00+01:00", "2023-01-25 03:45:00+01:00", "2023-01-25 04:00:00+01:00", "2023-01-25 04:15:00+01:00", "2023-01-25 04:30:00+01:00", "2023-01-25 04:45:00+01:00", "2023-01-25 05:00:00+01:00", "2023-01-25 05:15:00+01:00", "2023-01-25 05:30:00+01:00", "2023-01-25 05:45:00+01:00", "2023-01-25 06:00:00+01:00", "2023-01-25 06:15:00+01:00", "2023-01-25 06:30:00+01:00", "2023-01-25 06:45:00+01:00", "2023-01-25 07:00:00+01:00", "2023-01-25 07:15:00+01:00", "2023-01-25 07:30:00+01:00", "2023-01-25 07:45:00+01:00", "2023-01-25 08:00:00+01:00", "2023-01-25 08:15:00+01:00", "2023-01-25 08:30:00+01:00", "2023-01-25 08:45:00+01:00", "2023-01-25 09:00:00+01:00", "2023-01-25 09:15:00+01:00", "2023-01-25 09:30:00+01:00", "2023-01-25 09:45:00+01:00", "2023-01-25 10:00:00+01:00", "2023-01-25 10:15:00+01:00", "2023-01-25 10:30:00+01:00", "2023-01-25 10:45:00+01:00", "2023-01-25 11:00:00+01:00", "2023-01-25 11:15:00+01:00", "2023-01-25 11:30:00+01:00", "2023-01-25 11:45:00+01:00", "2023-01-25 12:00:00+01:00", "2023-01-25 12:15:00+01:00", "2023-01-25 12:30:00+01:00", "2023-01-25 12:45:00+01:00", "2023-01-25 13:00:00+01:00", "2023-01-25 13:15:00+01:00", "2023-01-25 13:30:00+01:00", "2023-01-25 13:45:00+01:00", "2023-01-25 14:00:00+01:00", "2023-01-25 14:15:00+01:00", "2023-01-25 14:30:00+01:00", "2023-01-25 14:45:00+01:00", "2023-01-25 15:00:00+01:00", "2023-01-25 15:15:00+01:00", "2023-01-25 15:30:00+01:00", "2023-01-25 15:45:00+01:00", "2023-01-25 16:00:00+01:00", "2023-01-25 16:15:00+01:00", "2023-01-25 16:30:00+01:00", "2023-01-25 16:45:00+01:00", "2023-01-25 17:00:00+01:00", "2023-01-25 17:15:00+01:00", "2023-01-25 17:30:00+01:00", "2023-01-25 17:45:00+01:00", "2023-01-25 18:00:00+01:00", "2023-01-25 18:15:00+01:00", "2023-01-25 18:30:00+01:00", "2023-01-25 18:45:00+01:00", "2023-01-25 19:00:00+01:00", "2023-01-25 19:15:00+01:00", "2023-01-25 19:30:00+01:00", "2023-01-25 19:45:00+01:00", "2023-01-25 20:00:00+01:00", "2023-01-25 20:15:00+01:00", "2023-01-25 20:30:00+01:00", "2023-01-25 20:45:00+01:00", "2023-01-25 21:00:00+01:00", "2023-01-25 21:15:00+01:00", "2023-01-25 21:30:00+01:00", "2023-01-25 21:45:00+01:00", "2023-01-25 22:00:00+01:00", "2023-01-25 22:15:00+01:00", "2023-01-25 22:30:00+01:00", "2023-01-25 22:45:00+01:00", "2023-01-25 23:00:00+01:00", "2023-01-25 23:15:00+01:00", "2023-01-25 23:30:00+01:00", "2023-01-25 23:45:00+01:00", "2023-01-26 00:00:00+01:00", "2023-01-26 00:15:00+01:00", "2023-01-26 00:30:00+01:00", "2023-01-26 00:45:00+01:00", "2023-01-26 01:00:00+01:00", "2023-01-26 01:15:00+01:00", "2023-01-26 01:30:00+01:00", "2023-01-26 01:45:00+01:00", "2023-01-26 02:00:00+01:00", "2023-01-26 02:15:00+01:00", "2023-01-26 02:30:00+01:00", "2023-01-26 02:45:00+01:00", "2023-01-26 03:00:00+01:00", "2023-01-26 03:15:00+01:00", "2023-01-26 03:30:00+01:00", "2023-01-26 03:45:00+01:00", "2023-01-26 04:00:00+01:00", "2023-01-26 04:15:00+01:00", "2023-01-26 04:30:00+01:00", "2023-01-26 04:45:00+01:00", "2023-01-26 05:00:00+01:00", "2023-01-26 05:15:00+01:00", "2023-01-26 05:30:00+01:00", "2023-01-26 05:45:00+01:00", "2023-01-26 06:00:00+01:00", "2023-01-26 06:15:00+01:00", "2023-01-26 06:30:00+01:00", "2023-01-26 06:45:00+01:00", "2023-01-26 07:00:00+01:00", "2023-01-26 07:15:00+01:00", "2023-01-26 07:30:00+01:00", "2023-01-26 07:45:00+01:00", "2023-01-26 08:00:00+01:00", "2023-01-26 08:15:00+01:00", "2023-01-26 08:30:00+01:00", "2023-01-26 08:45:00+01:00", "2023-01-26 09:00:00+01:00", "2023-01-26 09:15:00+01:00", "2023-01-26 09:30:00+01:00", "2023-01-26 09:45:00+01:00", "2023-01-26 10:00:00+01:00", "2023-01-26 10:15:00+01:00", "2023-01-26 10:30:00+01:00", "2023-01-26 10:45:00+01:00", "2023-01-26 11:00:00+01:00", "2023-01-26 11:15:00+01:00", "2023-01-26 11:30:00+01:00", "2023-01-26 11:45:00+01:00", "2023-01-26 12:00:00+01:00", "2023-01-26 12:15:00+01:00", "2023-01-26 12:30:00+01:00", "2023-01-26 12:45:00+01:00", "2023-01-26 13:00:00+01:00", "2023-01-26 13:15:00+01:00", "2023-01-26 13:30:00+01:00", "2023-01-26 13:45:00+01:00", "2023-01-26 14:00:00+01:00", "2023-01-26 14:15:00+01:00", "2023-01-26 14:30:00+01:00", "2023-01-26 14:45:00+01:00", "2023-01-26 15:00:00+01:00", "2023-01-26 15:15:00+01:00", "2023-01-26 15:30:00+01:00", "2023-01-26 15:45:00+01:00", "2023-01-26 16:00:00+01:00", "2023-01-26 16:15:00+01:00", "2023-01-26 16:30:00+01:00", "2023-01-26 16:45:00+01:00", "2023-01-26 17:00:00+01:00", "2023-01-26 17:15:00+01:00", "2023-01-26 17:30:00+01:00", "2023-01-26 17:45:00+01:00", "2023-01-26 18:00:00+01:00", "2023-01-26 18:15:00+01:00", "2023-01-26 18:30:00+01:00", "2023-01-26 18:45:00+01:00", "2023-01-26 19:00:00+01:00", "2023-01-26 19:15:00+01:00", "2023-01-26 19:30:00+01:00", "2023-01-26 19:45:00+01:00", "2023-01-26 20:00:00+01:00", "2023-01-26 20:15:00+01:00", "2023-01-26 20:30:00+01:00", "2023-01-26 20:45:00+01:00", "2023-01-26 21:00:00+01:00", "2023-01-26 21:15:00+01:00", "2023-01-26 21:30:00+01:00", "2023-01-26 21:45:00+01:00", "2023-01-26 22:00:00+01:00", "2023-01-26 22:15:00+01:00", "2023-01-26 22:30:00+01:00", "2023-01-26 22:45:00+01:00", "2023-01-26 23:00:00+01:00", "2023-01-26 23:15:00+01:00", "2023-01-26 23:30:00+01:00", "2023-01-26 23:45:00+01:00", "2023-01-27 00:00:00+01:00", "2023-01-27 00:15:00+01:00", "2023-01-27 00:30:00+01:00", "2023-01-27 00:45:00+01:00", "2023-01-27 01:00:00+01:00", "2023-01-27 01:15:00+01:00", "2023-01-27 01:30:00+01:00", "2023-01-27 01:45:00+01:00", "2023-01-27 02:00:00+01:00", "2023-01-27 02:15:00+01:00", "2023-01-27 02:30:00+01:00", "2023-01-27 02:45:00+01:00", "2023-01-27 03:00:00+01:00", "2023-01-27 03:15:00+01:00", "2023-01-27 03:30:00+01:00", "2023-01-27 03:45:00+01:00", "2023-01-27 04:00:00+01:00", "2023-01-27 04:15:00+01:00", "2023-01-27 04:30:00+01:00", "2023-01-27 04:45:00+01:00", "2023-01-27 05:00:00+01:00", "2023-01-27 05:15:00+01:00", "2023-01-27 05:30:00+01:00", "2023-01-27 05:45:00+01:00", "2023-01-27 06:00:00+01:00", "2023-01-27 06:15:00+01:00", "2023-01-27 06:30:00+01:00", "2023-01-27 06:45:00+01:00", "2023-01-27 07:00:00+01:00", "2023-01-27 07:15:00+01:00", "2023-01-27 07:30:00+01:00", "2023-01-27 07:45:00+01:00", "2023-01-27 08:00:00+01:00", "2023-01-27 08:15:00+01:00", "2023-01-27 08:30:00+01:00", "2023-01-27 08:45:00+01:00", "2023-01-27 09:00:00+01:00", "2023-01-27 09:15:00+01:00", "2023-01-27 09:30:00+01:00", "2023-01-27 09:45:00+01:00", "2023-01-27 10:00:00+01:00", "2023-01-27 10:15:00+01:00", "2023-01-27 10:30:00+01:00", "2023-01-27 10:45:00+01:00", "2023-01-27 11:00:00+01:00", "2023-01-27 11:15:00+01:00", "2023-01-27 11:30:00+01:00", "2023-01-27 11:45:00+01:00", "2023-01-27 12:00:00+01:00", "2023-01-27 12:15:00+01:00", "2023-01-27 12:30:00+01:00", "2023-01-27 12:45:00+01:00", "2023-01-27 13:00:00+01:00", "2023-01-27 13:15:00+01:00", "2023-01-27 13:30:00+01:00", "2023-01-27 13:45:00+01:00", "2023-01-27 14:00:00+01:00", "2023-01-27 14:15:00+01:00", "2023-01-27 14:30:00+01:00", "2023-01-27 14:45:00+01:00", "2023-01-27 15:00:00+01:00", "2023-01-27 15:15:00+01:00", "2023-01-27 15:30:00+01:00", "2023-01-27 15:45:00+01:00", "2023-01-27 16:00:00+01:00", "2023-01-27 16:15:00+01:00", "2023-01-27 16:30:00+01:00", "2023-01-27 16:45:00+01:00", "2023-01-27 17:00:00+01:00", "2023-01-27 17:15:00+01:00", "2023-01-27 17:30:00+01:00", "2023-01-27 17:45:00+01:00", "2023-01-27 18:00:00+01:00", "2023-01-27 18:15:00+01:00", "2023-01-27 18:30:00+01:00", "2023-01-27 18:45:00+01:00", "2023-01-27 19:00:00+01:00", "2023-01-27 19:15:00+01:00", "2023-01-27 19:30:00+01:00", "2023-01-27 19:45:00+01:00", "2023-01-27 20:00:00+01:00", "2023-01-27 20:15:00+01:00", "2023-01-27 20:30:00+01:00", "2023-01-27 20:45:00+01:00", "2023-01-27 21:00:00+01:00", "2023-01-27 21:15:00+01:00", "2023-01-27 21:30:00+01:00", "2023-01-27 21:45:00+01:00", "2023-01-27 22:00:00+01:00", "2023-01-27 22:15:00+01:00", "2023-01-27 22:30:00+01:00", "2023-01-27 22:45:00+01:00", "2023-01-27 23:00:00+01:00", "2023-01-27 23:15:00+01:00", "2023-01-27 23:30:00+01:00", "2023-01-27 23:45:00+01:00", "2023-01-28 00:00:00+01:00", "2023-01-28 00:15:00+01:00", "2023-01-28 00:30:00+01:00", "2023-01-28 00:45:00+01:00", "2023-01-28 01:00:00+01:00", "2023-01-28 01:15:00+01:00", "2023-01-28 01:30:00+01:00", "2023-01-28 01:45:00+01:00", "2023-01-28 02:00:00+01:00", "2023-01-28 02:15:00+01:00", "2023-01-28 02:30:00+01:00", "2023-01-28 02:45:00+01:00", "2023-01-28 03:00:00+01:00", "2023-01-28 03:15:00+01:00", "2023-01-28 03:30:00+01:00", "2023-01-28 03:45:00+01:00", "2023-01-28 04:00:00+01:00", "2023-01-28 04:15:00+01:00", "2023-01-28 04:30:00+01:00", "2023-01-28 04:45:00+01:00", "2023-01-28 05:00:00+01:00", "2023-01-28 05:15:00+01:00", "2023-01-28 05:30:00+01:00", "2023-01-28 05:45:00+01:00", "2023-01-28 06:00:00+01:00", "2023-01-28 06:15:00+01:00", "2023-01-28 06:30:00+01:00", "2023-01-28 06:45:00+01:00", "2023-01-28 07:00:00+01:00", "2023-01-28 07:15:00+01:00", "2023-01-28 07:30:00+01:00", "2023-01-28 07:45:00+01:00", "2023-01-28 08:00:00+01:00", "2023-01-28 08:15:00+01:00", "2023-01-28 08:30:00+01:00", "2023-01-28 08:45:00+01:00", "2023-01-28 09:00:00+01:00", "2023-01-28 09:15:00+01:00", "2023-01-28 09:30:00+01:00", "2023-01-28 09:45:00+01:00", "2023-01-28 10:00:00+01:00", "2023-01-28 10:15:00+01:00", "2023-01-28 10:30:00+01:00", "2023-01-28 10:45:00+01:00", "2023-01-28 11:00:00+01:00", "2023-01-28 11:15:00+01:00", "2023-01-28 11:30:00+01:00", "2023-01-28 11:45:00+01:00", "2023-01-28 12:00:00+01:00", "2023-01-28 12:15:00+01:00", "2023-01-28 12:30:00+01:00", "2023-01-28 12:45:00+01:00", "2023-01-28 13:00:00+01:00", "2023-01-28 13:15:00+01:00", "2023-01-28 13:30:00+01:00", "2023-01-28 13:45:00+01:00", "2023-01-28 14:00:00+01:00", "2023-01-28 14:15:00+01:00", "2023-01-28 14:30:00+01:00", "2023-01-28 14:45:00+01:00", "2023-01-28 15:00:00+01:00", "2023-01-28 15:15:00+01:00", "2023-01-28 15:30:00+01:00", "2023-01-28 15:45:00+01:00", "2023-01-28 16:00:00+01:00", "2023-01-28 16:15:00+01:00", "2023-01-28 16:30:00+01:00", "2023-01-28 16:45:00+01:00", "2023-01-28 17:00:00+01:00", "2023-01-28 17:15:00+01:00", "2023-01-28 17:30:00+01:00", "2023-01-28 17:45:00+01:00", "2023-01-28 18:00:00+01:00", "2023-01-28 18:15:00+01:00", "2023-01-28 18:30:00+01:00", "2023-01-28 18:45:00+01:00", "2023-01-28 19:00:00+01:00", "2023-01-28 19:15:00+01:00", "2023-01-28 19:30:00+01:00", "2023-01-28 19:45:00+01:00", "2023-01-28 20:00:00+01:00", "2023-01-28 20:15:00+01:00", "2023-01-28 20:30:00+01:00", "2023-01-28 20:45:00+01:00", "2023-01-28 21:00:00+01:00", "2023-01-28 21:15:00+01:00", "2023-01-28 21:30:00+01:00", "2023-01-28 21:45:00+01:00", "2023-01-28 22:00:00+01:00", "2023-01-28 22:15:00+01:00", "2023-01-28 22:30:00+01:00", "2023-01-28 22:45:00+01:00", "2023-01-28 23:00:00+01:00", "2023-01-28 23:15:00+01:00", "2023-01-28 23:30:00+01:00", "2023-01-28 23:45:00+01:00", "2023-01-29 00:00:00+01:00", "2023-01-29 00:15:00+01:00", "2023-01-29 00:30:00+01:00", "2023-01-29 00:45:00+01:00", "2023-01-29 01:00:00+01:00", "2023-01-29 01:15:00+01:00", "2023-01-29 01:30:00+01:00", "2023-01-29 01:45:00+01:00", "2023-01-29 02:00:00+01:00", "2023-01-29 02:15:00+01:00", "2023-01-29 02:30:00+01:00", "2023-01-29 02:45:00+01:00", "2023-01-29 03:00:00+01:00", "2023-01-29 03:15:00+01:00", "2023-01-29 03:30:00+01:00", "2023-01-29 03:45:00+01:00", "2023-01-29 04:00:00+01:00", "2023-01-29 04:15:00+01:00", "2023-01-29 04:30:00+01:00", "2023-01-29 04:45:00+01:00", "2023-01-29 05:00:00+01:00", "2023-01-29 05:15:00+01:00", "2023-01-29 05:30:00+01:00", "2023-01-29 05:45:00+01:00", "2023-01-29 06:00:00+01:00", "2023-01-29 06:15:00+01:00", "2023-01-29 06:30:00+01:00", "2023-01-29 06:45:00+01:00", "2023-01-29 07:00:00+01:00", "2023-01-29 07:15:00+01:00", "2023-01-29 07:30:00+01:00", "2023-01-29 07:45:00+01:00", "2023-01-29 08:00:00+01:00", "2023-01-29 08:15:00+01:00", "2023-01-29 08:30:00+01:00", "2023-01-29 08:45:00+01:00", "2023-01-29 09:00:00+01:00", "2023-01-29 09:15:00+01:00", "2023-01-29 09:30:00+01:00", "2023-01-29 09:45:00+01:00", "2023-01-29 10:00:00+01:00", "2023-01-29 10:15:00+01:00", "2023-01-29 10:30:00+01:00", "2023-01-29 10:45:00+01:00", "2023-01-29 11:00:00+01:00", "2023-01-29 11:15:00+01:00", "2023-01-29 11:30:00+01:00", "2023-01-29 11:45:00+01:00", "2023-01-29 12:00:00+01:00", "2023-01-29 12:15:00+01:00", "2023-01-29 12:30:00+01:00", "2023-01-29 12:45:00+01:00", "2023-01-29 13:00:00+01:00", "2023-01-29 13:15:00+01:00", "2023-01-29 13:30:00+01:00", "2023-01-29 13:45:00+01:00", "2023-01-29 14:00:00+01:00", "2023-01-29 14:15:00+01:00", "2023-01-29 14:30:00+01:00", "2023-01-29 14:45:00+01:00", "2023-01-29 15:00:00+01:00", "2023-01-29 15:15:00+01:00", "2023-01-29 15:30:00+01:00", "2023-01-29 15:45:00+01:00", "2023-01-29 16:00:00+01:00", "2023-01-29 16:15:00+01:00", "2023-01-29 16:30:00+01:00", "2023-01-29 16:45:00+01:00", "2023-01-29 17:00:00+01:00", "2023-01-29 17:15:00+01:00", "2023-01-29 17:30:00+01:00", "2023-01-29 17:45:00+01:00", "2023-01-29 18:00:00+01:00", "2023-01-29 18:15:00+01:00", "2023-01-29 18:30:00+01:00", "2023-01-29 18:45:00+01:00", "2023-01-29 19:00:00+01:00", "2023-01-29 19:15:00+01:00", "2023-01-29 19:30:00+01:00", "2023-01-29 19:45:00+01:00", "2023-01-29 20:00:00+01:00", "2023-01-29 20:15:00+01:00", "2023-01-29 20:30:00+01:00", "2023-01-29 20:45:00+01:00", "2023-01-29 21:00:00+01:00", "2023-01-29 21:15:00+01:00", "2023-01-29 21:30:00+01:00", "2023-01-29 21:45:00+01:00", "2023-01-29 22:00:00+01:00", "2023-01-29 22:15:00+01:00", "2023-01-29 22:30:00+01:00", "2023-01-29 22:45:00+01:00", "2023-01-29 23:00:00+01:00", "2023-01-29 23:15:00+01:00", "2023-01-29 23:30:00+01:00", "2023-01-29 23:45:00+01:00", "2023-01-30 00:00:00+01:00", "2023-01-30 00:15:00+01:00", "2023-01-30 00:30:00+01:00", "2023-01-30 00:45:00+01:00", "2023-01-30 01:00:00+01:00", "2023-01-30 01:15:00+01:00", "2023-01-30 01:30:00+01:00", "2023-01-30 01:45:00+01:00", "2023-01-30 02:00:00+01:00", "2023-01-30 02:15:00+01:00", "2023-01-30 02:30:00+01:00", "2023-01-30 02:45:00+01:00", "2023-01-30 03:00:00+01:00", "2023-01-30 03:15:00+01:00", "2023-01-30 03:30:00+01:00", "2023-01-30 03:45:00+01:00", "2023-01-30 04:00:00+01:00", "2023-01-30 04:15:00+01:00", "2023-01-30 04:30:00+01:00", "2023-01-30 04:45:00+01:00", "2023-01-30 05:00:00+01:00", "2023-01-30 05:15:00+01:00", "2023-01-30 05:30:00+01:00", "2023-01-30 05:45:00+01:00", "2023-01-30 06:00:00+01:00", "2023-01-30 06:15:00+01:00", "2023-01-30 06:30:00+01:00", "2023-01-30 06:45:00+01:00", "2023-01-30 07:00:00+01:00", "2023-01-30 07:15:00+01:00", "2023-01-30 07:30:00+01:00", "2023-01-30 07:45:00+01:00", "2023-01-30 08:00:00+01:00", "2023-01-30 08:15:00+01:00", "2023-01-30 08:30:00+01:00", "2023-01-30 08:45:00+01:00", "2023-01-30 09:00:00+01:00", "2023-01-30 09:15:00+01:00", "2023-01-30 09:30:00+01:00", "2023-01-30 09:45:00+01:00", "2023-01-30 10:00:00+01:00", "2023-01-30 10:15:00+01:00", "2023-01-30 10:30:00+01:00", "2023-01-30 10:45:00+01:00", "2023-01-30 11:00:00+01:00", "2023-01-30 11:15:00+01:00", "2023-01-30 11:30:00+01:00", "2023-01-30 11:45:00+01:00", "2023-01-30 12:00:00+01:00", "2023-01-30 12:15:00+01:00", "2023-01-30 12:30:00+01:00", "2023-01-30 12:45:00+01:00", "2023-01-30 13:00:00+01:00", "2023-01-30 13:15:00+01:00", "2023-01-30 13:30:00+01:00", "2023-01-30 13:45:00+01:00", "2023-01-30 14:00:00+01:00", "2023-01-30 14:15:00+01:00", "2023-01-30 14:30:00+01:00", "2023-01-30 14:45:00+01:00", "2023-01-30 15:00:00+01:00", "2023-01-30 15:15:00+01:00", "2023-01-30 15:30:00+01:00", "2023-01-30 15:45:00+01:00", "2023-01-30 16:00:00+01:00", "2023-01-30 16:15:00+01:00", "2023-01-30 16:30:00+01:00", "2023-01-30 16:45:00+01:00", "2023-01-30 17:00:00+01:00", "2023-01-30 17:15:00+01:00", "2023-01-30 17:30:00+01:00", "2023-01-30 17:45:00+01:00", "2023-01-30 18:00:00+01:00", "2023-01-30 18:15:00+01:00", "2023-01-30 18:30:00+01:00", "2023-01-30 18:45:00+01:00", "2023-01-30 19:00:00+01:00", "2023-01-30 19:15:00+01:00", "2023-01-30 19:30:00+01:00", "2023-01-30 19:45:00+01:00", "2023-01-30 20:00:00+01:00", "2023-01-30 20:15:00+01:00", "2023-01-30 20:30:00+01:00", "2023-01-30 20:45:00+01:00", "2023-01-30 21:00:00+01:00", "2023-01-30 21:15:00+01:00", "2023-01-30 21:30:00+01:00", "2023-01-30 21:45:00+01:00", "2023-01-30 22:00:00+01:00", "2023-01-30 22:15:00+01:00", "2023-01-30 22:30:00+01:00", "2023-01-30 22:45:00+01:00", "2023-01-30 23:00:00+01:00", "2023-01-30 23:15:00+01:00", "2023-01-30 23:30:00+01:00", "2023-01-30 23:45:00+01:00", "2023-01-31 00:00:00+01:00", "2023-01-31 00:15:00+01:00", "2023-01-31 00:30:00+01:00", "2023-01-31 00:45:00+01:00", "2023-01-31 01:00:00+01:00", "2023-01-31 01:15:00+01:00", "2023-01-31 01:30:00+01:00", "2023-01-31 01:45:00+01:00", "2023-01-31 02:00:00+01:00", "2023-01-31 02:15:00+01:00", "2023-01-31 02:30:00+01:00", "2023-01-31 02:45:00+01:00", "2023-01-31 03:00:00+01:00", "2023-01-31 03:15:00+01:00", "2023-01-31 03:30:00+01:00", "2023-01-31 03:45:00+01:00", "2023-01-31 04:00:00+01:00", "2023-01-31 04:15:00+01:00", "2023-01-31 04:30:00+01:00", "2023-01-31 04:45:00+01:00", "2023-01-31 05:00:00+01:00", "2023-01-31 05:15:00+01:00", "2023-01-31 05:30:00+01:00", "2023-01-31 05:45:00+01:00", "2023-01-31 06:00:00+01:00", "2023-01-31 06:15:00+01:00", "2023-01-31 06:30:00+01:00", "2023-01-31 06:45:00+01:00", "2023-01-31 07:00:00+01:00", "2023-01-31 07:15:00+01:00", "2023-01-31 07:30:00+01:00", "2023-01-31 07:45:00+01:00", "2023-01-31 08:00:00+01:00", "2023-01-31 08:15:00+01:00", "2023-01-31 08:30:00+01:00", "2023-01-31 08:45:00+01:00", "2023-01-31 09:00:00+01:00", "2023-01-31 09:15:00+01:00", "2023-01-31 09:30:00+01:00", "2023-01-31 09:45:00+01:00", "2023-01-31 10:00:00+01:00", "2023-01-31 10:15:00+01:00", "2023-01-31 10:30:00+01:00", "2023-01-31 10:45:00+01:00", "2023-01-31 11:00:00+01:00", "2023-01-31 11:15:00+01:00", "2023-01-31 11:30:00+01:00", "2023-01-31 11:45:00+01:00", "2023-01-31 12:00:00+01:00", "2023-01-31 12:15:00+01:00", "2023-01-31 12:30:00+01:00", "2023-01-31 12:45:00+01:00", "2023-01-31 13:00:00+01:00", "2023-01-31 13:15:00+01:00", "2023-01-31 13:30:00+01:00", "2023-01-31 13:45:00+01:00", "2023-01-31 14:00:00+01:00", "2023-01-31 14:15:00+01:00", "2023-01-31 14:30:00+01:00", "2023-01-31 14:45:00+01:00", "2023-01-31 15:00:00+01:00", "2023-01-31 15:15:00+01:00", "2023-01-31 15:30:00+01:00", "2023-01-31 15:45:00+01:00", "2023-01-31 16:00:00+01:00", "2023-01-31 16:15:00+01:00", "2023-01-31 16:30:00+01:00", "2023-01-31 16:45:00+01:00", "2023-01-31 17:00:00+01:00", "2023-01-31 17:15:00+01:00", "2023-01-31 17:30:00+01:00", "2023-01-31 17:45:00+01:00", "2023-01-31 18:00:00+01:00", "2023-01-31 18:15:00+01:00", "2023-01-31 18:30:00+01:00", "2023-01-31 18:45:00+01:00", "2023-01-31 19:00:00+01:00", "2023-01-31 19:15:00+01:00", "2023-01-31 19:30:00+01:00", "2023-01-31 19:45:00+01:00", "2023-01-31 20:00:00+01:00", "2023-01-31 20:15:00+01:00", "2023-01-31 20:30:00+01:00", "2023-01-31 20:45:00+01:00", "2023-01-31 21:00:00+01:00", "2023-01-31 21:15:00+01:00", "2023-01-31 21:30:00+01:00", "2023-01-31 21:45:00+01:00", "2023-01-31 22:00:00+01:00", "2023-01-31 22:15:00+01:00", "2023-01-31 22:30:00+01:00", "2023-01-31 22:45:00+01:00", "2023-01-31 23:00:00+01:00", "2023-01-31 23:15:00+01:00", "2023-01-31 23:30:00+01:00", "2023-01-31 23:45:00+01:00", "2023-02-01 00:00:00+01:00", "2023-02-01 00:15:00+01:00", "2023-02-01 00:30:00+01:00", "2023-02-01 00:45:00+01:00", "2023-02-01 01:00:00+01:00", "2023-02-01 01:15:00+01:00", "2023-02-01 01:30:00+01:00", "2023-02-01 01:45:00+01:00", "2023-02-01 02:00:00+01:00", "2023-02-01 02:15:00+01:00", "2023-02-01 02:30:00+01:00", "2023-02-01 02:45:00+01:00", "2023-02-01 03:00:00+01:00", "2023-02-01 03:15:00+01:00", "2023-02-01 03:30:00+01:00", "2023-02-01 03:45:00+01:00", "2023-02-01 04:00:00+01:00", "2023-02-01 04:15:00+01:00", "2023-02-01 04:30:00+01:00", "2023-02-01 04:45:00+01:00", "2023-02-01 05:00:00+01:00", "2023-02-01 05:15:00+01:00", "2023-02-01 05:30:00+01:00", "2023-02-01 05:45:00+01:00", "2023-02-01 06:00:00+01:00", "2023-02-01 06:15:00+01:00", "2023-02-01 06:30:00+01:00", "2023-02-01 06:45:00+01:00", "2023-02-01 07:00:00+01:00", "2023-02-01 07:15:00+01:00", "2023-02-01 07:30:00+01:00", "2023-02-01 07:45:00+01:00", "2023-02-01 08:00:00+01:00", "2023-02-01 08:15:00+01:00", "2023-02-01 08:30:00+01:00", "2023-02-01 08:45:00+01:00", "2023-02-01 09:00:00+01:00", "2023-02-01 09:15:00+01:00", "2023-02-01 09:30:00+01:00", "2023-02-01 09:45:00+01:00", "2023-02-01 10:00:00+01:00", "2023-02-01 10:15:00+01:00", "2023-02-01 10:30:00+01:00", "2023-02-01 10:45:00+01:00", "2023-02-01 11:00:00+01:00", "2023-02-01 11:15:00+01:00", "2023-02-01 11:30:00+01:00", "2023-02-01 11:45:00+01:00", "2023-02-01 12:00:00+01:00", "2023-02-01 12:15:00+01:00", "2023-02-01 12:30:00+01:00", "2023-02-01 12:45:00+01:00", "2023-02-01 13:00:00+01:00", "2023-02-01 13:15:00+01:00", "2023-02-01 13:30:00+01:00", "2023-02-01 13:45:00+01:00", "2023-02-01 14:00:00+01:00", "2023-02-01 14:15:00+01:00", "2023-02-01 14:30:00+01:00", "2023-02-01 14:45:00+01:00", "2023-02-01 15:00:00+01:00", "2023-02-01 15:15:00+01:00", "2023-02-01 15:30:00+01:00", "2023-02-01 15:45:00+01:00", "2023-02-01 16:00:00+01:00", "2023-02-01 16:15:00+01:00", "2023-02-01 16:30:00+01:00", "2023-02-01 16:45:00+01:00", "2023-02-01 17:00:00+01:00", "2023-02-01 17:15:00+01:00", "2023-02-01 17:30:00+01:00", "2023-02-01 17:45:00+01:00", "2023-02-01 18:00:00+01:00", "2023-02-01 18:15:00+01:00", "2023-02-01 18:30:00+01:00", "2023-02-01 18:45:00+01:00", "2023-02-01 19:00:00+01:00", "2023-02-01 19:15:00+01:00", "2023-02-01 19:30:00+01:00", "2023-02-01 19:45:00+01:00", "2023-02-01 20:00:00+01:00", "2023-02-01 20:15:00+01:00", "2023-02-01 20:30:00+01:00", "2023-02-01 20:45:00+01:00", "2023-02-01 21:00:00+01:00", "2023-02-01 21:15:00+01:00", "2023-02-01 21:30:00+01:00", "2023-02-01 21:45:00+01:00", "2023-02-01 22:00:00+01:00", "2023-02-01 22:15:00+01:00", "2023-02-01 22:30:00+01:00", "2023-02-01 22:45:00+01:00", "2023-02-01 23:00:00+01:00", "2023-02-01 23:15:00+01:00", "2023-02-01 23:30:00+01:00", "2023-02-01 23:45:00+01:00", "2023-02-02 00:00:00+01:00", "2023-02-02 00:15:00+01:00", "2023-02-02 00:30:00+01:00", "2023-02-02 00:45:00+01:00", "2023-02-02 01:00:00+01:00", "2023-02-02 01:15:00+01:00", "2023-02-02 01:30:00+01:00", "2023-02-02 01:45:00+01:00", "2023-02-02 02:00:00+01:00", "2023-02-02 02:15:00+01:00", "2023-02-02 02:30:00+01:00", "2023-02-02 02:45:00+01:00", "2023-02-02 03:00:00+01:00", "2023-02-02 03:15:00+01:00", "2023-02-02 03:30:00+01:00", "2023-02-02 03:45:00+01:00", "2023-02-02 04:00:00+01:00", "2023-02-02 04:15:00+01:00", "2023-02-02 04:30:00+01:00", "2023-02-02 04:45:00+01:00", "2023-02-02 05:00:00+01:00", "2023-02-02 05:15:00+01:00", "2023-02-02 05:30:00+01:00", "2023-02-02 05:45:00+01:00", "2023-02-02 06:00:00+01:00", "2023-02-02 06:15:00+01:00", "2023-02-02 06:30:00+01:00", "2023-02-02 06:45:00+01:00", "2023-02-02 07:00:00+01:00", "2023-02-02 07:15:00+01:00", "2023-02-02 07:30:00+01:00", "2023-02-02 07:45:00+01:00", "2023-02-02 08:00:00+01:00", "2023-02-02 08:15:00+01:00", "2023-02-02 08:30:00+01:00", "2023-02-02 08:45:00+01:00", "2023-02-02 09:00:00+01:00", "2023-02-02 09:15:00+01:00", "2023-02-02 09:30:00+01:00", "2023-02-02 09:45:00+01:00", "2023-02-02 10:00:00+01:00", "2023-02-02 10:15:00+01:00", "2023-02-02 10:30:00+01:00", "2023-02-02 10:45:00+01:00", "2023-02-02 11:00:00+01:00", "2023-02-02 11:15:00+01:00", "2023-02-02 11:30:00+01:00", "2023-02-02 11:45:00+01:00", "2023-02-02 12:00:00+01:00", "2023-02-02 12:15:00+01:00", "2023-02-02 12:30:00+01:00", "2023-02-02 12:45:00+01:00", "2023-02-02 13:00:00+01:00", "2023-02-02 13:15:00+01:00", "2023-02-02 13:30:00+01:00", "2023-02-02 13:45:00+01:00", "2023-02-02 14:00:00+01:00", "2023-02-02 14:15:00+01:00", "2023-02-02 14:30:00+01:00", "2023-02-02 14:45:00+01:00", "2023-02-02 15:00:00+01:00", "2023-02-02 15:15:00+01:00", "2023-02-02 15:30:00+01:00", "2023-02-02 15:45:00+01:00", "2023-02-02 16:00:00+01:00", "2023-02-02 16:15:00+01:00", "2023-02-02 16:30:00+01:00", "2023-02-02 16:45:00+01:00", "2023-02-02 17:00:00+01:00", "2023-02-02 17:15:00+01:00", "2023-02-02 17:30:00+01:00", "2023-02-02 17:45:00+01:00", "2023-02-02 18:00:00+01:00", "2023-02-02 18:15:00+01:00", "2023-02-02 18:30:00+01:00", "2023-02-02 18:45:00+01:00", "2023-02-02 19:00:00+01:00", "2023-02-02 19:15:00+01:00", "2023-02-02 19:30:00+01:00", "2023-02-02 19:45:00+01:00", "2023-02-02 20:00:00+01:00", "2023-02-02 20:15:00+01:00", "2023-02-02 20:30:00+01:00", "2023-02-02 20:45:00+01:00", "2023-02-02 21:00:00+01:00", "2023-02-02 21:15:00+01:00", "2023-02-02 21:30:00+01:00", "2023-02-02 21:45:00+01:00", "2023-02-02 22:00:00+01:00", "2023-02-02 22:15:00+01:00", "2023-02-02 22:30:00+01:00", "2023-02-02 22:45:00+01:00", "2023-02-02 23:00:00+01:00", "2023-02-02 23:15:00+01:00", "2023-02-02 23:30:00+01:00", "2023-02-02 23:45:00+01:00", "2023-02-03 00:00:00+01:00", "2023-02-03 00:15:00+01:00", "2023-02-03 00:30:00+01:00", "2023-02-03 00:45:00+01:00", "2023-02-03 01:00:00+01:00", "2023-02-03 01:15:00+01:00", "2023-02-03 01:30:00+01:00", "2023-02-03 01:45:00+01:00", "2023-02-03 02:00:00+01:00", "2023-02-03 02:15:00+01:00", "2023-02-03 02:30:00+01:00", "2023-02-03 02:45:00+01:00", "2023-02-03 03:00:00+01:00", "2023-02-03 03:15:00+01:00", "2023-02-03 03:30:00+01:00", "2023-02-03 03:45:00+01:00", "2023-02-03 04:00:00+01:00", "2023-02-03 04:15:00+01:00", "2023-02-03 04:30:00+01:00", "2023-02-03 04:45:00+01:00", "2023-02-03 05:00:00+01:00", "2023-02-03 05:15:00+01:00", "2023-02-03 05:30:00+01:00", "2023-02-03 05:45:00+01:00", "2023-02-03 06:00:00+01:00", "2023-02-03 06:15:00+01:00", "2023-02-03 06:30:00+01:00", "2023-02-03 06:45:00+01:00", "2023-02-03 07:00:00+01:00", "2023-02-03 07:15:00+01:00", "2023-02-03 07:30:00+01:00", "2023-02-03 07:45:00+01:00", "2023-02-03 08:00:00+01:00", "2023-02-03 08:15:00+01:00", "2023-02-03 08:30:00+01:00", "2023-02-03 08:45:00+01:00", "2023-02-03 09:00:00+01:00", "2023-02-03 09:15:00+01:00", "2023-02-03 09:30:00+01:00", "2023-02-03 09:45:00+01:00", "2023-02-03 10:00:00+01:00", "2023-02-03 10:15:00+01:00", "2023-02-03 10:30:00+01:00", "2023-02-03 10:45:00+01:00", "2023-02-03 11:00:00+01:00", "2023-02-03 11:15:00+01:00", "2023-02-03 11:30:00+01:00", "2023-02-03 11:45:00+01:00", "2023-02-03 12:00:00+01:00", "2023-02-03 12:15:00+01:00", "2023-02-03 12:30:00+01:00", "2023-02-03 12:45:00+01:00", "2023-02-03 13:00:00+01:00", "2023-02-03 13:15:00+01:00", "2023-02-03 13:30:00+01:00", "2023-02-03 13:45:00+01:00", "2023-02-03 14:00:00+01:00", "2023-02-03 14:15:00+01:00", "2023-02-03 14:30:00+01:00", "2023-02-03 14:45:00+01:00", "2023-02-03 15:00:00+01:00", "2023-02-03 15:15:00+01:00", "2023-02-03 15:30:00+01:00", "2023-02-03 15:45:00+01:00", "2023-02-03 16:00:00+01:00", "2023-02-03 16:15:00+01:00", "2023-02-03 16:30:00+01:00", "2023-02-03 16:45:00+01:00", "2023-02-03 17:00:00+01:00", "2023-02-03 17:15:00+01:00", "2023-02-03 17:30:00+01:00", "2023-02-03 17:45:00+01:00", "2023-02-03 18:00:00+01:00", "2023-02-03 18:15:00+01:00", "2023-02-03 18:30:00+01:00", "2023-02-03 18:45:00+01:00", "2023-02-03 19:00:00+01:00", "2023-02-03 19:15:00+01:00", "2023-02-03 19:30:00+01:00", "2023-02-03 19:45:00+01:00", "2023-02-03 20:00:00+01:00", "2023-02-03 20:15:00+01:00", "2023-02-03 20:30:00+01:00", "2023-02-03 20:45:00+01:00", "2023-02-03 21:00:00+01:00", "2023-02-03 21:15:00+01:00", "2023-02-03 21:30:00+01:00", "2023-02-03 21:45:00+01:00", "2023-02-03 22:00:00+01:00", "2023-02-03 22:15:00+01:00", "2023-02-03 22:30:00+01:00", "2023-02-03 22:45:00+01:00", "2023-02-03 23:00:00+01:00", "2023-02-03 23:15:00+01:00", "2023-02-03 23:30:00+01:00", "2023-02-03 23:45:00+01:00", "2023-02-04 00:00:00+01:00", "2023-02-04 00:15:00+01:00", "2023-02-04 00:30:00+01:00", "2023-02-04 00:45:00+01:00", "2023-02-04 01:00:00+01:00", "2023-02-04 01:15:00+01:00", "2023-02-04 01:30:00+01:00", "2023-02-04 01:45:00+01:00", "2023-02-04 02:00:00+01:00", "2023-02-04 02:15:00+01:00", "2023-02-04 02:30:00+01:00", "2023-02-04 02:45:00+01:00", "2023-02-04 03:00:00+01:00", "2023-02-04 03:15:00+01:00", "2023-02-04 03:30:00+01:00", "2023-02-04 03:45:00+01:00", "2023-02-04 04:00:00+01:00", "2023-02-04 04:15:00+01:00", "2023-02-04 04:30:00+01:00", "2023-02-04 04:45:00+01:00", "2023-02-04 05:00:00+01:00", "2023-02-04 05:15:00+01:00", "2023-02-04 05:30:00+01:00", "2023-02-04 05:45:00+01:00", "2023-02-04 06:00:00+01:00", "2023-02-04 06:15:00+01:00", "2023-02-04 06:30:00+01:00", "2023-02-04 06:45:00+01:00", "2023-02-04 07:00:00+01:00", "2023-02-04 07:15:00+01:00", "2023-02-04 07:30:00+01:00", "2023-02-04 07:45:00+01:00", "2023-02-04 08:00:00+01:00", "2023-02-04 08:15:00+01:00", "2023-02-04 08:30:00+01:00", "2023-02-04 08:45:00+01:00", "2023-02-04 09:00:00+01:00", "2023-02-04 09:15:00+01:00", "2023-02-04 09:30:00+01:00", "2023-02-04 09:45:00+01:00", "2023-02-04 10:00:00+01:00", "2023-02-04 10:15:00+01:00", "2023-02-04 10:30:00+01:00", "2023-02-04 10:45:00+01:00", "2023-02-04 11:00:00+01:00", "2023-02-04 11:15:00+01:00", "2023-02-04 11:30:00+01:00", "2023-02-04 11:45:00+01:00", "2023-02-04 12:00:00+01:00", "2023-02-04 12:15:00+01:00", "2023-02-04 12:30:00+01:00", "2023-02-04 12:45:00+01:00", "2023-02-04 13:00:00+01:00", "2023-02-04 13:15:00+01:00", "2023-02-04 13:30:00+01:00", "2023-02-04 13:45:00+01:00", "2023-02-04 14:00:00+01:00", "2023-02-04 14:15:00+01:00", "2023-02-04 14:30:00+01:00", "2023-02-04 14:45:00+01:00", "2023-02-04 15:00:00+01:00", "2023-02-04 15:15:00+01:00", "2023-02-04 15:30:00+01:00", "2023-02-04 15:45:00+01:00", "2023-02-04 16:00:00+01:00", "2023-02-04 16:15:00+01:00", "2023-02-04 16:30:00+01:00", "2023-02-04 16:45:00+01:00", "2023-02-04 17:00:00+01:00", "2023-02-04 17:15:00+01:00", "2023-02-04 17:30:00+01:00", "2023-02-04 17:45:00+01:00", "2023-02-04 18:00:00+01:00", "2023-02-04 18:15:00+01:00", "2023-02-04 18:30:00+01:00", "2023-02-04 18:45:00+01:00", "2023-02-04 19:00:00+01:00", "2023-02-04 19:15:00+01:00", "2023-02-04 19:30:00+01:00", "2023-02-04 19:45:00+01:00", "2023-02-04 20:00:00+01:00", "2023-02-04 20:15:00+01:00", "2023-02-04 20:30:00+01:00", "2023-02-04 20:45:00+01:00", "2023-02-04 21:00:00+01:00", "2023-02-04 21:15:00+01:00", "2023-02-04 21:30:00+01:00", "2023-02-04 21:45:00+01:00", "2023-02-04 22:00:00+01:00", "2023-02-04 22:15:00+01:00", "2023-02-04 22:30:00+01:00", "2023-02-04 22:45:00+01:00", "2023-02-04 23:00:00+01:00", "2023-02-04 23:15:00+01:00", "2023-02-04 23:30:00+01:00", "2023-02-04 23:45:00+01:00", "2023-02-05 00:00:00+01:00", "2023-02-05 00:15:00+01:00", "2023-02-05 00:30:00+01:00", "2023-02-05 00:45:00+01:00", "2023-02-05 01:00:00+01:00", "2023-02-05 01:15:00+01:00", "2023-02-05 01:30:00+01:00", "2023-02-05 01:45:00+01:00", "2023-02-05 02:00:00+01:00", "2023-02-05 02:15:00+01:00", "2023-02-05 02:30:00+01:00", "2023-02-05 02:45:00+01:00", "2023-02-05 03:00:00+01:00", "2023-02-05 03:15:00+01:00", "2023-02-05 03:30:00+01:00", "2023-02-05 03:45:00+01:00", "2023-02-05 04:00:00+01:00", "2023-02-05 04:15:00+01:00", "2023-02-05 04:30:00+01:00", "2023-02-05 04:45:00+01:00", "2023-02-05 05:00:00+01:00", "2023-02-05 05:15:00+01:00", "2023-02-05 05:30:00+01:00", "2023-02-05 05:45:00+01:00", "2023-02-05 06:00:00+01:00", "2023-02-05 06:15:00+01:00", "2023-02-05 06:30:00+01:00", "2023-02-05 06:45:00+01:00", "2023-02-05 07:00:00+01:00", "2023-02-05 07:15:00+01:00", "2023-02-05 07:30:00+01:00", "2023-02-05 07:45:00+01:00", "2023-02-05 08:00:00+01:00", "2023-02-05 08:15:00+01:00", "2023-02-05 08:30:00+01:00", "2023-02-05 08:45:00+01:00", "2023-02-05 09:00:00+01:00", "2023-02-05 09:15:00+01:00", "2023-02-05 09:30:00+01:00", "2023-02-05 09:45:00+01:00", "2023-02-05 10:00:00+01:00", "2023-02-05 10:15:00+01:00", "2023-02-05 10:30:00+01:00", "2023-02-05 10:45:00+01:00", "2023-02-05 11:00:00+01:00", "2023-02-05 11:15:00+01:00", "2023-02-05 11:30:00+01:00", "2023-02-05 11:45:00+01:00", "2023-02-05 12:00:00+01:00", "2023-02-05 12:15:00+01:00", "2023-02-05 12:30:00+01:00", "2023-02-05 12:45:00+01:00", "2023-02-05 13:00:00+01:00", "2023-02-05 13:15:00+01:00", "2023-02-05 13:30:00+01:00", "2023-02-05 13:45:00+01:00", "2023-02-05 14:00:00+01:00", "2023-02-05 14:15:00+01:00", "2023-02-05 14:30:00+01:00", "2023-02-05 14:45:00+01:00", "2023-02-05 15:00:00+01:00", "2023-02-05 15:15:00+01:00", "2023-02-05 15:30:00+01:00", "2023-02-05 15:45:00+01:00", "2023-02-05 16:00:00+01:00", "2023-02-05 16:15:00+01:00", "2023-02-05 16:30:00+01:00", "2023-02-05 16:45:00+01:00", "2023-02-05 17:00:00+01:00", "2023-02-05 17:15:00+01:00", "2023-02-05 17:30:00+01:00", "2023-02-05 17:45:00+01:00", "2023-02-05 18:00:00+01:00", "2023-02-05 18:15:00+01:00", "2023-02-05 18:30:00+01:00", "2023-02-05 18:45:00+01:00", "2023-02-05 19:00:00+01:00", "2023-02-05 19:15:00+01:00", "2023-02-05 19:30:00+01:00", "2023-02-05 19:45:00+01:00", "2023-02-05 20:00:00+01:00", "2023-02-05 20:15:00+01:00", "2023-02-05 20:30:00+01:00", "2023-02-05 20:45:00+01:00", "2023-02-05 21:00:00+01:00", "2023-02-05 21:15:00+01:00", "2023-02-05 21:30:00+01:00", "2023-02-05 21:45:00+01:00", "2023-02-05 22:00:00+01:00", "2023-02-05 22:15:00+01:00", "2023-02-05 22:30:00+01:00", "2023-02-05 22:45:00+01:00", "2023-02-05 23:00:00+01:00", "2023-02-05 23:15:00+01:00", "2023-02-05 23:30:00+01:00", "2023-02-05 23:45:00+01:00", "2023-02-06 00:00:00+01:00", "2023-02-06 00:15:00+01:00", "2023-02-06 00:30:00+01:00", "2023-02-06 00:45:00+01:00", "2023-02-06 01:00:00+01:00", "2023-02-06 01:15:00+01:00", "2023-02-06 01:30:00+01:00", "2023-02-06 01:45:00+01:00", "2023-02-06 02:00:00+01:00", "2023-02-06 02:15:00+01:00", "2023-02-06 02:30:00+01:00", "2023-02-06 02:45:00+01:00", "2023-02-06 03:00:00+01:00", "2023-02-06 03:15:00+01:00", "2023-02-06 03:30:00+01:00", "2023-02-06 03:45:00+01:00", "2023-02-06 04:00:00+01:00", "2023-02-06 04:15:00+01:00", "2023-02-06 04:30:00+01:00", "2023-02-06 04:45:00+01:00", "2023-02-06 05:00:00+01:00", "2023-02-06 05:15:00+01:00", "2023-02-06 05:30:00+01:00", "2023-02-06 05:45:00+01:00", "2023-02-06 06:00:00+01:00", "2023-02-06 06:15:00+01:00", "2023-02-06 06:30:00+01:00", "2023-02-06 06:45:00+01:00", "2023-02-06 07:00:00+01:00", "2023-02-06 07:15:00+01:00", "2023-02-06 07:30:00+01:00", "2023-02-06 07:45:00+01:00", "2023-02-06 08:00:00+01:00", "2023-02-06 08:15:00+01:00", "2023-02-06 08:30:00+01:00", "2023-02-06 08:45:00+01:00", "2023-02-06 09:00:00+01:00", "2023-02-06 09:15:00+01:00", "2023-02-06 09:30:00+01:00", "2023-02-06 09:45:00+01:00", "2023-02-06 10:00:00+01:00", "2023-02-06 10:15:00+01:00", "2023-02-06 10:30:00+01:00", "2023-02-06 10:45:00+01:00", "2023-02-06 11:00:00+01:00", "2023-02-06 11:15:00+01:00", "2023-02-06 11:30:00+01:00", "2023-02-06 11:45:00+01:00" ], "y": [ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144 ] } ], "layout": { "autosize": true, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" } }, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ "2023-01-01", "2023-02-06 11:45" ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "" }, "type": "date", "zerolinecolor": "#E1E5ED" }, "yaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 71.16666666666667, 147.83333333333334 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s.demand.resample('15T').mean()[['Tsource (VDG)', 'Tsink (VDG)']].iplot()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Tsource (VDG)Tsink (VDG)MW (VDG)Tsource (NDG)Tsink (NDG)MW (NDG)Total demand
count52560.052560.052560.052560.052560.052560.052560.0
mean75.0144.01.075.0144.01.02.0
std0.00.00.00.00.00.00.0
min75.0144.01.075.0144.01.02.0
25%75.0144.01.075.0144.01.02.0
50%75.0144.01.075.0144.01.02.0
75%75.0144.01.075.0144.01.02.0
max75.0144.01.075.0144.01.02.0
\n", "
" ], "text/plain": [ " Tsource (VDG) Tsink (VDG) MW (VDG) Tsource (NDG) Tsink (NDG) \\\n", "count 52560.0 52560.0 52560.0 52560.0 52560.0 \n", "mean 75.0 144.0 1.0 75.0 144.0 \n", "std 0.0 0.0 0.0 0.0 0.0 \n", "min 75.0 144.0 1.0 75.0 144.0 \n", "25% 75.0 144.0 1.0 75.0 144.0 \n", "50% 75.0 144.0 1.0 75.0 144.0 \n", "75% 75.0 144.0 1.0 75.0 144.0 \n", "max 75.0 144.0 1.0 75.0 144.0 \n", "\n", " MW (NDG) Total demand \n", "count 52560.0 52560.0 \n", "mean 1.0 2.0 \n", "std 0.0 0.0 \n", "min 1.0 2.0 \n", "25% 1.0 2.0 \n", "50% 1.0 2.0 \n", "75% 1.0 2.0 \n", "max 1.0 2.0 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.demand.describe()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Load in data" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def add_afrr_prices(c, case):\n", " try:\n", " aFRR_signal = pd.read_csv(f'data/aFRR_{c.start}.csv', delimiter=';', decimal=',', index_col='datetime')\n", " aFRR_signal.index = case.data.index\n", " except:\n", " data = get_tennet_data('balansdelta2017', pd.to_datetime(c.start), pd.to_datetime(c.end))\n", " data.index = data[[\"datum\", \"tijd\"]].apply(lambda x: \" \".join(x), axis=1)\n", " data.index = pd.to_datetime(data.index, format=\"%d-%m-%Y %H:%M\").tz_localize(\n", " \"Europe/Amsterdam\", ambiguous=True\n", " )\n", " data = data[~data.index.duplicated(keep=\"first\")]\n", " date_ix = pd.date_range(\n", " data.index[0], data.index[-1], freq=\"1T\", tz=\"Europe/Amsterdam\"\n", " )\n", " data = data.reindex(date_ix)\n", " aFRR_signal = data[['Hoogste_prijs_opregelen', 'Mid_prijs_opregelen', 'Laagste_prijs_afregelen']]\n", " aFRR_signal.to_csv(f'data/aFRR_{c.start}.csv', sep=';', decimal=',', index_label='datetime')\n", "\n", " try:\n", " aFRR_prices = pd.read_csv(f'data/aFRR_prices_{c.start}.csv', delimiter=';', decimal=',', index_col='datetime')\n", " aFRR_prices.index = case.data.index\n", " except:\n", " data = get_aFRR_prices_nl(pd.to_datetime(c.start), pd.to_datetime(c.end))\n", " data.index = pd.date_range(\n", " start=c.start,\n", " end=pd.to_datetime(c.end) + timedelta(days=1),\n", " tz='Europe/Amsterdam', \n", " freq='15T', \n", " closed='left'\n", " )\n", " aFRR_prices = data.reindex(case.data.index, method='ffill')\n", " aFRR_prices.to_csv(f'data/aFRR_prices_{c.start}.csv', sep=';', decimal=',', index_label='datetime')\n", " \n", " case.data = pd.concat([case.data, aFRR_signal, aFRR_prices], axis=1)\n", " return case" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def increase_volatility_by_factor(col, factor):\n", " mean = col.mean()\n", " diff_to_mean = col - mean\n", " new_diff = diff_to_mean * factor\n", " return mean + new_diff\n", "\n", "def multiply_by_factor(col, factor):\n", " mean = col.mean()\n", " diff_to_mean = col - mean\n", " \n", " cond = diff_to_mean > 0\n", " diff_to_mean[cond] *= factor\n", " diff_to_mean[~cond] /= factor\n", " return mean + diff_to_mean" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:531: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:443: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:531: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:443: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:531: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\prices.py:443: FutureWarning:\n", "\n", "'T' is deprecated and will be removed in a future version, please use 'min' instead.\n", "\n" ] } ], "source": [ "def load_data(c, s):\n", " if hasattr(s, 'afrr_case'):\n", " s.afrr_case = add_afrr_prices(c, s.afrr_case)\n", " \n", " for case in s.cases:\n", " case.add_gasprices()\n", " case.add_co2prices(perMWh=True)\n", " \n", " case.data['Gas prices (€/MWh)'] *= c.gas_price_multiplier\n", " case.data['CO2 prices (€/MWh)'] *= c.co2_price_multiplier\n", " case.data['CO2 prices (€/ton)'] *= c.co2_price_multiplier\n", " \n", " for case in s.optcases:\n", " case.data['NEG'] = multiply_by_factor(case.data['NEG'], c.e_price_multiplier)\n", " case.data['ForeNeg'] = multiply_by_factor(case.data['ForeNeg'], c.e_price_multiplier)\n", " case.data['DAM'] = multiply_by_factor(case.data['DAM'], c.e_price_multiplier)\n", " \n", " case.data['NEG'] = increase_volatility_by_factor(case.data['NEG'], c.e_price_volatility_multiplier)\n", " case.data['ForeNeg'] = increase_volatility_by_factor(case.data['ForeNeg'], c.e_price_volatility_multiplier)\n", " \n", " if hasattr(s, 'afrr_case'):\n", " for case in [s.afrr_case]:\n", " case.data['Hoogste_prijs_opregelen'] = multiply_by_factor(case.data['Hoogste_prijs_opregelen'], c.e_price_multiplier)\n", " case.data['Hoogste_prijs_opregelen'] = increase_volatility_by_factor(case.data['Hoogste_prijs_opregelen'], c.e_price_volatility_multiplier)\n", " case.data['aFRR_up'] = multiply_by_factor(case.data['aFRR_up'], c.e_price_multiplier)\n", " case.data['aFRR_up'] = increase_volatility_by_factor(case.data['aFRR_up'], c.e_price_volatility_multiplier)\n", "\n", " s.demand[['Tsource (VDG)', 'Tsource (NDG)']] += c.tsource_delta\n", " s.demand[['Tsink (VDG)', 'Tsink (NDG)']] += c.tsink_delta\n", " for case in s.cases:\n", " case.data = pd.concat([case.data, s.demand], axis=1) \n", "\n", " s.eb_ode_g = get_tax_rate('gas', 2020, 4)['EB+ODE'] * c.energy_tax_multiplier\n", " s.eb_ode_e = get_tax_rate('electricity', 2020, 4)['EB+ODE'] * c.energy_tax_multiplier\n", " s.grid_fees = get_grid_tariffs_electricity(c.grid_operator, 2020, c.connection_type)\n", " s.grid_fee_per_MWh = s.grid_fees['kWh tarief'] * 1000\n", " return s\n", "\n", "s = load_data(c, s)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DAMPOSNEGForeNegForePosGas prices (€/MWh)CO2 prices (€/ton)CO2 prices (€/MWh)Tsource (VDG)Tsink (VDG)MW (VDG)Tsource (NDG)Tsink (NDG)MW (NDG)Total demand
2023-01-01 00:00:00+01:00-3.61-209.4-209.4NaNNaN63.9985.231.0175.0144.01.075.0144.01.02.0
2023-01-01 00:01:00+01:00-3.61-209.4-209.4NaNNaN63.9985.231.0175.0144.01.075.0144.01.02.0
2023-01-01 00:02:00+01:00-3.61-209.4-209.4NaNNaN63.9985.231.0175.0144.01.075.0144.01.02.0
2023-01-01 00:03:00+01:00-3.61-209.4-209.4NaNNaN63.9985.231.0175.0144.01.075.0144.01.02.0
2023-01-01 00:04:00+01:00-3.61-209.4-209.4NaNNaN63.9985.231.0175.0144.01.075.0144.01.02.0
\n", "
" ], "text/plain": [ " DAM POS NEG ForeNeg ForePos \\\n", "2023-01-01 00:00:00+01:00 -3.61 -209.4 -209.4 NaN NaN \n", "2023-01-01 00:01:00+01:00 -3.61 -209.4 -209.4 NaN NaN \n", "2023-01-01 00:02:00+01:00 -3.61 -209.4 -209.4 NaN NaN \n", "2023-01-01 00:03:00+01:00 -3.61 -209.4 -209.4 NaN NaN \n", "2023-01-01 00:04:00+01:00 -3.61 -209.4 -209.4 NaN NaN \n", "\n", " Gas prices (€/MWh) CO2 prices (€/ton) \\\n", "2023-01-01 00:00:00+01:00 63.998 5.23 \n", "2023-01-01 00:01:00+01:00 63.998 5.23 \n", "2023-01-01 00:02:00+01:00 63.998 5.23 \n", "2023-01-01 00:03:00+01:00 63.998 5.23 \n", "2023-01-01 00:04:00+01:00 63.998 5.23 \n", "\n", " CO2 prices (€/MWh) Tsource (VDG) Tsink (VDG) \\\n", "2023-01-01 00:00:00+01:00 1.01 75.0 144.0 \n", "2023-01-01 00:01:00+01:00 1.01 75.0 144.0 \n", "2023-01-01 00:02:00+01:00 1.01 75.0 144.0 \n", "2023-01-01 00:03:00+01:00 1.01 75.0 144.0 \n", "2023-01-01 00:04:00+01:00 1.01 75.0 144.0 \n", "\n", " MW (VDG) Tsource (NDG) Tsink (NDG) MW (NDG) \\\n", "2023-01-01 00:00:00+01:00 1.0 75.0 144.0 1.0 \n", "2023-01-01 00:01:00+01:00 1.0 75.0 144.0 1.0 \n", "2023-01-01 00:02:00+01:00 1.0 75.0 144.0 1.0 \n", "2023-01-01 00:03:00+01:00 1.0 75.0 144.0 1.0 \n", "2023-01-01 00:04:00+01:00 1.0 75.0 144.0 1.0 \n", "\n", " Total demand \n", "2023-01-01 00:00:00+01:00 2.0 \n", "2023-01-01 00:01:00+01:00 2.0 \n", "2023-01-01 00:02:00+01:00 2.0 \n", "2023-01-01 00:03:00+01:00 2.0 \n", "2023-01-01 00:04:00+01:00 2.0 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.hpcase.data.head()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Assets" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### COP curve" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def cop_curve(Tsink, Tsource):\n", " Tsink += 273\n", " Tsource += 273\n", "\n", " c1 = 0.267 * Tsink / (Tsink - Tsource)\n", " c2 = 0.333 * Tsink / (Tsink - Tsource)\n", " \n", " return Polynomial([c2, c1])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$x \\mapsto \\text{1.08290551} + \\text{0.86827559}\\,x$" ], "text/plain": [ "Polynomial([1.08290551, 0.86827559], domain=[-1, 1], window=[-1, 1], symbol='x')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cop_curve(140, 13)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$x \\mapsto \\text{2.05267164} + \\text{1.64583582}\\,x$" ], "text/plain": [ "Polynomial([2.05267164, 1.64583582], domain=[-1, 1], window=[-1, 1], symbol='x')" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cop_curve(140, 73)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "heatpump = Heatpump(\n", " name='Heatpump',\n", " max_th_power=1,\n", " min_th_power=0,\n", " cop_curve=cop_curve\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "#heatpump.get_cop(heat_output=load, Tsink=140, Tsource=13)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "#heatpump.get_cop(heat_output=load, Tsink=140, Tsource=99)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "import itertools\n", "\n", "source_Ts = np.arange(25, 75) + 273\n", "sink_Ts = np.arange(80, 170) + 273\n", "\n", "df = pd.DataFrame(columns=list(sink_Ts), index=list(source_Ts))\n", "for sourceT, sinkT in itertools.product(source_Ts, sink_Ts):\n", " df.loc[sourceT, sinkT] = heatpump.get_cop(heat_output=0.5, Tsink=sinkT, Tsource=sourceT)\n", " \n", "#df.to_csv('cops_at_50perc_load.csv', sep=';', decimal=',')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sourceT = 63 + 273\n", "sinkT = 140 + 273\n", "loads = np.arange(0, 1, 0.01)\n", "\n", "cop_series = pd.Series(index=loads, dtype='float')\n", "load_series = pd.Series(index=loads, dtype='float')\n", "for load in loads:\n", " cop = heatpump.get_cop(heat_output=load, Tsink=sinkT, Tsource=sourceT)\n", " cop_series[load] = cop\n", " load_series[load] = load / cop " ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "line": { "color": "rgba(70, 165, 121, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99 ], "y": [ 2.966727272727273, 2.9905145454545456, 3.0143018181818184, 3.038089090909091, 3.061876363636364, 3.0856636363636367, 3.109450909090909, 3.133238181818182, 3.1570254545454546, 3.1808127272727273, 3.2046, 3.228387272727273, 3.2521745454545457, 3.2759618181818184, 3.299749090909091, 3.323536363636364, 3.3473236363636367, 3.371110909090909, 3.394898181818182, 3.4186854545454546, 3.4424727272727274, 3.46626, 3.490047272727273, 3.5138345454545457, 3.5376218181818184, 3.561409090909091, 3.585196363636364, 3.6089836363636367, 3.632770909090909, 3.656558181818182, 3.6803454545454546, 3.7041327272727274, 3.72792, 3.751707272727273, 3.7754945454545457, 3.7992818181818184, 3.823069090909091, 3.846856363636364, 3.8706436363636367, 3.894430909090909, 3.9182181818181823, 3.9420054545454546, 3.9657927272727274, 3.98958, 4.0133672727272725, 4.037154545454546, 4.060941818181819, 4.084729090909091, 4.1085163636363635, 4.132303636363637, 4.156090909090909, 4.179878181818182, 4.203665454545455, 4.227452727272728, 4.25124, 4.275027272727273, 4.298814545454546, 4.322601818181818, 4.346389090909091, 4.3701763636363635, 4.393963636363637, 4.417750909090909, 4.441538181818182, 4.465325454545455, 4.489112727272728, 4.5129, 4.5366872727272725, 4.560474545454546, 4.584261818181819, 4.608049090909091, 4.6318363636363635, 4.655623636363637, 4.679410909090909, 4.703198181818182, 4.726985454545455, 4.750772727272727, 4.77456, 4.798347272727273, 4.822134545454546, 4.845921818181818, 4.869709090909091, 4.893496363636364, 4.917283636363637, 4.941070909090909, 4.964858181818182, 4.988645454545455, 5.012432727272728, 5.03622, 5.0600072727272725, 5.083794545454546, 5.107581818181819, 5.131369090909091, 5.1551563636363635, 5.178943636363637, 5.20273090909091, 5.226518181818182, 5.250305454545455, 5.274092727272727, 5.29788, 5.321667272727273 ] } ], "layout": { "height": 400, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" }, "text": "Heatpump COP curve at Tsource=336 and Tsink=413" }, "width": 600, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 0, 0.99 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "Thermal load in %" }, "type": "linear", "zerolinecolor": "#E1E5ED" }, "yaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 2.835897272727273, 5.452497272727274 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "COP" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig_cop_curve = cop_series.iplot(title=f'Heatpump COP curve at Tsource={sourceT} and Tsink={sinkT}', yTitle='COP', xTitle='Thermal load in %', colors=recoygreen, asFigure=True, dimensions=(600,400))\n", "fig_cop_curve" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "line": { "color": "rgba(70, 165, 121, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99 ], "y": [ 0, 0.0033439061566176206, 0.006635035642205099, 0.009874628130481539, 0.013063884771785808, 0.016203969677953466, 0.019296011339037935, 0.022341103975497906, 0.025340308829254695, 0.02829465539681968, 0.031205142607501717, 0.03407273994952729, 0.03689838854674019, 0.03968300218839269, 0.042427468314395256, 0.045132648958256395, 0.04779938164981738, 0.050428480279767506, 0.05302073592781468, 0.0555769176562815, 0.05809777327079901, 0.0605840300496789, 0.06303639544345843, 0.0654555577460314, 0.06784218673870272, 0.07019693430843256, 0.0725204350414685, 0.07481330679350166, 0.07707615123742258, 0.0793095543896968, 0.08151408711632802, 0.08369030561932544, 0.0858387519045473, 0.08795995423174613, 0.09005442754760123, 0.09212267390248396, 0.09416518285166414, 0.09618243184163125, 0.0981748865821705, 0.10014300140480323, 0.10208721960817069, 0.10400797379091307, 0.1059056861725685, 0.10778076890299229, 0.10963362436077255, 0.111464645441096, 0.11327421583349674, 0.11506271028990016, 0.11683049488335537, 0.11857792725783152, 0.12030535686943587, 0.12201312521939525, 0.12370156607912748, 0.12537100570771395, 0.1270217630620713, 0.12865415000010633, 0.13026847147712606, 0.1318650257357627, 0.13344410448966204, 0.13500599310117295, 0.1365509707532648, 0.13807931061589135, 0.1395912800070082, 0.1410871405484442, 0.14256714831681658, 0.14403155398967404, 0.1454806029870414, 0.14691453560853515, 0.14833358716620976, 0.1497379881132895, 0.1511279641689336, 0.15250373643917636, 0.15386552153417912, 0.1552135316819232, 0.15654797483847094, 0.15786905479491375, 0.1591769712811233, 0.16047192006641678, 0.16175409305724284, 0.16302367839198997, 0.16428086053301671, 0.16552582035599753, 0.1667587352366754, 0.16797977913510836, 0.16918912267749475, 0.17038693323565696, 0.17157337500426212, 0.17274860907585451, 0.17391279351377145, 0.17506608342301222, 0.17620863101912662, 0.17734058569518749, 0.17846209408690894, 0.17957330013597017, 0.1806743451516022, 0.1817653678704926, 0.18284650451506196, 0.1839178888501633, 0.18497965223825377, 0.18603192369308727 ] } ], "layout": { "height": 400, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" }, "text": "Heatpump Load curve at Tsource=336 and Tsink=413" }, "width": 600, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 0, 0.99 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "Thermal load in %" }, "type": "linear", "zerolinecolor": "#E1E5ED" }, "yaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ -0.010335106871838182, 0.19636703056492544 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "E-load" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig_load_curve = load_series.iplot(title=f'Heatpump Load curve at Tsource={sourceT} and Tsink={sinkT}', yTitle='E-load', xTitle='Thermal load in %', colors=recoygreen, asFigure=True, dimensions=(600,400))\n", "fig_load_curve" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def cop_curve_new(Tsink, Tsource):\n", " Tsink += 273\n", " Tsource += 273\n", " Tlift = Tsink - Tsource\n", "\n", " c0 = 0.0005426*Tlift**2 - 0.1178*Tlift + 6.962\n", " c1 = 6.7058 \n", " c2 = -1.79\n", " \n", " return Polynomial([c0, c1, c2])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "data": { "text/latex": [ "$x \\mapsto \\text{19.2496754} + \\text{6.7058}\\,x - \\text{1.79}\\,x^{2}$" ], "text/plain": [ "Polynomial([19.2496754, 6.7058 , -1.79 ], domain=[-1, 1], window=[-1, 1], symbol='x')" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sourceT = 63 + 273\n", "sinkT = 140 + 273\n", "cop_curve_new(sourceT, sinkT)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "heatpump = Heatpump(\n", " name='Heatpump',\n", " max_th_power=1,\n", " min_th_power=0,\n", " cop_curve=cop_curve_new\n", ")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "import itertools\n", "\n", "source_Ts = np.arange(25, 75) + 273\n", "sink_Ts = np.arange(80, 170) + 273\n", "\n", "df = pd.DataFrame(columns=list(sink_Ts), index=list(source_Ts))\n", "for sourceT, sinkT in itertools.product(source_Ts, sink_Ts):\n", " df.loc[sourceT, sinkT] = heatpump.get_cop(heat_output=0.5, Tsink=sinkT, Tsource=sourceT)\n", " \n", "#df.to_csv('cops_at_50perc_load.csv', sep=';', decimal=',')" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sourceT = 63 + 273\n", "sinkT = 140 + 273\n", "loads = np.arange(0, 1, 0.01)\n", "\n", "cop_series = pd.Series(index=loads, dtype='float')\n", "load_series = pd.Series(index=loads, dtype='float')\n", "for load in loads:\n", " cop = heatpump.get_cop(heat_output=load, Tsink=sinkT, Tsource=sourceT)\n", " cop_series[load] = cop\n", " load_series[load] = load / cop " ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": true }, "data": [ { "line": { "color": "rgba(255, 153, 51, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ], "y": [ 5.670859999999999, 5.6915346, 5.713294399999999, 5.7361394, 5.760069599999999, 5.785085, 5.811185599999999, 5.838371399999999, 5.8666424, 5.8959985999999995, 5.92644, 5.957966599999999, 5.9905783999999995, 6.024275399999999, 6.0590576, 6.094924999999999, 6.131877599999999, 6.1699154, 6.2090384, 6.2492466, 6.290539999999999, 6.3329186, 6.376382399999999, 6.4209314, 6.4665656, 6.513284999999999, 6.5610896, 6.609979399999999, 6.659954399999999, 6.7110145999999995, 6.763159999999999, 6.8163906, 6.8707063999999995, 6.926107399999999, 6.9825935999999995, 7.040164999999999, 7.098821599999999, 7.158563399999999, 7.219390399999999, 7.281302599999999, 7.3443, 7.4083826, 7.4735504, 7.539803399999999, 7.607141599999999, 7.675565, 7.7450736, 7.8156674, 7.887346399999999, 7.9601106 ] } ], "layout": { "height": 400, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" } }, "width": 800, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 50, 99 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "Source Temperature" }, "type": "linear", "zerolinecolor": "#E1E5ED" }, "yaxis": { "gridcolor": "#E1E5ED", "range": [ 0, 8 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "COP" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sourceTs = np.arange(50, 100)\n", "sinkT = 140 + 273\n", "load = 1 \n", "cop_series = pd.Series(index=sourceTs, dtype='float')\n", "\n", "for sourceT in sourceTs:\n", " cop = heatpump.get_cop(heat_output=load, Tsink=sinkT, Tsource=sourceT + 273)\n", " cop_series[sourceT] = cop\n", " \n", "cop_series.iplot(yrange=[0, 8], xTitle='Source Temperature', yTitle='COP', dimensions=(800, 400))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "tags": [ "exclude" ] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "line": { "color": "rgba(70, 165, 121, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 ], "y": [ 5.670859999999999, 5.6915346, 5.713294399999999, 5.7361394, 5.760069599999999, 5.785085, 5.811185599999999, 5.838371399999999, 5.8666424, 5.8959985999999995, 5.92644, 5.957966599999999, 5.9905783999999995, 6.024275399999999, 6.0590576, 6.094924999999999, 6.131877599999999, 6.1699154, 6.2090384, 6.2492466, 6.290539999999999, 6.3329186, 6.376382399999999, 6.4209314, 6.4665656, 6.513284999999999, 6.5610896, 6.609979399999999, 6.659954399999999, 6.7110145999999995, 6.763159999999999, 6.8163906, 6.8707063999999995, 6.926107399999999, 6.9825935999999995, 7.040164999999999, 7.098821599999999, 7.158563399999999, 7.219390399999999, 7.281302599999999, 7.3443, 7.4083826, 7.4735504, 7.539803399999999, 7.607141599999999, 7.675565, 7.7450736, 7.8156674, 7.887346399999999, 7.9601106 ] } ], "layout": { "height": 400, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" }, "text": "Heatpump COP curve at Tsource=99 and Tsink=413" }, "width": 600, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 50, 99 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "Thermal load in %" }, "type": "linear", "zerolinecolor": "#E1E5ED" }, "yaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 5.5436794111111105, 8.087291188888889 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "COP" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig_cop_curve = cop_series.iplot(title=f'Heatpump COP curve at Tsource={sourceT} and Tsink={sinkT}', yTitle='COP', xTitle='Thermal load in %', colors=recoygreen, asFigure=True, dimensions=(600,400))\n", "fig_cop_curve" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "line": { "color": "rgba(70, 165, 121, 1.0)", "dash": "solid", "shape": "linear", "width": 1.3 }, "mode": "lines", "name": "None", "text": "", "type": "scatter", "x": [ 0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35000000000000003, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41000000000000003, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47000000000000003, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.5700000000000001, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.6900000000000001, 0.7000000000000001, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.8200000000000001, 0.8300000000000001, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.9400000000000001, 0.9500000000000001, 0.96, 0.97, 0.98, 0.99 ], "y": [ 0, 0.00850807211850316, 0.016104675235534917, 0.022935106492286486, 0.029115399906568706, 0.03473934099748045, 0.03988355596999005, 0.04461126508370607, 0.048975092125209264, 0.05301919577656159, 0.05678090644357679, 0.060291997432218684, 0.06357968234954905, 0.06666740513638515, 0.0695754713464852, 0.07232155668390045, 0.07492111976731003, 0.07738773952415831, 0.07973339279672587, 0.08196868416620423, 0.08410303732232081, 0.08614485528156572, 0.08810165521385199, 0.08998018245164234, 0.09178650733752816, 0.09352610785041693, 0.0952039403885654, 0.09682450064377537, 0.09839187614824202, 0.0999097917935062, 0.1013816493942751, 0.1028105621867263, 0.10419938500220484, 0.10555074073590748, 0.10686704363073368, 0.10815051981465848, 0.10940322546236086, 0.11062706289573099, 0.11182379489114753, 0.11299505742234985, 0.11414237103495804, 0.11526715102110956, 0.11637071653938762, 0.11745429880548436, 0.11851904846227734, 0.11956604222371162, 0.12059628887467255, 0.12161073469857517, 0.12261026839541019, 0.12359572554524889, 0.12456789266552722, 0.12552751090464875, 0.12647527940943054, 0.1274118583995571, 0.12833787197840962, 0.1292539107063224, 0.13016053395941793, 0.1310582720946313, 0.13194762843930027, 0.13282908112173666, 0.13370308475746062, 0.13457007200425405, 0.135430454997836, 0.13628462667876703, 0.1371329620201263, 0.13797581916456111, 0.1388135404784701, 0.1396464535303291, 0.14047487199950326, 0.14129909652129, 0.14211941547340162, 0.14293610570861848, 0.1437494332379117, 0.14455965386794903, 0.14536701379654757, 0.14617175016932538, 0.14697409160051966, 0.1477742586606847, 0.1485724643337514, 0.14936891444572115, 0.15016380806707763, 0.1509573378908286, 0.15174969058793275, 0.15254104714172634, 0.15333158316283413, 0.1541214691859326, 0.15491087094962566, 0.1556999496605956, 0.15648886224310354, 0.1572777615748304, 0.15806679670997664, 0.15885611309046993, 0.15964585274606663, 0.1604361544840767, 0.16122715406938884, 0.16201898439542295, 0.16281177564659427, 0.16360565545283148, 0.16440074903665358, 0.1651971793532761 ] } ], "layout": { "height": 400, "legend": { "bgcolor": "#F5F6F9", "font": { "color": "#4D5663" } }, "paper_bgcolor": "#F5F6F9", "plot_bgcolor": "#F5F6F9", "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "color": "#4D5663" }, "text": "Heatpump Load curve at Tsource=99 and Tsink=413" }, "width": 600, "xaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ 0, 0.99 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "Thermal load in %" }, "type": "linear", "zerolinecolor": "#E1E5ED" }, "yaxis": { "autorange": true, "gridcolor": "#E1E5ED", "range": [ -0.009177621075182005, 0.1743748004284581 ], "showgrid": true, "tickfont": { "color": "#4D5663" }, "title": { "font": { "color": "#4D5663" }, "text": "E-load" }, "type": "linear", "zerolinecolor": "#E1E5ED" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig_load_curve = load_series.iplot(title=f'Heatpump Load curve at Tsource={sourceT} and Tsink={sinkT}', yTitle='E-load', xTitle='Thermal load in %', colors=recoygreen, asFigure=True, dimensions=(600,400))\n", "fig_load_curve" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Create and assign assets" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def create_and_assign_assets(c, s):\n", " heatpump_vdg = Heatpump(\n", " name='Heatpump VDG',\n", " max_th_power=c.hp_vdg_e_power,\n", " min_th_power=c.hp_vdg_e_power * c.hp_min_load,\n", " cop_curve=cop_curve_new\n", " )\n", "\n", " heatpump_ndg = Heatpump(\n", " name='Heatpump NDG',\n", " max_th_power=c.hp_ndg_e_power,\n", " min_th_power=c.hp_ndg_e_power * c.hp_min_load,\n", " cop_curve=cop_curve_new\n", " )\n", "\n", " capex_vdg = c.hp_capex*(heatpump_vdg.max_th_power) \n", " capex_ndg = c.hp_capex*(heatpump_ndg.max_th_power)\n", " heatpump_vdg.set_financials(capex=capex_vdg, opex=c.hp_opex*capex_vdg, devex=c.hp_devex*capex_vdg, lifetime=25)\n", " heatpump_ndg.set_financials(capex=capex_ndg, opex=c.hp_opex*capex_ndg, devex=c.hp_devex*capex_ndg, lifetime=25)\n", "\n", " gasboiler = GasBoiler(\n", " name='Gasboiler',\n", " max_th_output=c.gb_power,\n", " efficiency=c.gb_efficiency\n", " )\n", " gasboiler.set_financials(capex=0, opex=0, devex=0, lifetime=25)\n", " \n", " waterstorage = HotWaterStorage(\n", " name='HotWaterStorage',\n", " rated_power=c.storage_power, \n", " capacity_per_volume=c.storage_cap_per_volume,\n", " volume=c.storage_volume, \n", " temperature=c.storage_temperature,\n", " min_storagelevel=c.storage_min_level,\n", " # initial_storagelevel=c.storage_initial_level\n", " )\n", " capex_ws = c.storage_capex_per_MW * waterstorage.max_power + c.storage_capex_per_MWh * waterstorage.capacity\n", " opex_ws = c.storage_opex_perc_of_capex * capex_ws\n", " waterstorage.set_financials(capex=capex_ws, opex=opex_ws, devex=0, lifetime=c.storage_lifetime)\n", " \n", " s.baseline.add_asset(gasboiler)\n", " s.hpcase.add_asset(heatpump_vdg)\n", " s.hpcase.add_asset(heatpump_ndg)\n", " s.storage_case_PCM.add_asset(heatpump_vdg)\n", " s.storage_case_PCM.add_asset(heatpump_ndg)\n", " s.storage_case_PCM.add_asset(waterstorage)\n", "# s.hpcase_sde.add_asset(heatpump_vdg)\n", "# s.hpcase_sde.add_asset(heatpump_ndg)\n", "# s.optcase1.add_asset(heatpump_vdg)\n", "# s.optcase1.add_asset(heatpump_ndg)\n", "# s.optcase1.add_asset(gasboiler)\n", "# s.afrr_case.add_asset(heatpump_vdg)\n", "# s.afrr_case.add_asset(heatpump_ndg)\n", "# s.afrr_case.add_asset(gasboiler)\n", " return s\n", "\n", "s = create_and_assign_assets(c, s)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "HotWaterStorage(name=HotWaterStorage, rated_power=25, capacity=50.0, temperature=95, min_storagelevel=2.5)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.storage_case_PCM.assets['HotWaterStorage']" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Optimization" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Strategies" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def baseline_sim(case):\n", " gasboiler = list(case.assets.values())[0]\n", " data = case.data\n", " demand = (data['MW (VDG)'] + data['MW (NDG)']).to_list()\n", "\n", " minutes = iter(range(len(case.data)))\n", " th_output = [0] * len(case.data)\n", " gas_input = [0] * len(case.data)\n", "\n", " for m in minutes:\n", " th_output[m], gas_input[m] = gasboiler.set_heat_output(demand[m])\n", "\n", " data['output_MW_th'] = np.array(th_output)\n", " data['output_MWh_th'] = np.array(data['output_MW_th']/60)\n", " data['gb_input_MW'] = np.array(gas_input)\n", " data['gb_input_MWh'] = np.array(data['gb_input_MW']/60)\n", " case.data = data.round(5)\n", " return case" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def hponly(case):\n", " hp_vdg = case.assets['Heatpump VDG']\n", " hp_ndg = case.assets['Heatpump NDG']\n", " demand_vdg = case.data['MW (VDG)'].to_list()\n", " demand_ndg = case.data['MW (NDG)'].to_list()\n", " Tsink_vdg = case.data['Tsink (VDG)'].to_list()\n", " Tsink_ndg = case.data['Tsink (NDG)'].to_list()\n", " Tsource_vdg = case.data['Tsource (VDG)'].to_list()\n", " Tsource_ndg = case.data['Tsource (NDG)'].to_list()\n", "\n", " hp_vdg_input = [0] * len(case.data)\n", " hp_ndg_input = [0] * len(case.data)\n", " hp_vdg_output = [0] * len(case.data)\n", " hp_ndg_output = [0] * len(case.data)\n", "\n", " minutes = iter(range(len(case.data)))\n", " for m in minutes:\n", " demand = demand_vdg[m]\n", " if demand != 0:\n", " hp_vdg_input[m], hp_vdg_output[m] = hp_vdg.set_heat_output(\n", " heat_output=demand,\n", " Tsink=Tsink_vdg[m],\n", " Tsource=Tsource_vdg[m]\n", " )\n", "\n", " demand = demand_ndg[m]\n", " if demand != 0:\n", " hp_ndg_input[m], hp_ndg_output[m] = hp_ndg.set_heat_output(\n", " heat_output=demand_ndg[m],\n", " Tsink=Tsink_ndg[m],\n", " Tsource=Tsource_ndg[m]\n", " )\n", "\n", " case.data['hp_output_MW'] = np.array(hp_vdg_output) + np.array(hp_ndg_output)\n", " case.data['hp_input_MW'] = np.array(hp_vdg_input) + np.array(hp_ndg_input)\n", " case.data['cop'] = case.data['hp_output_MW'] / -case.data['hp_input_MW']\n", " \n", " for col in case.data.columns:\n", " if col.endswith('MW'):\n", " case.data[col + 'h'] = case.data[col] / 60\n", "\n", " case.data = case.data.round(3)\n", " return case" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "Tref = 0\n", "Cp = 4190 #J/kgK\n", "MWtoJs = 1000_000\n", "\n", "def power_to_mass_flow(power_MW, Tsink, Tref, Cp):\n", " return power_MW * MWtoJs /(Cp*(Tsink - Tref))\n", "def energy_to_storage(hp_heat_output_MW, process_demand_MW):\n", " return hp_heat_output_MW - process_demand_MW #MW\n", "\n", "def Tsource_calculation(Tstorage, discharge_power, Tsource, process_mass_flow): \n", " discharge_mass_flow = power_to_mass_flow(discharge_power, Tstorage, Tref, Cp)\n", " \n", " combined_mass_flow = (discharge_mass_flow + process_mass_flow)\n", " if combined_mass_flow == 0:\n", " return Tsource\n", " else: \n", " return (Tstorage * discharge_mass_flow + Tsource * process_mass_flow) / combined_mass_flow" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def hp_storage_opt_enginge(c, ws, hp_vdg, hp_ndg, pos, neg, dam, demand_vdg, demand_ndg, tsource_vdg, tsink_vdg, tsource_ndg, tsink_ndg):\n", " \n", " from_storage_vdg_MW = 0\n", " to_storage_vdg_MW = 0 \n", " from_storage_ndg_MW = 0\n", " to_storage_ndg_MW = 0 \n", " \n", " if neg < dam - c.threshold:\n", " # overproduce\n", " if demand_vdg != 0:\n", " desired_hp_load_vdg = min(demand_vdg + ws.charging_power_limit, hp_vdg.max_th_power)\n", " e_load_vdg, th_load_vdg = hp_vdg.set_heat_output(desired_hp_load_vdg, tsink_vdg, tsource_vdg)\n", "\n", " to_storage_vdg_MW = th_load_vdg - demand_vdg\n", " to_storage_vdg_MW = -ws.charge(round(to_storage_vdg_MW, 3))\n", "\n", " extra_charging_power_constraint = ws.max_power - to_storage_vdg_MW\n", " else:\n", " e_load_vdg, th_load_vdg = (0,0)\n", " \n", " if demand_ndg != 0:\n", " desired_hp_load_ndg = min(\n", " demand_ndg + min(ws.charging_power_limit, extra_charging_power_constraint), \n", " hp_ndg.max_th_power\n", " )\n", " e_load_ndg, th_load_ndg = hp_ndg.set_heat_output(desired_hp_load_ndg, tsink_ndg, tsource_ndg)\n", "\n", " to_storage_ndg_MW = th_load_ndg - demand_ndg\n", " to_storage_ndg_MW = -ws.charge(round(to_storage_ndg_MW, 3))\n", " else:\n", " e_load_ndg, th_load_ndg = (0,0)\n", " \n", "\n", " elif pos > dam + c.threshold:\n", " # take from storage\n", " if demand_vdg != 0:\n", " from_process_massflow_vdg = power_to_mass_flow(demand_vdg, tsink_vdg, Tref, Cp)\n", " try:\n", " from_storage_vdg_MW = ws.discharging_power_limit\n", " tsource_vdg = Tsource_calculation(ws.temperature, from_storage_vdg_MW, tsource_vdg, from_process_massflow_vdg)\n", " e_load_vdg, th_load_vdg = hp_vdg.set_heat_output(demand_vdg, tsink_vdg, tsource_vdg)\n", " except: \n", " from_storage_vdg_MW = 0\n", " tsource_vdg = Tsource_calculation(ws.temperature, from_storage_vdg_MW, tsource_vdg, from_process_massflow_vdg)\n", " e_load_vdg, th_load_vdg = hp_vdg.set_heat_output(demand_vdg, tsink_vdg, tsource_vdg)\n", "\n", " from_storage_vdg_MW = ws.discharge(round(from_storage_vdg_MW, 3))\n", " else:\n", " e_load_vdg, th_load_vdg = (0,0)\n", " \n", " #print({f'from_storage_vdg_MW='})\n", " if demand_ndg != 0:\n", " from_process_massflow_ndg = power_to_mass_flow(demand_ndg, tsink_ndg, Tref, Cp)\n", " \n", " try:\n", " from_storage_ndg_MW = min(ws.max_power - from_storage_vdg_MW, ws.discharging_power_limit)\n", " tsource_ndg = Tsource_calculation(ws.temperature, from_storage_ndg_MW, tsource_ndg, from_process_massflow_ndg)\n", " e_load_ndg, th_load_ndg = hp_ndg.set_heat_output(demand_ndg, tsink_ndg, tsource_ndg)\n", " except: \n", " from_storage_vdg_MW = 0\n", " tsource_ndg = Tsource_calculation(ws.temperature, from_storage_ndg_MW, tsource_ndg, from_process_massflow_ndg)\n", " e_load_ndg, th_load_ndg = hp_ndg.set_heat_output(demand_ndg, tsink_ndg, tsource_ndg)\n", "\n", " from_storage_ndg_MW = ws.discharge(round(from_storage_ndg_MW))\n", " else:\n", " e_load_ndg, th_load_ndg = (0,0)\n", " else:\n", " e_load_vdg, th_load_vdg = hp_vdg.set_heat_output(\n", " heat_output=demand_vdg,\n", " Tsink=tsink_vdg,\n", " Tsource=tsource_vdg\n", " )\n", "\n", " e_load_ndg, th_load_ndg = hp_ndg.set_heat_output(\n", " heat_output=demand_ndg,\n", " Tsink=tsink_ndg,\n", " Tsource=tsource_ndg\n", " )\n", " return e_load_vdg, th_load_vdg, e_load_ndg, th_load_ndg, tsource_vdg, tsource_ndg, to_storage_vdg_MW, from_storage_vdg_MW, to_storage_ndg_MW, from_storage_ndg_MW, ws, hp_vdg, hp_ndg\n", "# Neg-take price, Pos-feed price" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def hponly_with_storage(case):\n", " hp_vdg = case.assets['Heatpump VDG']\n", " hp_ndg = case.assets['Heatpump NDG']\n", " ws = case.assets['HotWaterStorage']\n", " demands_vdg = case.data['MW (VDG)'].to_list()\n", " demands_ndg = case.data['MW (NDG)'].to_list()\n", " Tsink_vdg = case.data['Tsink (VDG)'].to_list()\n", " Tsink_ndg = case.data['Tsink (NDG)'].to_list()\n", " Tsource_vdg = case.data['Tsource (VDG)'].to_list()\n", " Tsource_ndg = case.data['Tsource (NDG)'].to_list()\n", " dam_prices = case.data['DAM'].to_list()\n", " pos_prices = case.data['POS'].to_list()\n", " neg_prices = case.data['NEG'].to_list()\n", "\n", " hp_vdg_input = [0] * len(case.data)\n", " hp_ndg_input = [0] * len(case.data)\n", " hp_vdg_output = [0] * len(case.data)\n", " hp_ndg_output = [0] * len(case.data)\n", "\n", " minutes = len(case.data)\n", " storage_levels = [None] * minutes\n", " to_storage_list = [0] * minutes\n", " from_storage_vdg_list = [0] * minutes\n", " to_storage_vdg_list = [0] * minutes\n", " from_storage_ndg_list = [0] * minutes\n", " to_storage_ndg_list = [0] * minutes\n", " \n", " new_tsources_vdg = case.data['Tsource (VDG)'].to_list()\n", " new_tsources_ndg = case.data['Tsource (NDG)'].to_list()\n", " \n", " ws.set_chargelevel(ws.min_chargelevel)\n", " \n", " for m in range(minutes):\n", " tsource_vdg = Tsource_vdg[m]\n", " tsink_vdg = Tsink_vdg[m]\n", " tsource_ndg = Tsource_ndg[m]\n", " tsink_ndg = Tsink_ndg[m]\n", " demand_vdg = demands_vdg[m]\n", " demand_ndg = demands_ndg[m]\n", " \n", " e_load_vdg, th_load_vdg, e_load_ndg, th_load_ndg, tsource_vdg, tsource_ndg, to_storage_vdg_MW, from_storage_vdg_MW, to_storage_ndg_MW, from_storage_ndg_MW, ws, hp_vdg, hp_ndg = hp_storage_opt_enginge(\n", " c, ws, hp_vdg, hp_ndg, pos_prices[m], neg_prices[m], dam_prices[m], demand_vdg, demand_ndg, \n", " tsource_vdg, tsink_vdg, tsource_ndg, tsink_ndg\n", " )\n", " \n", " hp_vdg_input[m] = e_load_vdg\n", " hp_vdg_output[m] = th_load_vdg\n", " hp_ndg_input[m] = e_load_ndg\n", " hp_ndg_output[m] = th_load_ndg\n", " \n", " storage_levels[m] = ws.chargelevel\n", " new_tsources_vdg[m] = tsource_vdg\n", " new_tsources_ndg[m] = tsource_ndg\n", " to_storage_vdg_list[m] = to_storage_vdg_MW\n", " from_storage_vdg_list[m] = from_storage_vdg_MW\n", " to_storage_ndg_list[m] = to_storage_ndg_MW\n", " from_storage_ndg_list[m] = from_storage_ndg_MW\n", " \n", " case.data['hp_output_MW'] = np.array(hp_vdg_output) + np.array(hp_ndg_output)\n", " case.data['hp_input_MW'] = np.array(hp_vdg_input) + np.array(hp_ndg_input)\n", " case.data['cop'] = case.data['hp_output_MW'] / -case.data['hp_input_MW']\n", " case.data['tsource_vdg'] = new_tsources_vdg\n", " case.data['tsource_ndg'] = new_tsources_ndg\n", " case.data['to_storage_ndg_MW'] = to_storage_ndg_list\n", " case.data['from_storage_ndg_MW'] = from_storage_ndg_list\n", " case.data['to_storage_vdg_MW'] = to_storage_vdg_list\n", " case.data['from_storage_vdg_MW'] = from_storage_vdg_list\n", " case.data['to_storage_MW'] = case.data['to_storage_vdg_MW'] + case.data['to_storage_ndg_MW']\n", " case.data['from_storage_MW'] = case.data['from_storage_vdg_MW'] + case.data['from_storage_ndg_MW']\n", " case.data['storage_level_MWh'] = storage_levels\n", " \n", " for col in case.data.columns:\n", " if col.endswith('MW'):\n", " case.data[col + 'h'] = case.data[col] / 60\n", "\n", " case.data = case.data.round(3)\n", " return case\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# charge_times = print(sum(s.storage_case_PCM.data['to_storage_MW']!= 0))\n", "# discharge_times = print(sum(s.storage_case_PCM.data['from_storage_MW']!= 0))\n", "# # 154476 times out of 525600, the storage is used to charge/dischage\n", "# # from 39 000 to 110 000 discharge time increases\n" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\assets.py:263: UserWarning:\n", "\n", "Chosen heat output is out of range [0.0 - 23.3]. Heat output is being limited to the closest boundary.\n", "\n", "C:\\Users\\shahla.huseynova\\source\\repos\\Mooi-Kickstart\\pyrecoy\\pyrecoy\\pyrecoy2\\assets.py:263: UserWarning:\n", "\n", "Chosen heat output is out of range [0.0 - 7.7]. Heat output is being limited to the closest boundary.\n", "\n" ] }, { "ename": "ValueError", "evalue": "cannot convert float NaN to integer", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[40], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m s\u001b[38;5;241m.\u001b[39mstorage_case_PCM \u001b[38;5;241m=\u001b[39m \u001b[43mhponly_with_storage\u001b[49m\u001b[43m(\u001b[49m\u001b[43ms\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstorage_case_PCM\u001b[49m\u001b[43m)\u001b[49m\n", "Cell \u001b[1;32mIn[38], line 41\u001b[0m, in \u001b[0;36mhponly_with_storage\u001b[1;34m(case)\u001b[0m\n\u001b[0;32m 38\u001b[0m demand_vdg \u001b[38;5;241m=\u001b[39m demands_vdg[m]\n\u001b[0;32m 39\u001b[0m demand_ndg \u001b[38;5;241m=\u001b[39m demands_ndg[m]\n\u001b[1;32m---> 41\u001b[0m e_load_vdg, th_load_vdg, e_load_ndg, th_load_ndg, tsource_vdg, tsource_ndg, to_storage_vdg_MW, from_storage_vdg_MW, to_storage_ndg_MW, from_storage_ndg_MW, ws, hp_vdg, hp_ndg \u001b[38;5;241m=\u001b[39m \u001b[43mhp_storage_opt_enginge\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 42\u001b[0m \u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mws\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhp_vdg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhp_ndg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpos_prices\u001b[49m\u001b[43m[\u001b[49m\u001b[43mm\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mneg_prices\u001b[49m\u001b[43m[\u001b[49m\u001b[43mm\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdam_prices\u001b[49m\u001b[43m[\u001b[49m\u001b[43mm\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdemand_vdg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdemand_ndg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mtsource_vdg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtsink_vdg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtsource_ndg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtsink_ndg\u001b[49m\n\u001b[0;32m 44\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 46\u001b[0m hp_vdg_input[m] \u001b[38;5;241m=\u001b[39m e_load_vdg\n\u001b[0;32m 47\u001b[0m hp_vdg_output[m] \u001b[38;5;241m=\u001b[39m th_load_vdg\n", "Cell \u001b[1;32mIn[37], line 64\u001b[0m, in \u001b[0;36mhp_storage_opt_enginge\u001b[1;34m(c, ws, hp_vdg, hp_ndg, pos, neg, dam, demand_vdg, demand_ndg, tsource_vdg, tsink_vdg, tsource_ndg, tsink_ndg)\u001b[0m\n\u001b[0;32m 61\u001b[0m tsource_ndg \u001b[38;5;241m=\u001b[39m Tsource_calculation(ws\u001b[38;5;241m.\u001b[39mtemperature, from_storage_ndg_MW, tsource_ndg, from_process_massflow_ndg)\n\u001b[0;32m 62\u001b[0m e_load_ndg, th_load_ndg \u001b[38;5;241m=\u001b[39m hp_ndg\u001b[38;5;241m.\u001b[39mset_heat_output(demand_ndg, tsink_ndg, tsource_ndg)\n\u001b[1;32m---> 64\u001b[0m from_storage_ndg_MW \u001b[38;5;241m=\u001b[39m ws\u001b[38;5;241m.\u001b[39mdischarge(\u001b[38;5;28;43mround\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfrom_storage_ndg_MW\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[0;32m 65\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 66\u001b[0m e_load_ndg, th_load_ndg \u001b[38;5;241m=\u001b[39m (\u001b[38;5;241m0\u001b[39m,\u001b[38;5;241m0\u001b[39m)\n", "\u001b[1;31mValueError\u001b[0m: cannot convert float NaN to integer" ] } ], "source": [ "s.storage_case_PCM = hponly_with_storage(s.storage_case_PCM)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data.sample(2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data[['DAM', 'POS', 'NEG', 'hp_output_MW', 'to_storage_MW', 'Total demand']].describe()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data[['DAM', 'POS', 'NEG', 'hp_output_MW', 'to_storage_MW', 'from_storage_MW','Total demand']].sample(20)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.hpcase.data.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# hp_selection = s.hpcase.data[['DAM', 'POS', 'NEG', 'hp_input_MW', 'hp_output_MW', 'cop', 'Total demand']]\n", "hp_selection = s.hpcase.data[['DAM', 'POS', 'NEG', 'Total demand']]\n", "storage_selection = s.storage_case_PCM.data[['hp_input_MW', 'hp_output_MW', 'cop', 'to_storage_MW', 'from_storage_MW']]\n", "\n", "selection = pd.concat([hp_selection, storage_selection], axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "selection.sample(20)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "selection.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "########################\n", "\n", "# This is where we left\n", "\n", "########################" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def cost_function(th_load, cop, electricity_cost, alt_heat_price, demand):\n", " return (\n", " th_load / cop * electricity_cost\n", " + (demand - th_load) * alt_heat_price\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def hybrid_imb_optimisation(case, decimals, s):\n", " gb = case.assets['Gasboiler']\n", " hp_vdg = case.assets['Heatpump VDG']\n", " hp_ndg = case.assets['Heatpump NDG']\n", " demand_vdg = case.data['MW (VDG)'].round(decimals).to_list()\n", " demand_ndg = case.data['MW (NDG)'].round(decimals).to_list()\n", " Tsink_vdg = case.data['Tsink (VDG)'].round(decimals).to_list()\n", " Tsink_ndg = case.data['Tsink (NDG)'].round(decimals).to_list()\n", " Tsource_vdg = case.data['Tsource (VDG)'].round(decimals).to_list()\n", " Tsource_ndg = case.data['Tsource (NDG)'].round(decimals).to_list()\n", " fore_neg = case.data[c.forecast].fillna(999).round(decimals).to_list()\n", " gas_prices = case.data['Gas prices (€/MWh)'].round(decimals).to_list()\n", " co2_prices = case.data['CO2 prices (€/MWh)'].round(decimals).to_list()\n", " eb_ode_g = s.eb_ode_g\n", " eb_ode_e = s.eb_ode_e\n", " \n", " gb_input = [0] * len(case.data)\n", " gb_output = [0] * len(case.data)\n", "\n", " minutes = range(len(case.data))\n", " hp_output = [0] * len(case.data)\n", " hp_input = [0] * len(case.data)\n", "\n", " for m in tqdm(minutes):\n", " dem_vgd = demand_vdg[m]\n", " if dem_vgd != 0:\n", " max_load = min(hp_vdg.max_th_power, dem_vgd)\n", " min_load = hp_vdg.min_th_power\n", " Tsink = Tsink_vdg[m]\n", " Tsource = Tsource_vdg[m]\n", " cop_max_load = hp_vdg.get_cop(heat_output=max_load, Tsink=Tsink, Tsource=Tsource)\n", " cop_min_load = hp_vdg.get_cop(heat_output=min_load, Tsink=Tsink_vdg[m], Tsource=Tsource_vdg[m])\n", " \n", " cost_full_load = cost_function(\n", " th_load=max_load,\n", " cop=cop_max_load,\n", " electricity_cost=fore_neg[m] + eb_ode_e - c.sde_switch_price_correction,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " cost_min_load = cost_function(\n", " th_load=min_load,\n", " cop=cop_min_load,\n", " electricity_cost=fore_neg[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " if cost_full_load < cost_min_load:\n", " hp_vdg_input, hp_vdg_output = hp_vdg.set_heat_output(max_load, Tsink, Tsource)\n", " else:\n", " hp_vdg_input, hp_vdg_output = hp_vdg.set_heat_output(min_load, Tsink, Tsource)\n", " else:\n", " hp_vdg_input, hp_vdg_output = (0, 0)\n", "\n", " dem_ngd = demand_ndg[m]\n", " if dem_ngd != 0:\n", " max_load = min(hp_ndg.max_th_power, dem_ngd)\n", " min_load = hp_ndg.min_th_power\n", " Tsink = Tsink_ndg[m]\n", " Tsource = Tsource_ndg[m]\n", " cop_max_load = hp_ndg.get_cop(heat_output=max_load, Tsink=Tsink, Tsource=Tsource)\n", " cop_min_load = hp_ndg.get_cop(heat_output=min_load, Tsink=Tsink, Tsource=Tsource)\n", " \n", " cost_full_load = cost_function(\n", " th_load=max_load,\n", " cop=cop_max_load,\n", " electricity_cost=fore_neg[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_ngd\n", " )\n", " \n", " cost_min_load = cost_function(\n", " th_load=min_load,\n", " cop=cop_min_load,\n", " electricity_cost=fore_neg[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " if cost_full_load <= cost_min_load:\n", " hp_ndg_input, hp_ndg_output = hp_ndg.set_heat_output(max_load, Tsink=Tsink, Tsource=Tsource)\n", " else:\n", " hp_ndg_input, hp_ndg_output = hp_ndg.set_heat_output(min_load, Tsink=Tsink, Tsource=Tsource)\n", " else:\n", " hp_ndg_input, hp_ndg_output = (0, 0)\n", "\n", " hp_out = hp_vdg_output + hp_ndg_output\n", " hp_output[m] = hp_out\n", " hp_input[m] = hp_vdg_input + hp_ndg_input\n", " remaining_demand = max(dem_vgd+dem_ngd-hp_out, 0)\n", " gb_output[m], gb_input[m] = gb.set_heat_output(remaining_demand)\n", "\n", " case.data['hp_output_MW'] = np.array(hp_output)\n", " case.data['hp_input_MW'] = np.array(hp_input)\n", " case.data['gb_output_MW'] = np.array(gb_output)\n", " case.data['gb_input_MW'] = np.array(gb_input)\n", "\n", " for col in case.data.columns:\n", " if col.endswith('MW'):\n", " case.data[col + 'h'] = case.data[col] / 60\n", "\n", " case.data = case.data.round(5)\n", " return case" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "aFRR\n", "* Bid in a volume (X MW) --> Strategy is to only bid in on aFRR down\n", "* Remaining demand is filed in by gasboiler\n", "* Bid price at switch price?\n", "* Assume direct response to 0% for now?\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def calc_afrr_capacity(case):\n", " hp_vdg = case.assets['Heatpump VDG']\n", " hp_ndg = case.assets['Heatpump NDG']\n", " \n", " capacity = 0\n", " for hp in [hp_vdg, hp_ndg]:\n", " max_th_output = hp.max_th_power\n", " cop = hp.get_cop(max_th_output, Tsink=135, Tsource=60)\n", " e_power = max_th_output / cop\n", " capacity += e_power\n", " return capacity" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def aFRR_optimisation(case, s):\n", " s.afrr_case.afrr_capacity = calc_afrr_capacity(s.afrr_case)\n", " gb = case.assets['Gasboiler']\n", " hp_vdg = case.assets['Heatpump VDG']\n", " hp_ndg = case.assets['Heatpump NDG']\n", " demand_vdg = case.data['MW (VDG)'].to_list()\n", " demand_ndg = case.data['MW (NDG)'].to_list()\n", " Tsink_vdg = case.data['Tsink (VDG)'].to_list()\n", " Tsink_ndg = case.data['Tsink (NDG)'].to_list()\n", " Tsource_vdg = case.data['Tsource (VDG)'].to_list()\n", " Tsource_ndg = case.data['Tsource (NDG)'].to_list()\n", " afrr_up = case.data['Hoogste_prijs_opregelen'].fillna(-999).to_list()\n", " gas_prices = case.data['Gas prices (€/MWh)'].to_list()\n", " co2_prices = case.data['CO2 prices (€/MWh)'].to_list()\n", " eb_ode_g = s.eb_ode_g\n", " eb_ode_e = s.eb_ode_e\n", " \n", " gb_input = [0] * len(case.data)\n", " gb_output = [0] * len(case.data)\n", "\n", " minutes = range(len(case.data))\n", " hp_output = [0] * len(case.data)\n", " hp_input = [0] * len(case.data)\n", "\n", " for m in tqdm(minutes):\n", " dem_vgd = demand_vdg[m]\n", " if dem_vgd != 0:\n", " max_load = min(hp_vdg.max_th_power, dem_vgd)\n", " min_load = hp_vdg.min_th_power\n", " Tsink = Tsink_vdg[m]\n", " Tsource = Tsource_vdg[m]\n", " cop_max_load = hp_vdg.get_cop(heat_output=max_load, Tsink=Tsink, Tsource=Tsource)\n", " cop_min_load = hp_vdg.get_cop(heat_output=min_load, Tsink=Tsink_vdg[m], Tsource=Tsource_vdg[m])\n", " \n", " cost_full_load = cost_function(\n", " th_load=max_load,\n", " cop=cop_max_load,\n", " electricity_cost=afrr_up[m] + eb_ode_e - c.sde_switch_price_correction,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " cost_min_load = cost_function(\n", " th_load=min_load,\n", " cop=cop_min_load,\n", " electricity_cost=afrr_up[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " if cost_full_load < cost_min_load:\n", " hp_vdg_input, hp_vdg_output = hp_vdg.set_heat_output(max_load, Tsink, Tsource)\n", " else:\n", " hp_vdg_input, hp_vdg_output = hp_vdg.set_heat_output(min_load, Tsink, Tsource)\n", " else:\n", " hp_vdg_input, hp_vdg_output = (0, 0)\n", "\n", " dem_ngd = demand_ndg[m]\n", " if dem_ngd != 0:\n", " max_load = min(hp_ndg.max_th_power, dem_ngd)\n", " min_load = hp_ndg.min_th_power\n", " Tsink = Tsink_ndg[m]\n", " Tsource = Tsource_ndg[m]\n", " cop_max_load = hp_ndg.get_cop(heat_output=max_load, Tsink=Tsink, Tsource=Tsource)\n", " cop_min_load = hp_ndg.get_cop(heat_output=min_load, Tsink=Tsink, Tsource=Tsource)\n", " \n", " cost_full_load = cost_function(\n", " th_load=max_load,\n", " cop=cop_max_load,\n", " electricity_cost=afrr_up[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_ngd\n", " )\n", " \n", " cost_min_load = cost_function(\n", " th_load=min_load,\n", " cop=cop_min_load,\n", " electricity_cost=afrr_up[m] + eb_ode_e,\n", " alt_heat_price=gas_prices[m] + co2_prices[m] + eb_ode_g/case.assets['Gasboiler'].efficiency,\n", " demand=dem_vgd\n", " )\n", " \n", " if cost_full_load <= cost_min_load:\n", " hp_ndg_input, hp_ndg_output = hp_ndg.set_heat_output(max_load, Tsink=Tsink, Tsource=Tsource)\n", " else:\n", " hp_ndg_input, hp_ndg_output = hp_ndg.set_heat_output(min_load, Tsink=Tsink, Tsource=Tsource)\n", " else:\n", " hp_ndg_input, hp_ndg_output = (0, 0)\n", "\n", " hp_out = hp_vdg_output + hp_ndg_output\n", " hp_output[m] = hp_out\n", " hp_input[m] = hp_vdg_input + hp_ndg_input\n", " remaining_demand = max(dem_vgd+dem_ngd-hp_out, 0)\n", " gb_output[m], gb_input[m] = gb.set_heat_output(remaining_demand)\n", "\n", " case.data['hp_output_MW'] = np.array(hp_output)\n", " case.data['hp_input_MW'] = np.array(hp_input)\n", " case.data['gb_output_MW'] = np.array(gb_output)\n", " case.data['gb_input_MW'] = np.array(gb_input)\n", "\n", " for col in case.data.columns:\n", " if col.endswith('MW'):\n", " case.data[col + 'h'] = case.data[col] / 60\n", "\n", " case.data = case.data.round(5)\n", " return case" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Run optimisation" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def run_optimisation(c, s):\n", " s.baseline = baseline_sim(s.baseline)\n", " s.hpcase = hponly(s.hpcase)\n", " s.storage_case_PCM = hponly_with_storage(s.storage_case_PCM)\n", "# s.hpcase_sde.assign_algorithm(hponly)\n", "# s.hpcase_sde.run()\n", " \n", "# s.optcase1.assign_algorithm(hybrid_imb_optimisation)\n", "# s.optcase1.run(decimals=2, s=s)\n", " \n", "# s.afrr_case.assign_algorithm(aFRR_optimisation)\n", "# s.afrr_case.run(s=s)\n", " \n", " for case in [s.hpcase, s.storage_case_PCM]: # [s.hpcase, s.hpcase_sde, s.optcase1, s.afrr_case]:\n", " case.mean_cop = case.data['hp_output_MW'].sum() / case.data['hp_input_MW'].abs().sum()\n", " \n", " return s\n", "\n", "s = run_optimisation(c, s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.hpcase.data['hp_output_MW'].sum() /s.hpcase.data['hp_input_MW'].abs().sum() " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data['hp_output_MW'].sum() /s.storage_case_PCM.data['hp_input_MW'].abs().sum() " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.hpcase.data.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "vis_data = s.storage_case_PCM.data[[\n", " 'storage_level_MWh', \n", " #'to_storage_ndg_MW', \n", " #'to_storage_vdg_MW', \n", " 'to_storage_MW', \n", " #'from_storage_ndg_MW', \n", " #'from_storage_vdg_MW',\n", " 'from_storage_MW'\n", "]]\n", "\n", "cops = pd.concat([s.hpcase.data['cop'], s.storage_case_PCM.data['cop']], axis=1)\n", "vis_data = pd.concat([vis_data, cops], axis=1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "vis_data.loc['2023-01-01', :].iplot(subplots=True, shape=(5,1), dimensions=(1000, 800))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "total_to_storage = s.storage_case_PCM.data['to_storage_MWh'].sum()\n", "total_from_storage = s.storage_case_PCM.data['from_storage_MWh'].sum()\n", "total_to_storage, total_from_storage" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hp_output = s.storage_case_PCM.data['hp_output_MW'].round(2)\n", "demand_and_to_storage = (s.storage_case_PCM.data['Total demand'] + s.storage_case_PCM.data['to_storage_MW']).round(2)\n", "hp_output.equals(demand_and_to_storage)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pd.concat([hp_output, demand_and_to_storage], axis=1).resample('H').sum().iplot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Financials" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def calculate_sde_subsidy(c, s, case):\n", " hp_capacity = abs(case.assets['Heatpump VDG'].max_th_power) + abs(case.assets['Heatpump NDG'].max_th_power)\n", " case.full_load_hours = abs(case.data['hp_output_MWh'].sum() / hp_capacity)\n", "\n", " subsidized_hours = min(case.full_load_hours, 8000)\n", " subsidized_MWh = subsidized_hours * hp_capacity\n", "\n", " base_amount_per_MWh_th = round(c.sde_base_amount*0.173 + c.longterm_gas_price, 2)\n", " base_subsidy_amount = round(base_amount_per_MWh_th * subsidized_MWh, 2)\n", " long_term_gas_price_LHV = round(EURperHHV_to_EURperLHV(c.longterm_gas_price), 2)\n", " base_amount_gas = (2/3)*long_term_gas_price_LHV*0.9\n", " mean_ttf_price_LHV = round(EURperHHV_to_EURperLHV(case.data['Gas prices (€/MWh)'].mean()), 2)\n", " correction_amount_gas = max(mean_ttf_price_LHV, base_amount_gas)\n", " avoided_gas_consumption = subsidized_MWh/0.9\n", " correction_gas = round(correction_amount_gas * avoided_gas_consumption, 2)\n", "\n", " base_amount_co2 = (2/3)*c.longterm_co2_price\n", " avoided_co2_emission = avoided_gas_consumption * 0.226\n", " mean_ets_price = round(EURperHHV_to_EURperLHV(case.data['CO2 prices (€/ton)'].mean()), 2)\n", " correction_amount_co2 = max(base_amount_co2, mean_ets_price)\n", " correction_co2 = round(correction_amount_co2 * avoided_co2_emission, 2)\n", "\n", " sde_subsidy_corrected = max(base_subsidy_amount - (correction_gas + correction_co2), 0)\n", " sde_per_MWh_th = sde_subsidy_corrected / subsidized_MWh\n", " sde_per_MWh_e = sde_subsidy_corrected / case.data['hp_input_MWh'].abs().sum()\n", "\n", " case.sde_results = {\n", " 'base_amount': base_subsidy_amount,\n", " 'correction_gas': correction_gas,\n", " 'correction_co2': correction_co2,\n", " 'corrected_amount': sde_subsidy_corrected,\n", " 'sde_per_MWh_th': sde_per_MWh_th,\n", " 'sde_per_MWh_e': sde_per_MWh_e\n", " }\n", " return case" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def collect_cashflows(c, s):\n", " s.hpcase.generate_electr_market_results(nom_col='hp_input_MWh', real_col='hp_input_MWh')\n", " s.storage_case_PCM.data['nomination_MWh'] = s.hpcase.data['hp_input_MWh']\n", " s.storage_case_PCM.generate_electr_market_results(nom_col='nomination_MWh', real_col='hp_input_MWh')\n", "\n", "# s.hpcase_sde.generate_electr_market_results(nom_col='hp_input_MWh', real_col='hp_input_MWh')\n", " \n", "# s.optcase1.data['DA Nom'] = s.hpcase.data['hp_input_MWh'] * c.day_ahead_buying_perc\n", "# s.optcase1.generate_electr_market_results(nom_col='DA Nom', real_col='hp_input_MWh')\n", " \n", "# s.afrr_case.data['POS'] = s.afrr_case.data['aFRR_up'].fillna(value=s.afrr_case.data['POS'])\n", "# s.afrr_case.data['DA Nom'] = s.hpcase.data['hp_input_MWh']\n", "# s.afrr_case.generate_electr_market_results(nom_col='DA Nom', real_col='hp_input_MWh')\n", "# s.afrr_case.add_cashflow('aFRR capacity fee (€)', c.afrr_capacity_fee * s.afrr_case.afrr_capacity)\n", " \n", " for case in [s.baseline]: #, s.optcase1, s.afrr_case]:\n", " case.add_gas_costs(gasvolumes_col='gb_input_MWh')\n", " case.add_co2_costs(volume_cols='gb_input_MWh', fuel='gas')\n", " case.add_eb_ode(commodity='gas', tax_bracket=c.tax_bracket_g)\n", " \n", " for case in [s.hpcase, s.storage_case_PCM]: #, s.hpcase_sde, s.optcase1, s.afrr_case]:\n", " \n", " case.add_eb_ode(commodity='electricity', tax_bracket=c.tax_bracket_e, cons_col='hp_input_MWh')\n", " case.add_grid_costs(\n", " power_MW_col='hp_input_MW',\n", " grid_operator=c.grid_operator,\n", " year=2020, \n", " connection_type=c.connection_type\n", " )\n", " \n", " for case in s.sde_cases:\n", " case = calculate_sde_subsidy(c=c, s=s, case=case)\n", " case.add_cashflow('SDE++ subsidy (€)', case.sde_results['corrected_amount'])\n", " return s\n", "\n", "s = collect_cashflows(c, s)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def calculate_financials(c, s):\n", " for case in s.cases:\n", " case.calculate_ebitda(c.project_duration)\n", "\n", " for case in [s.hpcase, s.storage_case_PCM]: #, s.hpcase_sde, s.optcase1, s.afrr_case]:\n", " case.calculate_business_case(\n", " project_duration=c.project_duration, \n", " discount_rate=c.discount_rate, \n", " baseline=s.baseline\n", " )\n", " \n", " return s\n", "\n", "s = calculate_financials(c, s)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Visualisations" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "fig_demands_over_time = s.demand['Total demand'].resample('H').mean().iplot(\n", " title='Smurfit Kappa: Heat demand by Hour in MW', \n", " yTitle='MW', \n", " colors=recoygreen,\n", " asFigure=True,\n", " dimensions=(800, 400)\n", ")\n", "fig_demands_over_time" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "demands_fig = s.demand[['Tsource (VDG)', 'Tsink (VDG)', 'Tsource (NDG)', 'Tsink (NDG)']].resample('H').mean().iplot(\n", " kind='box',\n", " title='Smurfit Kappa: Source and Sink temperatures',\n", " color=recoygreen,\n", " yTitle='Temperature in degrees C',\n", " legend=False,\n", " asFigure=True,\n", " dimensions=(800, 400)\n", ")\n", "demands_fig" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "temp_comparison = pd.concat([s.storage_case_PCM.data[['tsource_ndg', 'tsource_vdg']], s.storage_case_PCM.data[['Tsource (NDG)', 'Tsource (VDG)']]], axis=1)\n", "temp_comparison.columns = ['Tsource (NDG) -after', 'Tsource (VDG) - after', 'Tsource (NDG) - before', 'Tsource (VDG) - before']\n", "temp_comparison.resample('15T').mean().iplot()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "s.storage_case_PCM.data[['tsource_ndg', 'tsource_vdg']].idxmin()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# s.storage_case_PCM.data.loc['2019-01-04 07:45:00']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "case = s.storage_case_PCM\n", "hp_vdg = case.assets['Heatpump VDG']\n", "hp_ndg = case.assets['Heatpump NDG']\n", "ws = case.assets['HotWaterStorage']\n", "ws.storage_level = 47.083 + 25\n", "pos = 35.650\n", "neg = 43.850\n", "dam = 68.400\n", "demand_vdg = 0\n", "demand_ndg = 0\n", "tsource_vdg = 29.635\n", "tsink_vdg = 134.840\n", "tsource_ndg = 21.420\n", "tsink_ndg = 118.755\n", "\n", "hp_storage_opt_enginge(c, ws, hp_vdg, hp_ndg, pos, neg, dam, demand_vdg, demand_ndg, tsource_vdg, tsink_vdg, tsource_ndg, tsink_ndg)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#e_load_vdg, th_load_vdg, e_load_ndg, th_load_ndg, tsource_vdg, tsource_ndg, to_storage_vdg_MW, from_storage_vdg_MW, to_storage_ndg_MW, from_storage_ndg_MW, ws, hp_vdg, hp_ndg" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Tsource_VDG_before = s.hpcase.data['Tsource (VDG)'].round(2)\n", "Tsource_VDG_after = s.storage_case_PCM.data['Tsource (VDG)'].round(2)\n", "Tsource_VDG_before.equals(Tsource_VDG_after)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Tsource_NDG_before = s.hpcase.data['Tsource (NDG)'].round(2)\n", "Tsource_NDG_after = s.storage_case_PCM.data['Tsource (NDG)'].round(2)\n", "Tsource_NDG_before.equals(Tsource_NDG_after)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "test_hp = Heatpump(\n", " name='Heatpump for Testing',\n", " max_th_power=1,\n", " min_th_power=0.3,\n", " cop_curve=cop_curve\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "# Tsrc_vdg, Tsnk_vdg, Tsrc_ndg, Tsnk_ndg = s.demand[['Tsource (VDG)', 'Tsink (VDG)', 'Tsource (NDG)', 'Tsink (NDG)']].mean().to_list()\n", "# mean_gas_price = (s.optcase1.data['Gas prices (€/MWh)'].mean() \n", "# + s.eb_ode_g \n", "# + s.optcase1.data['CO2 prices (€/MWh)'].mean()\n", "# )\n", "\n", "# max_gas_price = (s.optcase1.data['Gas prices (€/MWh)'].max() \n", "# + s.eb_ode_g \n", "# + s.optcase1.data['CO2 prices (€/MWh)'].max()\n", "# )\n", "\n", "# min_gas_price = (s.optcase1.data['Gas prices (€/MWh)'].min() \n", "# + s.eb_ode_g \n", "# + s.optcase1.data['CO2 prices (€/MWh)'].min()\n", "# )\n", "\n", "# Tsrc_vdg_min, Tsnk_vdg_min, Tsrc_ndg_min, Tsnk_ndg_min = s.demand[['Tsource (VDG)', 'Tsink (VDG)', 'Tsource (NDG)', 'Tsink (NDG)']].min().to_list()\n", "# Tsrc_vdg_max, Tsnk_vdg_max, Tsrc_ndg_max, Tsnk_ndg_max = s.demand[['Tsource (VDG)', 'Tsink (VDG)', 'Tsource (NDG)', 'Tsink (NDG)']].max().to_list()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "import plotly.graph_objs as go\n", "def create_load_trace(gas_price, Tsnk, Tsrc, name):\n", " loads = []\n", " eprices = list(range(1000))\n", " for eprice in eprices:\n", " _, load = test_hp.set_opt_load(\n", " electricity_cost=eprice + s.eb_ode_e,\n", " alt_heat_price=gas_price / 0.9,\n", " demand=1, \n", " Tsink=Tsnk,\n", " Tsource=Tsrc\n", " )\n", " loads.append(load)\n", " trace = go.Scatter(x=eprices, y=loads, name=name)\n", " return trace" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "# import plotly.graph_objects as go\n", "# import numpy as np\n", "\n", "# fig = go.Figure()\n", "\n", "# configs = {\n", "# 'mean': [mean_gas_price, Tsnk_vdg, Tsrc_vdg],\n", "# 'unfav_gas': [min_gas_price, Tsnk_vdg, Tsrc_vdg],\n", "# 'fav_gas': [max_gas_price, Tsnk_vdg, Tsrc_vdg],\n", "# 'unfav_all': [min_gas_price, Tsnk_vdg_max, Tsrc_vdg_min],\n", "# 'fav_all': [max_gas_price, Tsnk_vdg_min, Tsrc_vdg_max],\n", "# }\n", "\n", "# for name, config in configs.items():\n", "# trace = create_load_trace(*config, name)\n", "# fig.add_trace(trace)\n", "\n", "# fig.update_layout(title='Switch prices for different configurations')\n", "# fig.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "date = s.baseline.data.index[0].strftime('%Y-%m-%d')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "fig_steamboiler = s.baseline.data[['Total demand', 'output_MW_th']].abs().loc[date, :].iplot(\n", " subplots=True, \n", " title=f'Steamboiler only case on {date}',\n", " subplot_titles=['Total demand', 'Steam boiler output (MW)'],\n", " legend=False,\n", " dimensions=(800, 400),\n", " colors=[recoydarkblue, recoygreen], \n", " asFigure=True,\n", " shape = (2, 1)\n", ")\n", "fig_steamboiler" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "fig_heatpump = s.hpcase.data[['Total demand', 'hp_output_MW']].abs().loc[date, :].iplot(\n", " subplots=True, \n", " title=f'Heatpump only case on {date}', \n", " subplot_titles=['Total demand', 'Heatpump output (MW)'],\n", " legend=False,\n", " dimensions=(800, 400),\n", " colors=[recoydarkblue, recoygreen], \n", " asFigure=True,\n", " shape = (2, 1)\n", ")\n", "fig_heatpump" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "# fig_optcase = s.optcase1.data[['hp_output_MW', 'gb_output_MW', 'NEG']].loc[date, :].iplot(\n", "# subplots=True, \n", "# title=f'Hybrid case on {date}',\n", "# subplot_titles=['Heatpump output (MW)', 'Steam boiler output (MW)', 'Imbalance price (€/MWh)'],\n", "# legend=False,\n", "# dimensions=(800, 600),\n", "# colors=[recoydarkblue, recoygreen, recoyred],\n", "# asFigure=True,\n", "# shape=(3,1)\n", "# )\n", "# fig_optcase" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "# date = '2019-09-04'\n", "\n", "# fig_optcase2 = s.optcase1.data[['hp_output_MW', 'gb_output_MW', 'NEG']].loc[date, :].iplot(\n", "# subplots=True, \n", "# title=f'Hybrid case on {date}',\n", "# subplot_titles=['Heatpump output (MW)', 'Steam boiler output (MW)', 'Imbalance price (€/MWh)'],\n", "# legend=False,\n", "# dimensions=(800, 600),\n", "# colors=[recoydarkblue, recoygreen, recoyred],\n", "# asFigure=True,\n", "# shape=(3,1)\n", "# )\n", "# fig_optcase2" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "report = ComparisonReport(\n", " cases=s.optcases, \n", " kind='electr_market_results',\n", ")\n", "report.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "casereport = ComparisonReport(cases = s.cases, kind='ebitda_calc', baseline=s.baseline, comparison='relative')\n", "casereport.show(presentation_format=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "BusinessCaseReport(s.hpcase).show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "#price chart\n", "from copy import deepcopy\n", "\n", "data = deepcopy(s.baseline.data)\n", "data = data[data.columns[:2]]\n", "data[data.columns[1]] = MWh_gas_to_tonnes_CO2(data[data.columns[1]])\n", "data = data.rename(columns={\"CO2 prices (€/ton)\": \"CO2 prices (€/MWh)\"})\n", "\n", "data.resample('D').mean().iplot(dimensions=(800, 300), title='Gasprices vs. CO2 prices', colors=recoycolors)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "# #price chart\n", "# from copy import deepcopy\n", "\n", "# s.optcase1.data['DAM'].resample('D').mean().iplot(dimensions=(800, 300), title='Electricity Prices', colors=recoycolors)\n", "\n", "# _source_output = s.optcase1.data[['hp_output_MWh', 'gb_output_MWh']].resample('M').sum()\n", "# _total_output = _source_output.sum(axis=1)\n", "# _data = _source_output.divide(_total_output, axis=0).rename(\n", "# columns={'hp_output_MWh':'Heat pump', 'gb_output_MWh':'Gasboiler'}\n", "# ) * 100\n", "\n", "# production_fig = _data.iplot(\n", "# kind='bar',\n", "# barmode='stack',\n", "# colors=[recoydarkblue, recoygreen],\n", "# title='Hybrid case: Heat production per Month by Source in % share',\n", "# yTitle='Share of production in %',\n", "# dimensions=(600, 400),\n", "# asFigure=True\n", "# )\n", "\n", "# production_fig = production_fig.update_layout(legend_traceorder=\"reversed\")\n", "# production_fig" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "report = ComparisonReport(s.cases, kind='capex').report\n", "report = report[report.index.str.contains('CAPEX')].T\n", "capex_fig = report.iplot(\n", " kind='bar', \n", " barmode='relative',\n", " colors=recoycolors,\n", " title='CAPEX by Casestudy',\n", " yTitle='CAPEX in €',\n", " dimensions=(600, 400),\n", " asFigure=True,\n", ")\n", "\n", "capex_fig = capex_fig.update_layout(legend_traceorder=\"reversed\")\n", "capex_fig" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "cashflow_report = ComparisonReport(cases = s.cases, kind='cashflows')\n", "\n", "fig = cashflow_report.report.T.iplot(\n", " kind='bar',\n", " barmode='relative',\n", " colors=recoycolors,\n", " title='OPEX breakdown',\n", " asFigure=True,\n", " yTitle='€',\n", " dimensions=(800, 600)\n", ")\n", "\n", "ebitda_report = ComparisonReport(cases=s.cases, kind='ebitda_calc')\n", "scat = go.Scatter(\n", " mode='markers',\n", " y=ebitda_report.report.loc['EBITDA (€)', :].values, \n", " x=ebitda_report.report.columns, \n", " line=go.scatter.Line(color=recoydarkgrey),\n", " marker=dict(\n", " color=recoydarkgrey,\n", " size=20,\n", " line=dict(\n", " color=recoydarkgrey,\n", " width=3\n", " ),\n", " symbol='line-ew'\n", " ),\n", " name='EBITDA (€)'\n", ")\n", "fig.add_trace(scat)\n", "fig" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# ebitda_report.show(comparison='relative')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_series = SingleFigureComparison(s.cases, 'ebitda', label='EBITDA').report\n", "ebitda_graph = _series.iplot(\n", " kind='bar',\n", " title='Yearly EBITDA by Casestudy in €',\n", " colors=recoygreen,\n", " dimensions=(600, 400), \n", " yTitle='EBITDA in €',\n", " asFigure=True,\n", " yrange=[_series.min() * 1.2, max(_series.max() * 2, 0)]\n", ")\n", "\n", "ebitda_graph.update_traces(\n", " text=_series.values/1000_000, \n", " textposition='outside', \n", " texttemplate=\"%{text:.1f}M €\", \n", ")\n", "\n", "ebitda_graph" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_series = SingleFigureComparison(s.optcases, 'npv', label='NPV').report\n", "\n", "npv_graph = _series.iplot(\n", " kind='bar',\n", " title='NPV by Casestudy in €',\n", " colors=recoygreen,\n", " dimensions=(600, 400), \n", " yTitle='NPV in €',\n", " asFigure=True,\n", " yrange=[0, _series.max() * 1.1]\n", ")\n", "\n", "npv_graph.update_traces(\n", " text=_series.values/1000_000, \n", " textposition='outside', \n", " texttemplate=\"%{text:.1f}M €\", \n", ")\n", "\n", "npv_graph" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "irr_report = (SingleFigureComparison(s.optcases, 'irr', label='IRR').report * 100)\n", "irr_fig = irr_report.iplot(\n", " kind='bar',\n", " title='IRR by Casestudy in %',\n", " colors=recoygreen,\n", " dimensions=(600, 400),\n", " yTitle='IRR in %',\n", " asFigure=True,\n", " yrange=[0, irr_report.max() * 1.2]\n", ")\n", "\n", "irr_fig.update_traces(\n", " text=irr_report.values, \n", " textposition='outside', \n", " texttemplate=\"%{text:.0f} %\", \n", ")\n", "\n", "irr_fig" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_series = (SingleFigureComparison(s.optcases, 'spp', label='Simple Payback Time').report)\n", "spt_fig = _series.iplot(\n", " kind='bar',\n", " title='Simple Payback Time by Casestudy in Years',\n", " colors=recoygreen,\n", " dimensions=(600, 400),\n", " yTitle='Years',\n", " asFigure=True,\n", " yrange=[0, _series.max() * 1.2]\n", ")\n", "\n", "spt_fig.update_traces(\n", " text=_series.values, \n", " textposition='outside', \n", " texttemplate=\"%{text:.1f} years\", \n", ")\n", "\n", "spt_fig " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "mean_cops = (SingleFigureComparison(s.optcases, 'mean_cop', label='COP').report)\n", "cop_fig = mean_cops.iplot(\n", " kind='bar',\n", " title='Mean COP by Casestudy',\n", " colors=recoygreen,\n", " dimensions=(600, 400),\n", " yTitle='COP',\n", " asFigure=True,\n", " yrange=[0, mean_cops.max() * 1.2]\n", ")\n", "\n", "cop_fig.update_traces(\n", " text=mean_cops.values, \n", " textposition='outside', \n", " texttemplate=\"%{text:.1f}\", \n", ")\n", "\n", "cop_fig " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Sensitivity analysis" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "We have agreed that for the sensitivity analysis we will vary the following key assumptions in the flex-model:\n", "1. Market prices of gas and electricity. We will use the actual prices for 2019, the actual prices for 2020.\n", "2. aFRR prices +/- 30%\n", "3. CAPEX\n", "4. CO2 price\n", "5. Tsource +/- 10 degrees Celsius\n", "6. Tsink\n", " * Roam off the peak / lower pressure\n", " * Stabalize / running average per hour/ 2 hours\n", "7. __A scenario with a constraint on grid capacity and a scenario without grid capacity as a constraint__\n", "8. Energy Tax and ODE +/- 30%" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def setup():\n", " _c = Config()\n", " s = setup_model(c=_c)\n", " return s\n", "\n", "def routine(c, s):\n", " s = load_data(c=c, s=s)\n", " s = create_and_assign_assets(c=c, s=s)\n", " #s = preprocessing(c=c, s=s)\n", " s = run_optimisation(c=c, s=s)\n", " #s = postprocessing(c=c, s=s)\n", " s = collect_cashflows(c=c, s=s)\n", " s = calculate_financials(c=c, s=s)\n", " return s" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%time _s = setup()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%time result = routine(c, _s)\n", "npv = result.hpcase.npv\n", "npv" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# sensitivity:Storage temperature\n", "values = range(80, 120, 10)\n", "param = 'storage_temperature'\n", "kpis = ['npv','irr','spp', 'mean_cop']\n", "\n", "sens = SensitivityAnalysis(c, _s, routine, param, values, kpis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='volume(m3)',\n", " yTitle='NPV in €',\n", " yrange=[output.min().min()*1.1, 0],\n", " title='Sensitivity: Storage volume',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sensitivity: Water storage volume" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "(_s.demand['MW (VDG)'] + _s.demand['MW (NDG)']).to_list()[:3]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%time _s = setup()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "values = range(100, 500, 100)\n", "param = 'storage_volume'\n", "kpis = ['npv','irr','spp']\n", "\n", "sens = SensitivityAnalysis(c, _s, routine, param, values, kpis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "[case.name for case in s.cases][1:]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='volume(m3)',\n", " yTitle='NPV in €',\n", " yrange=[output.min().min()*1.1, 0],\n", " title='Sensitivity: Storage volume',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('irr', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='volume(m3)',\n", " yTitle='irr in %',\n", " yrange=[output.min().min()*1.1, 0],\n", " title='Sensitivity: IRR',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='volume(m3)',\n", " yTitle='years',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: payback time',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('mean_cop', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='volume(m3)',\n", " yTitle='COP',\n", " yrange=[output.min().min()*1.1, 0],\n", " title='Sensitivity: COP',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sensitivity: CAPEX per MW storage" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "values = range(4_000, 10_000, 2_000)\n", "param = 'storage_capex_per_MW'\n", "kpis = ['npv', 'irr', 'spp', 'mean_cop']\n", "\n", "sens = SensitivityAnalysis(c, _s, routine, param, values, kpis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='CAPEX',\n", " yTitle='NPV in Euro',\n", " yrange=[output.min().min()*1.1, 0],\n", " title='Sensitivity: NPV in euro',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='CAPEX/MW',\n", " yTitle='years',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: payback time',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sensitivity: CAPEX per MWh storage" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "values = range(1_000, 5_000, 1000)\n", "param = 'storage_capex_per_MWh'\n", "kpis = ['npv', 'spp', 'mean_cop']\n", "\n", "sens = SensitivityAnalysis(c, _s, routine, param, values, kpis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='CAPEX/MWh',\n", " yTitle='NPV',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: NPV in Euro',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='CAPEX/MWh',\n", " yTitle='years',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: Payback time',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sensitivity: threshold price" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "values = range(10, 60, 10)\n", "param = 'threshold'\n", "kpis = ['npv', 'spp', 'mean_cop']\n", "\n", "sens = SensitivityAnalysis(c, _s, routine, param, values, kpis)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='threshold',\n", " yTitle='NPV',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: NPV in Euro',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='threshold',\n", " yTitle='years',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: SPP in years',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output = sens.single_kpi_overview('mean_cop', case_names=[case.name for case in s.cases][1:])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='threshold',\n", " yTitle='COP',\n", " yrange=[output.min().min()*1.2, 0],\n", " title='Sensitivity: SOP',\n", " colors=recoycolors,\n", " dimensions=(600, 400),\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Heat Pump CAPEX" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0.7, 1, 1.3, 2]\n", "for value in values:\n", " _c = Config()\n", " _c.hp_capex *= value\n", " configs[value*100] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%%time\n", "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "\n", "sens_capex = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='CAPEX factor (%)',\n", " yTitle='Payback Period in years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Heat Pump CAPEX (€)',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_capex" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: CO2 prices" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "mean = 24.86\n", "co2_prices = [10, 25, 50, 100]\n", "\n", "for price in co2_prices:\n", " _c = Config()\n", " multiplier = price / mean\n", " _c.co2_price_multiplier = multiplier\n", " configs[price] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%%time\n", "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('ebitda', case_names=['Baseline', 'Heatpump + SDE', 'Heatpump only', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Mean CO2 price in €',\n", " yTitle='EBITDA in €',\n", " yrange=[output.min().min() * 1.1, 0],\n", " title='Sensitivity: CO2 prices > EBITDA',\n", " colors=[recoypurple, recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_co2_spp = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Mean CO2 price in €',\n", " yTitle='Payback Period in Years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: CO2 prices',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_co2_spp" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Mean CO2 price in €',\n", " yTitle='NPV in €',\n", " yrange=[output.min().min() * 10, output.max().max()*1.1],\n", " title='Sensitivity: CO2 prices > NPV',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Gas prices" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0.7, 1, 1.3]\n", "for value in values:\n", " _c = Config()\n", " _c.gas_price_multiplier = value\n", " configs[value * 100] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%%time\n", "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Gas price factor (%)',\n", " yTitle='NPV in €',\n", " yrange=[output.min().min()*1.5, output.max().max()*1.1],\n", " title='Sensitivity: Gas prices',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Day Ahead buying amount" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0, 0.5, 1]\n", "for value in values:\n", " _c = Config()\n", " _c.day_ahead_buying_perc = value\n", " configs[value * 100] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Volume in %',\n", " yTitle='NPV in €',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Volume bought on Day-Ahead market in %',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Electricity prices" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0.7, 1, 1.3]\n", "for value in values:\n", " _c = Config()\n", " _c.e_price_multiplier = value\n", " configs[value * 100] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_eprices = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Electricity price factor in %',\n", " yTitle='Payback Period in years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Electricity prices',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_eprices" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Electricity price volatility" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0.7, 1, 1.3]\n", "for value in values:\n", " _c = Config()\n", " _c.e_price_volatility_multiplier = value\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_evol = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Volatility factor',\n", " yTitle='Payback period in years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: E-price volatility',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_evol" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: aFRR capacity fee" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [10_000, 25_000, 50_000]\n", "for value in values:\n", " _c = Config()\n", " _c.afrr_capacity_fee = value\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_affr_fee = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='aFRR capacity fee in €/MW',\n", " yTitle='Payback Period in years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: aFRR capacity fee',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_affr_fee" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Energy tax" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [0.7, 1, 1.3]\n", "for value in values:\n", " _c = Config()\n", " _c.energy_tax_multiplier = value\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('npv', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Factor',\n", " yTitle='NPV in €',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Energy taxes',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Tsource" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [-25, -10, 0, 10, 25]\n", "for value in values:\n", " _c = Config()\n", " _c.tsource_delta = value\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.loc[-25, 'Heatpump only'] = np.nan\n", "sens_tsource = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Tsource delta',\n", " yTitle='Payback Period in years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Tsource',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_tsource" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('mean_cop', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Tsource delta',\n", " yTitle='COP',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Tsource > Mean COP',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Tsink" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "_s = setup()\n", "configs = {}\n", "values = [-25, -10, 0, 10, 25]\n", "for value in values:\n", " _c = Config()\n", " _c.tsink_delta = value\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "sens = SensitivityAnalysis(_s, routine, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('spp', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_tsink = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Tsink delta',\n", " yTitle='Payback Period in Years',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Tsink',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_tsink" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "output = sens.single_kpi_overview('mean_cop', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "sens_tsink_cop = output.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Tsink delta',\n", " yTitle='COP',\n", " yrange=[0, output.max().max()*1.1],\n", " title='Sensitivity: Tsink > Mean COP',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400),\n", " asFigure=True\n", ")\n", "sens_tsink_cop" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "### Sensitivity: Time period" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "def routine2(c, s):\n", " s = setup_model(c=c)\n", " s = load_data(c=c, s=s)\n", " s = create_and_assign_assets(c=c, s=s)\n", " s = run_optimisation(c=c, s=s)\n", " s = collect_cashflows(c=c, s=s)\n", " s = calculate_financials(c=c, s=s)\n", " return s" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "configs = {}\n", "start_values = ['2018-01-01', '2019-01-01', '2019-11-01']\n", "\n", "for value in start_values:\n", " _c = Config()\n", " _c.start = value\n", " _c.end = (pd.to_datetime(value) + timedelta(days=364)).strftime('%Y-%m-%d')\n", " configs[value] = _c" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "%%time\n", "sens = SensitivityAnalysis(_s, routine2, configs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "result = sens.single_kpi_overview('npv', case_names=['Heatpump only', 'Heatpump + SDE', 'Optimisation', 'Optimisation + aFRR'])\n", "result.iplot(\n", " mode='lines+markers',\n", " symbol='circle-dot',\n", " size=10,\n", " xTitle='Start date',\n", " yTitle='NPV in €',\n", " yrange=[0, result.max().max()*1.1],\n", " title='Sensitivity: Modelled time period',\n", " colors=[recoygreen, recoyyellow, recoydarkblue, recoyred],\n", " dimensions=(600, 400)\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "exclude" ] }, "source": [ "## Report" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [ "exclude" ] }, "outputs": [], "source": [ "renderer = 'svg'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# __Presentation Flexible Heatpumps__\n", "\n", "ENCORE meeting: 17-12-2020\n", "Mark Kremer\n", "\n", " \n", " \n", " \n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## __Central question:__\n", "#### *Can Smurfit Kappi shorten the Payback Period of an investment in a Heatpump by operating it in a flexible manner?*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Flexible operations on imbalance market__\n", "\n", "Benefiting from fluctuations in electricity market prices by ramping the asset up- and down (increasing and decreasing the electricity consumption)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_example_1 = s.hpcase.data[['DAM']].iloc[:60*24].iplot(\n", " title='Day-Ahead prices on arbitrary day in €/MWh',\n", " yrange=[-100, 200],\n", " colors=recoygreen, \n", " yTitle='Price in €/MWh',\n", " xTitle='Time of Day',\n", " dimensions=(800, 400),\n", " asFigure=True\n", ")\n", "\n", "fig_example_1.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Imbalance prices are very volatile, with prices below -100 and above 200 €/MWh on a daily basis." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_example_2 = s.hpcase.data[['DAM', 'POS']].rename(columns={'POS':'IMB'}).iloc[:60*24].iplot(\n", " title='Imbalance Prices on arbitrary day in €/MWh',\n", " colors=[recoygreen, recoydarkblue], \n", " yTitle='Price in €/MWh',\n", " xTitle='Time of Day',\n", " dimensions=(800, 400),\n", " asFigure=True\n", ")\n", "\n", "fig_example_2.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is possible to benefit from these fluctiations, if you have __flexibility__\n", "* Storage options\n", "* Hybrid installations (e.g. with gas-powered assets)\n", "\n", "In this case we are looking at a __hybrid set-up of a Steamboiler and a Heatpump__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Simulations & mathematical modelling__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* To answer the central question, we have build a simulation model\n", "* The model simulates the operations of a hybrid set-up of a Heatpump and a Steamboiler over the timespan of 1 years (on a 1 minute basis)\n", "* The goal of the model is to minimize the operating costs, in order to reach the shortest Payback Period\n", "* We are taking into account all major investment and operating costs, including:\n", " * Asset CAPEX\n", " * Commodity costs for gas and electricity\n", " * Energy taxes\n", " * Grid transport costs\n", " * SDE++ subsidies\n", " * Maintenance costs\n", " * CO2 allowances\n", "* The output of the model is a Payback Period for an investment in an heatpump, in different scenario's" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Casestudies__\n", "5 main scenario's" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "1. Steamboiler only (baseline, baseload)\n", "2. Heatpump only (stand-alone, baseload, without SDE++)\n", "3. Heatpump + SDE\n", "4. Heatpump + SDE + Steam boiler (hybrid set-up) on Imbalance market\n", "5. Heatpump + SDE + Steam boiler (hybrid set-up) on aFRR (secondary reserve market)\n", "\n", "Besides that, we modelled 11 sensitivities:\n", "* Heatpump CAPEX\n", "* Gas & CO2 prices\n", "* Electricity prices & volatility\n", "* Energy taxes\n", "* Bidding strategies\n", "* Source temperatures (affecting COP)\n", "* Sink temperatures (affecting COP)\n", "* Time period (2018, 2019, 2020)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Smurfit Kappa case__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model is based on the context of Smurfit Kappa (paper factory)\n", "* Currently a Steamboiler is providing the 20-30 MW of average heat demand for drying processes\n", "* We add a 31 MW heatpump (to make sure it can cover entire demand)\n", "* The steam demand must be fulfilled at all times, by either the heatpump or the gasboiler\n", "* The heatpump and steam boiler can both respond very quickly (within minutes) within a flexible range (30%-100% for heatpump)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_demands_over_time.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Source temperatures of around 65 degrees C\n", "* Sink temperatures of 125-170 degrees C \n", "* Average Temperature lift of about 85 degrees C" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "demands_fig.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Heat pump__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "COP roughly between 4 and 1.5, depending on load, Tsource and Tsink" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def cop_curve(Tsink, Tsource):\n", " Tsink += 273\n", " Tsource += 273\n", "\n", " c1 = 0.267 * Tsink / (Tsink - Tsource)\n", " c2 = 0.333 * Tsink / (Tsink - Tsource)\n", " \n", " return Polynomial([c2, c1])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sourceT = 63\n", "sinkT = 140\n", "cop_curve(sourceT, sinkT)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_cop_curve.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Optimisation__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* At each moment in time, we calculate the cheapest option to produce the required heat. \n", "* Taking into account the COP fluctuations, due to changing Tsource and Tsink\n", "* Taking into account fluctuating market prices (electricity, gas, CO2)\n", "* We are predicting real-time electricity prices using our forecasting models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Some example days:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Steamboiler only is following demand pattern" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_steamboiler.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similar pattern for heatpump only case" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_heatpump.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hybrid set-up is responding to price fluctuactions, steam boiler taking over at high prices" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_optcase.show(renderer=renderer)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig_optcase2.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Business case__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "CAPEX of around 6 M€ (200.000 €/MW), which need to be earned back by savings in operating costs" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "capex_fig.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Savings in EBITDA compared to the baseline are about 1.5 mln € without subsidy, and up to 4.5 mln € including subsidy\n", "* The optimisation on aFRR allows for a 30-40% improvement in EBITDA" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ebitda_graph.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Resulting in a Payback Period of 5.4 years without subsidy, and 1.8 years with subsidy" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "spt_fig.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The added value of the optimisation is limited (in absolute terms), which is explained by the high COP of the heatpump" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "production_fig.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The heatpump is filling in 95-98 % of the demand. \n", "* Because of its high COP, it is almost always cheaper to run than the steam boiler\n", "* Switch price is on average around 90€/MWh (excluding subsidies)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Sensitivities__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If CAPEX is 200%, subsidy is needed to keep a good Payback Time" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_capex.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subsidies are protecting the business case againsts low CO2 prices" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_co2_spp.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The businesscase is quite sensitive to Tsource and Tsink differences, because they directly impact the COP\n", "* The Smurtfit Kappa case, with a temperature lifte of about 85 degrees C on average, looks favorable. \n", "* When the temperature lift is higher, the COP will decrease and the business case will degrade" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_tsource.show(renderer=renderer)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_tsink.show(renderer=renderer)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_tsink_cop.show(renderer=renderer)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sens_eprices.show(renderer=renderer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### __Conclusions__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* The business case for a Heat Pump seems favourable\n", "* Flexible operation, using aFRR, can improve the operational results by 30-40%\n", "* However, this only results in a marginal improvement of the business case\n", "* SDE++ has a very favourable effect on the business case, but is not critical\n", "* The business case is notably sensitive to the temperature lift required, and is therefore strongly dependent on the specific use case." ] } ], "metadata": { "interpreter": { "hash": "fea6e7ab4c0ed1d184e153838ac4b2d24a0985a5f17e99f4f437a114b66796b8" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" }, "toc-autonumbering": false, "toc-showmarkdowntxt": false, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }