diff --git a/requirements.txt b/requirements.txt index 268bb5d1..77c776f9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,6 +11,8 @@ cssselect2==0.7.0 defusedxml==0.7.1 distro==1.7.0 et-xmlfile==1.1.0 +gitdb==4.0.10 +GitPython==3.1.34 html5lib==1.1 ics==0.7.2 idna==3.3 @@ -29,12 +31,14 @@ PyYAML==6.0 reportlab==3.6.11 requests==2.28.1 six==1.16.0 +smmap==5.0.0 soupsieve==2.3.2.post1 svglib==1.4.1 tabula-py==2.4.0 TatSu==5.8.3 tinycss2==1.2.1 tomli==2.0.1 +typing_extensions==4.7.1 urllib3==1.26.9 webencodings==0.5.1 yamllint==1.27.1 diff --git a/src/aggregate_historical_data.py b/src/aggregate_historical_data.py new file mode 100644 index 00000000..6e5feafa --- /dev/null +++ b/src/aggregate_historical_data.py @@ -0,0 +1,147 @@ +import datetime +import os +import yaml +from dateutil.parser import parse +import logging + +logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + filename='aggregate_historical_data.log', + filemode='a') +logger = logging.getLogger() +NEW_DIRECTORY = "historical_versions" +AGGREGATED_FILE = "historical_data.yml" + + +def find_overlaps(sorted_data): + overlaps = [] + for i in range(len(sorted_data)): + for j in range(i + 1, len(sorted_data)): + if sorted_data[i]['finsh'] > sorted_data[j]['start']: + overlaps.append((sorted_data[i], sorted_data[j])) + if sorted_data[j]['start'] > sorted_data[i]['finsh']: + break + return overlaps + + +def find_erroneous_line(file): + with open(file, 'r') as f: + for i, line in enumerate(f, start=1): + try: + yaml.safe_load(line) + except Exception as inner_e: + print(f"Error on line {i}: {inner_e}") + print(f"Line content: {line.strip()}") + + +def load_yaml_files(directory): + num_file_import_errors = 0 + files = sorted( + [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.yml') or f.endswith(".yaml")]) + loadshedding_data = [] + for file in files: + try: + with open(file, 'r') as f: + date_time_str = file.split("_")[-1] + date_time_str = date_time_str.split(".")[0] + data = yaml.safe_load(f) + for change in data["changes"]: + change['commit_time'] = datetime.datetime.fromisoformat(date_time_str) + loadshedding_data.append(data) + except Exception as e: + num_file_import_errors += 1 + logger.exception(f"Error in file {file}") + continue + print(f"There were {num_file_import_errors} files that could not be imported. Check aggregate_historical_data.log" + f" for details") + return loadshedding_data + + +def resolve_conflicts(sorted_data): + resolved_data = [] + + i = 0 + while i < len(sorted_data): + current_entry = sorted_data[i].copy() + + j = i + 1 + while j < len(sorted_data) and current_entry['finsh'] > sorted_data[j]['start']: + next_entry = sorted_data[j] + + # Only consider overlaps where 'include' or 'exclude' tags match + if ('include' in current_entry and 'include' in next_entry and + current_entry['include'] == next_entry['include']) or \ + ('exclude' in current_entry and 'exclude' in next_entry and + current_entry['exclude'] == next_entry['exclude']): + + # If the next entry's commit_time is more recent, update the 'finsh' time of the current entry + if next_entry['commit_time'] > current_entry['commit_time']: + current_entry['finsh'] = next_entry['start'] + else: + # the next item has a commit time after the current item in which case it can be ignored + sorted_data.pop(j) + + j += 1 + # remove commit time + if current_entry: + current_entry.pop('commit_time', None) + resolved_data.append(current_entry) + + i += 1 + + return resolved_data + + +def write_yaml(filtered_aggregated_data, file_path): + with open(file_path, 'w') as f: + f.write("# This data automatically generated by aggregate_historical_data.py\n") + yaml.safe_dump({'historical_data': filtered_aggregated_data}, f) + + +def aggregate_data(data_as_dict, key): + aggregated_data = [] + for entry in data_as_dict: + for entries in entry[key]: + aggregated_data.append(entries) + return aggregated_data + + +def create_historical_data(directory): + raw_data = load_yaml_files(directory) + aggregated_data = aggregate_data(raw_data, 'changes') + num_entries_unfiltered = len(aggregated_data) + aggregated_data = [entry for entry in aggregated_data if 'start' in entry] + + # Ensuring all 'start' and 'finsh' values are datetime objects + for entry in aggregated_data: + if isinstance(entry.get('start'), str): + entry['start'] = parse(entry['start']) + if isinstance(entry.get('finsh'), str): + entry['finsh'] = parse(entry['finsh']) + + unique_entries_dict = {} + + for entry in aggregated_data: + # Creating a unique key for each entry using a subset of the fields + entry_key = (entry['start'], entry['finsh'], entry['stage'], entry.get('include', ''), entry.get('exclude', '')) + + # If this is a newer version of an already seen entry, replace the older version + if entry_key not in unique_entries_dict or entry['commit_time'] > unique_entries_dict[entry_key]['commit_time']: + unique_entries_dict[entry_key] = entry + + unique_entries = list(unique_entries_dict.values()) + + sorted_data = sorted(unique_entries, key=lambda x: (x['start'], -x['commit_time'].timestamp())) + num_entries_filtered = len(sorted_data) + diff = num_entries_unfiltered - num_entries_filtered + # print(f"{diff} entries were incorrectly formatted/duplicates and dropped") + resolved_data = resolve_conflicts(sorted_data) + + resolved_data.sort(key=lambda x: x['start'], reverse=True) + overlaps = find_overlaps(resolved_data) + return resolved_data + + +if __name__ == "__main__": + data = create_historical_data("./historical_versions") + write_yaml(data, "test_historical.yaml") diff --git a/src/fetch_historical_data.py b/src/fetch_historical_data.py new file mode 100644 index 00000000..af6d5a20 --- /dev/null +++ b/src/fetch_historical_data.py @@ -0,0 +1,77 @@ +import os +import shutil +import yaml +from git import Repo +from datetime import datetime +import logging + +# Configure logging +logging.basicConfig(filename='file_versions_log.log', level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s') +REPO_URL = "https://github.com/beyarkay/eskom-calendar.git" +BRANCH_NAME = "main" +FILE_NAME = "manually_specified.yaml" +NEW_DIRECTORY = "historical_versions" +TEMP_PATH = "eskom-calendar-temp" + + +def get_file_history(repo_name, branch_name, file_name): + """Get commit hashes where the file changed.""" + git_commits = list(repo_name.iter_commits(branch_name, paths=file_name)) + return git_commits + + +def copy_file_versions(commit_hashes, file_name, new_directory): + """Copy versions of the file to a new directory.""" + if not os.path.exists(new_directory): + os.makedirs(new_directory) + + for i, commit in enumerate(commit_hashes): + try: + # Get the file content at this commit + file_content = (commit.tree / file_name).data_stream.read() + except Exception as e: + logging.error(f"Failed to read file content at commit {commit.hexsha} due to: {str(e)}") + continue + + try: + # Create a new file with the content at this commit with commit hash and time + commit_time = datetime.fromtimestamp(commit.committed_date).isoformat() + new_file_name = os.path.join(new_directory, + f"{os.path.splitext(file_name)[0]}_{commit.hexsha}_{commit_time}.yml") + with open(new_file_name, "wb") as f: + f.write(file_content) + except Exception as e: + logging.error(f"Failed to write file content due to: {str(e)}") + continue + + logging.info(f"Successfully copied version {i + 1}/{len(commit_hashes)} to {new_file_name}") + + +if __name__ == "__main__": + repo = '' + try: + repo = Repo.clone_from(REPO_URL, TEMP_PATH, branch=BRANCH_NAME) + except Exception as e: + if os.path.exists(TEMP_PATH): + shutil.rmtree(TEMP_PATH) + print(f"Cannot clone {REPO_URL} due to {e}") + exit(1) + + try: + # Get the commits where the file changed + commits = get_file_history(repo, BRANCH_NAME, FILE_NAME) + copy_file_versions(commits, FILE_NAME, NEW_DIRECTORY) + logging.info(f"Copied all versions of {FILE_NAME} to {NEW_DIRECTORY}") + except Exception as e: + logging.critical(f"Script failed due to: {str(e)}") + print(f"Copied all versions of {FILE_NAME} to {NEW_DIRECTORY}") + + # Remove the temporary cloned repository + if os.path.exists(TEMP_PATH): + try: + shutil.rmtree(TEMP_PATH) + print(f"Directory {TEMP_PATH} has been removed successfully") + except OSError as error: + print(error) + print(f"Directory {TEMP_PATH} can not be removed") diff --git a/src/historical_data_test.py b/src/historical_data_test.py new file mode 100644 index 00000000..13e513a4 --- /dev/null +++ b/src/historical_data_test.py @@ -0,0 +1,37 @@ +import unittest +from datetime import datetime +from aggregate_historical_data import create_historical_data + + +class TestOverlapResolution(unittest.TestCase): + + def test_find_overlaps(self): + # Define your expected output data + expected_output = [ + { + 'stage': 6, 'start': datetime.fromisoformat('2023-09-04T22:00:00'), + 'finsh': datetime.fromisoformat('2023-09-05T05:00:00'), + 'source': 'https://twitter.com/CityofCT/status/1698744757000831345', 'include': 'coct' + }, + { + 'stage': 5, 'start': datetime.fromisoformat('2023-09-04T18:00:00'), + 'finsh': datetime.fromisoformat('2023-09-04T22:00:00'), + 'source': 'https://twitter.com/CityofCT/status/1698744757000831345', 'include': 'coct' + }, + { + 'stage': 3, 'start': datetime.fromisoformat('2023-09-04T10:00:00'), + 'finsh': datetime.fromisoformat('2023-09-04T18:00:00'), + 'source': 'https://twitter.com/CityofCT/status/1698744757000831345', 'include': 'coct' + }, + ] + + # Call your function and get the output + output = create_historical_data("../test-files") # replace with your actual function name + + # Validate if output is the same as the expected output + self.assertEqual(output, expected_output) + + +# Run the tests +if __name__ == '__main__': + unittest.main() diff --git a/src/test_historical.yaml b/src/test_historical.yaml new file mode 100644 index 00000000..8aec9aa9 --- /dev/null +++ b/src/test_historical.yaml @@ -0,0 +1,7518 @@ +# This data automatically generated by aggregate_historical_data.py +historical_data: +- finsh: 2023-09-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744762298155395 + stage: 6 + start: 2023-09-08 22:00:00 +- finsh: 2023-09-08 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744762298155395 + stage: 4 + start: 2023-09-08 16:00:00 +- finsh: 2023-09-08 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744762298155395 + stage: 5 + start: 2023-09-08 10:00:00 +- finsh: 2023-09-08 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744762298155395 + stage: 4 + start: 2023-09-08 05:00:00 +- finsh: 2023-09-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 6 + start: 2023-09-07 22:00:00 +- finsh: 2023-09-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 4 + start: 2023-09-07 16:00:00 +- finsh: 2023-09-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 5 + start: 2023-09-07 10:00:00 +- finsh: 2023-09-07 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 4 + start: 2023-09-07 05:00:00 +- finsh: 2023-09-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 6 + start: 2023-09-06 22:00:00 +- finsh: 2023-09-06 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 4 + start: 2023-09-06 16:00:00 +- finsh: 2023-09-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 5 + start: &id001 2023-09-06 10:00:00 +- finsh: 2023-09-06 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744760037437712 + stage: 4 + start: 2023-09-06 05:00:00 +- finsh: *id001 + include: coct + source: https://twitter.com/CityofCT/status/1698302825166418422 + stage: 4 + start: 2023-09-06 05:00:00 +- finsh: 2023-09-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 6 + start: 2023-09-05 22:00:00 +- finsh: 2023-09-05 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 4 + start: 2023-09-05 16:00:00 +- finsh: 2023-09-05 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 5 + start: &id002 2023-09-05 10:00:00 +- exclude: coct + finsh: 2023-09-11 00:00:00 + source: https://twitter.com/Eskom_SA/status/1698733183225737650 + stage: 6 + start: 2023-09-05 05:00:00 +- finsh: 2023-09-05 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 4 + start: 2023-09-05 05:00:00 +- finsh: *id002 + include: coct + source: https://twitter.com/CityofCT/status/1698302825166418422 + stage: 4 + start: 2023-09-05 05:00:00 +- finsh: 2023-09-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 5 + start: 2023-09-04 22:00:00 +- exclude: coct + finsh: 2023-09-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1698296736949657659 + stage: 5 + start: 2023-09-04 16:00:00 +- finsh: 2023-09-04 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698744757000831345 + stage: 3 + start: 2023-09-04 10:00:00 +- exclude: coct + finsh: 2023-09-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1698296736949657659 + stage: 4 + start: 2023-09-04 05:00:00 +- finsh: 2023-09-04 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698325443609317815 + stage: 2 + start: 2023-09-04 05:00:00 +- exclude: coct + finsh: 2023-09-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1698296736949657659 + stage: 5 + start: 2023-09-03 16:00:00 +- finsh: 2023-09-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698325443609317815 + stage: 5 + start: &id003 2023-09-03 16:00:00 +- finsh: 2023-09-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1698325443609317815 + stage: 4 + start: &id005 2023-09-03 05:00:00 +- finsh: *id003 + include: coct + source: https://twitter.com/CityofCT/status/1697259196931252229 + stage: 2 + start: 2023-09-03 05:00:00 +- exclude: coct + finsh: 2023-09-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1698047161961685424 + stage: 4 + start: &id004 2023-09-02 21:00:00 +- exclude: coct + finsh: *id004 + source: https://twitter.com/Eskom_SA/status/1696495100153499912 + stage: 4 + start: 2023-09-02 16:00:00 +- finsh: *id005 + include: coct + source: https://twitter.com/CityofCT/status/1698074526137917468 + stage: 4 + start: &id006 2023-09-02 05:00:00 +- exclude: coct + finsh: 2023-09-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1697210092179935262 + stage: 2 + start: 2023-09-02 05:00:00 +- finsh: 2023-09-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697233282306384005 + stage: 4 + start: 2023-09-01 22:00:00 +- finsh: *id006 + include: coct + source: https://twitter.com/CityofCT/status/1697646169063665702 + stage: 4 + start: 2023-09-01 20:00:00 +- finsh: 2023-09-01 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697646169063665702 + stage: 2 + start: &id007 2023-09-01 16:00:00 +- finsh: *id007 + include: coct + source: https://twitter.com/CityofCT/status/1697259196931252229 + stage: 2 + start: 2023-09-01 05:00:00 +- exclude: coct + finsh: 2023-09-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1695790083796828468 + stage: 1 + start: 2023-09-01 05:00:00 +- finsh: 2023-09-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697259196931252229 + stage: 4 + start: 2023-08-31 22:00:00 +- finsh: 2023-08-31 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697259196931252229 + stage: 2 + start: &id008 2023-08-31 17:00:00 +- exclude: coct + finsh: 2023-09-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1695790083796828468 + stage: 3 + start: 2023-08-31 16:00:00 +- exclude: coct + finsh: 2023-09-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1697210092179935262 + stage: 4 + start: &id010 2023-08-31 14:00:00 +- finsh: 2023-08-31 17:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697259196931252229 + stage: 4 + start: &id009 2023-08-31 10:00:00 +- finsh: *id008 + include: coct + source: https://twitter.com/CityofCT/status/1696898809576440224 + stage: 2 + start: 2023-08-31 10:00:00 +- finsh: 2023-08-31 10:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1697103871762391292 + stage: 3 + start: 2023-08-31 05:00:00 +- finsh: *id009 + include: coct + source: https://twitter.com/CityofCT/status/1696395190330654957 + stage: 2 + start: 2023-08-31 05:00:00 +- exclude: coct + finsh: *id010 + source: https://twitter.com/Eskom_SA/status/1697061945482805267 + stage: 4 + start: &id011 2023-08-31 03:41:00 +- finsh: 2023-08-31 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1696898809576440224 + stage: 4 + start: 2023-08-30 22:00:00 +- exclude: coct + finsh: *id011 + source: https://twitter.com/Eskom_SA/status/1696495100153499912 + stage: 4 + start: 2023-08-30 16:00:00 +- exclude: coct + finsh: 2023-08-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1696495100153499912 + stage: 2 + start: 2023-08-30 05:00:00 +- finsh: 2023-08-30 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1696898809576440224 + stage: 2 + start: 2023-08-30 05:00:00 +- finsh: 2023-08-30 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695810055642169780 + stage: 1 + start: 2023-08-30 05:00:00 +- finsh: 2023-08-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1696497387089395832 + stage: 4 + start: 2023-08-29 22:00:00 +- exclude: coct + finsh: 2023-08-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1696495100153499912 + stage: 4 + start: 2023-08-29 16:00:00 +- exclude: coct + finsh: 2023-08-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1696495100153499912 + stage: 2 + start: 2023-08-29 14:00:00 +- finsh: 2023-08-29 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1696497387089395832 + stage: 2 + start: 2023-08-29 05:00:00 +- exclude: coct + finsh: 2023-08-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1696352161599537414 + stage: 2 + start: 2023-08-29 05:00:00 +- finsh: 2023-08-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695810055642169780 + stage: 3 + start: 2023-08-28 22:00:00 +- exclude: coct + finsh: 2023-08-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1695790083796828468 + stage: 3 + start: 2023-08-28 16:00:00 +- finsh: 2023-08-28 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695810055642169780 + stage: 1 + start: 2023-08-28 05:00:00 +- exclude: coct + finsh: 2023-08-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1695790083796828468 + stage: 1 + start: 2023-08-28 05:00:00 +- finsh: 2023-08-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695810055642169780 + stage: 3 + start: 2023-08-27 16:00:00 +- exclude: coct + finsh: 2023-08-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1695790083796828468 + stage: 3 + start: 2023-08-27 16:00:00 +- finsh: 2023-08-27 07:11:00 + include: coct + source: https://twitter.com/CityofCT/status/1695665300396523580 + stage: 1 + start: 2023-08-27 05:00:00 +- exclude: coct + finsh: 2023-08-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1695393714326151615 + stage: 1 + start: 2023-08-27 05:00:00 +- exclude: coct + finsh: 2023-08-27 02:10:00 + source: https://twitter.com/Eskom_SA/status/1695629929835012172 + stage: 3 + start: 2023-08-26 16:00:00 +- finsh: 2023-08-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695403132463796591 + stage: 3 + start: &id012 2023-08-26 16:00:00 +- finsh: *id012 + include: coct + source: https://twitter.com/CityofCT/status/1695387813187878915 + stage: 0 + start: &id013 2023-08-26 12:50:00 +- exclude: coct + finsh: 2023-08-26 12:50:00 + source: https://twitter.com/Eskom_SA/status/1695393714326151615 + stage: 1 + start: 2023-08-26 05:00:00 +- finsh: *id013 + include: coct + source: https://twitter.com/CityofCT/status/1695044534420345292 + stage: 1 + start: 2023-08-26 05:00:00 +- finsh: 2023-08-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695044534420345292 + stage: 3 + start: 2023-08-25 22:00:00 +- exclude: coct + finsh: 2023-08-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1695037455894761577 + stage: 3 + start: 2023-08-25 16:00:00 +- finsh: 2023-08-25 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1695044534420345292 + stage: 1 + start: &id014 2023-08-25 10:00:00 +- exclude: coct + finsh: 2023-08-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1695037455894761577 + stage: 1 + start: 2023-08-25 05:00:00 +- finsh: *id014 + include: coct + source: https://twitter.com/CityofCT/status/1693666176679674098 + stage: 1 + start: 2023-08-25 05:00:00 +- finsh: 2023-08-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1694714945110487435 + stage: 3 + start: 2023-08-24 22:00:00 +- exclude: coct + finsh: 2023-08-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 3 + start: 2023-08-24 16:00:00 +- finsh: 2023-08-24 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1694714945110487435 + stage: 1 + start: &id015 2023-08-24 10:00:00 +- exclude: coct + finsh: 2023-08-24 16:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 1 + start: 2023-08-24 05:00:00 +- finsh: *id015 + include: coct + source: https://twitter.com/CityofCT/status/1693655993027035337 + stage: 1 + start: 2023-08-24 05:00:00 +- finsh: 2023-08-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1694387402188451918 + stage: 3 + start: 2023-08-23 22:00:00 +- finsh: 2023-08-23 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1694387402188451918 + stage: 1 + start: &id016 2023-08-23 18:00:00 +- exclude: coct + finsh: 2023-08-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 3 + start: 2023-08-23 16:00:00 +- finsh: *id016 + include: coct + source: https://twitter.com/CityofCT/status/1694355381235986678 + stage: 3 + start: &id017 2023-08-23 16:00:00 +- exclude: coct + finsh: 2023-08-23 16:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 1 + start: 2023-08-23 05:00:00 +- finsh: *id017 + include: coct + source: https://twitter.com/CityofCT/status/1693946736908091760 + stage: 1 + start: 2023-08-23 05:00:00 +- finsh: 2023-08-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1693946736908091760 + stage: 3 + start: 2023-08-22 22:00:00 +- exclude: coct + finsh: 2023-08-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 3 + start: 2023-08-22 16:00:00 +- exclude: coct + finsh: 2023-08-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 1 + start: 2023-08-22 05:00:00 +- finsh: 2023-08-22 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1693946736908091760 + stage: 1 + start: 2023-08-22 05:00:00 +- finsh: 2023-08-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1693655993027035337 + stage: 3 + start: 2023-08-21 22:00:00 +- exclude: coct + finsh: 2023-08-22 05:00:00 + source: https://twitter.com/Eskom_SA/status/1693577636981694836 + stage: 3 + start: 2023-08-21 16:00:00 +- finsh: 2023-08-21 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1693655993027035337 + stage: 1 + start: 2023-08-21 16:00:00 +- finsh: 2023-08-21 11:30:00 + include: coct + source: https://twitter.com/CityofCT/status/1693568974099808519 + stage: 1 + start: 2023-08-21 05:00:00 +- exclude: coct + finsh: 2023-08-21 11:30:00 + source: https://twitter.com/Eskom_SA/status/1693561169124974667 + stage: 1 + start: 2023-08-21 05:00:00 +- finsh: 2023-08-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1693307681933594886 + stage: 3 + start: 2023-08-20 16:00:00 +- exclude: coct + finsh: 2023-08-21 05:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 3 + start: 2023-08-20 16:00:00 +- exclude: coct + finsh: 2023-08-20 16:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 1 + start: 2023-08-20 05:00:00 +- finsh: 2023-08-20 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1692521519786721762 + stage: 1 + start: 2023-08-20 05:00:00 +- exclude: coct + finsh: 2023-08-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 3 + start: 2023-08-19 16:00:00 +- finsh: 2023-08-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1692521519786721762 + stage: 3 + start: 2023-08-19 16:00:00 +- exclude: coct + finsh: 2023-08-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 1 + start: 2023-08-19 05:00:00 +- finsh: 2023-08-19 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1692521519786721762 + stage: 1 + start: 2023-08-19 05:00:00 +- finsh: 2023-08-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1692521519786721762 + stage: 3 + start: 2023-08-18 22:00:00 +- exclude: coct + finsh: 2023-08-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 3 + start: 2023-08-18 16:00:00 +- exclude: coct + finsh: 2023-08-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1692520548788584915 + stage: 1 + start: 2023-08-18 05:00:00 +- finsh: 2023-08-18 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1692521519786721762 + stage: 1 + start: 2023-08-18 05:00:00 +- finsh: 2023-08-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691814096503517449 + stage: 3 + start: 2023-08-17 22:00:00 +- exclude: coct + finsh: 2023-08-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 3 + start: 2023-08-17 16:00:00 +- exclude: coct + finsh: 2023-08-17 16:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 1 + start: 2023-08-17 05:00:00 +- finsh: 2023-08-17 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691814096503517449 + stage: 1 + start: 2023-08-17 05:00:00 +- finsh: 2023-08-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691814096503517449 + stage: 3 + start: 2023-08-16 22:00:00 +- exclude: coct + finsh: 2023-08-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 3 + start: 2023-08-16 16:00:00 +- exclude: coct + finsh: 2023-08-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 1 + start: 2023-08-16 05:00:00 +- finsh: 2023-08-16 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691814096503517449 + stage: 1 + start: 2023-08-16 05:00:00 +- finsh: 2023-08-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691063029444591617 + stage: 3 + start: 2023-08-15 22:00:00 +- exclude: coct + finsh: 2023-08-16 05:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 3 + start: 2023-08-15 16:00:00 +- exclude: coct + finsh: 2023-08-15 16:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 1 + start: 2023-08-15 05:00:00 +- finsh: 2023-08-15 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691063029444591617 + stage: 1 + start: 2023-08-15 05:00:00 +- finsh: 2023-08-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691063029444591617 + stage: 3 + start: 2023-08-14 22:00:00 +- exclude: coct + finsh: 2023-08-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1691057549682802688 + stage: 3 + start: 2023-08-14 16:00:00 +- finsh: 2023-08-14 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1691063029444591617 + stage: 1 + start: 2023-08-14 05:00:00 +- exclude: coct + finsh: 2023-08-14 16:00:00 + source: https://twitter.com/Eskom_SA/status/1690350424413368320 + stage: 1 + start: 2023-08-14 05:00:00 +- exclude: coct + finsh: 2023-08-14 05:00:00 + source: https://twitter.com/Eskom_SA/status/1690350424413368320 + stage: 3 + start: 2023-08-13 16:00:00 +- finsh: 2023-08-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1690740068917424129 + stage: 3 + start: 2023-08-13 16:00:00 +- finsh: 2023-08-13 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1690632654524211200 + stage: 1 + start: &id018 2023-08-13 10:00:00 +- exclude: coct + finsh: 2023-08-13 16:00:00 + source: https://twitter.com/Eskom_SA/status/1690350424413368320 + stage: 1 + start: 2023-08-13 05:00:00 +- exclude: coct + finsh: 2023-08-13 05:00:00 + source: https://twitter.com/Eskom_SA/status/1690350424413368320 + stage: 3 + start: &id019 2023-08-12 15:00:00 +- finsh: *id018 + include: coct + source: https://twitter.com/CityofCT/status/1690272215776874496 + stage: 3 + start: 2023-08-12 06:00:00 +- exclude: coct + finsh: *id019 + source: https://twitter.com/Eskom_SA/status/1690220441695080448 + stage: 3 + start: 2023-08-12 05:00:00 +- finsh: 2023-08-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911669131689984 + stage: 3 + start: 2023-08-11 22:00:00 +- finsh: 2023-08-11 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911669131689984 + stage: 1 + start: 2023-08-11 16:00:00 +- exclude: coct + finsh: 2023-08-12 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688883188335099904 + stage: 3 + start: 2023-08-11 16:00:00 +- finsh: 2023-08-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911669131689984 + stage: 3 + start: 2023-08-10 22:00:00 +- finsh: 2023-08-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911669131689984 + stage: 1 + start: 2023-08-10 16:00:00 +- exclude: coct + finsh: 2023-08-11 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688883188335099904 + stage: 3 + start: 2023-08-10 16:00:00 +- exclude: coct + finsh: 2023-08-10 16:00:00 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 1 + start: 2023-08-10 05:00:00 +- finsh: 2023-08-10 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911563162619904 + stage: 3 + start: 2023-08-09 22:00:00 +- finsh: 2023-08-09 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911563162619904 + stage: 1 + start: 2023-08-09 16:00:00 +- exclude: coct + finsh: 2023-08-10 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688883188335099904 + stage: 3 + start: 2023-08-09 16:00:00 +- exclude: coct + finsh: 2023-08-09 16:00:00 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 1 + start: 2023-08-09 05:00:00 +- finsh: 2023-08-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911563162619904 + stage: 3 + start: 2023-08-08 22:00:00 +- exclude: coct + finsh: 2023-08-09 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688883188335099904 + stage: 3 + start: 2023-08-08 16:00:00 +- exclude: coct + finsh: 2023-08-08 16:00:00 + source: https://twitter.com/Eskom_SA/status/1688883188335099904 + stage: 1 + start: &id020 2023-08-08 14:00:00 +- finsh: 2023-08-08 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688911563162619904 + stage: 1 + start: 2023-08-08 05:00:00 +- exclude: coct + finsh: *id020 + source: https://twitter.com/Eskom_SA/status/1688151550995152896 + stage: 1 + start: 2023-08-08 05:00:00 +- finsh: 2023-08-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688171432381911041 + stage: 4 + start: 2023-08-07 22:00:00 +- finsh: 2023-08-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688171432381911041 + stage: 2 + start: 2023-08-07 16:00:00 +- exclude: coct + finsh: 2023-08-08 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688151550995152896 + stage: 4 + start: 2023-08-07 16:00:00 +- finsh: 2023-08-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688171432381911041 + stage: 1 + start: 2023-08-07 05:00:00 +- exclude: coct + finsh: 2023-08-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1688151550995152896 + stage: 1 + start: 2023-08-07 05:00:00 +- finsh: 2023-08-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688171432381911041 + stage: 3 + start: 2023-08-06 16:00:00 +- exclude: coct + finsh: 2023-08-07 05:00:00 + source: https://twitter.com/Eskom_SA/status/1688151550995152896 + stage: 3 + start: 2023-08-06 16:00:00 +- exclude: coct + finsh: 2023-08-06 16:00:00 + source: https://twitter.com/Eskom_SA/status/1688151550995152896 + stage: 1 + start: &id021 2023-08-06 13:00:00 +- finsh: 2023-08-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1688171432381911041 + stage: 1 + start: 2023-08-06 05:00:00 +- exclude: coct + finsh: *id021 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 1 + start: 2023-08-06 05:00:00 +- finsh: 2023-08-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1687420174842933248 + stage: 3 + start: 2023-08-05 16:00:00 +- exclude: coct + finsh: 2023-08-06 05:00:00 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 3 + start: 2023-08-05 16:00:00 +- finsh: 2023-08-05 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1687420174842933248 + stage: 1 + start: 2023-08-05 05:00:00 +- exclude: coct + finsh: 2023-08-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 1 + start: 2023-08-05 05:00:00 +- finsh: 2023-08-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1687420174842933248 + stage: 3 + start: 2023-08-04 22:00:00 +- exclude: coct + finsh: 2023-08-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1687414264129093632 + stage: 3 + start: 2023-08-04 16:00:00 +- finsh: 2023-08-04 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1687420174842933248 + stage: 1 + start: 2023-08-04 05:00:00 +- exclude: coct + finsh: 2023-08-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1686323251625000961 + stage: 1 + start: 2023-08-04 05:00:00 +- finsh: 2023-08-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 4 + start: 2023-08-03 22:00:00 +- exclude: coct + finsh: 2023-08-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1686323251625000961 + stage: 4 + start: 2023-08-03 16:00:00 +- finsh: 2023-08-03 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 2 + start: 2023-08-03 16:00:00 +- exclude: coct + finsh: 2023-08-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1686323251625000961 + stage: 1 + start: 2023-08-03 05:00:00 +- finsh: 2023-08-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 1 + start: 2023-08-03 05:00:00 +- finsh: 2023-08-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 4 + start: 2023-08-02 22:00:00 +- exclude: coct + finsh: 2023-08-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1686323251625000961 + stage: 4 + start: 2023-08-02 16:00:00 +- finsh: 2023-08-02 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 2 + start: 2023-08-02 16:00:00 +- exclude: coct + finsh: 2023-08-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1686323251625000961 + stage: 1 + start: 2023-08-02 05:00:00 +- finsh: 2023-08-02 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 1 + start: 2023-08-02 05:00:00 +- finsh: 2023-08-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 4 + start: 2023-08-01 22:00:00 +- exclude: coct + finsh: 2023-08-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1685613006455963648 + stage: 4 + start: 2023-08-01 16:00:00 +- exclude: coct + finsh: 2023-08-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1685613006455963648 + stage: 2 + start: 2023-08-01 05:00:00 +- finsh: 2023-08-01 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1686345633928491008 + stage: 2 + start: 2023-08-01 05:00:00 +- finsh: 2023-08-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1685637971507027970 + stage: 4 + start: 2023-07-31 22:00:00 +- exclude: coct + finsh: 2023-08-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1685613006455963648 + stage: 4 + start: 2023-07-31 16:00:00 +- finsh: 2023-07-31 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1685637971507027970 + stage: 2 + start: 2023-07-31 05:00:00 +- exclude: coct + finsh: 2023-07-31 16:00:00 + source: https://twitter.com/Eskom_SA/status/1685613006455963648 + stage: 2 + start: 2023-07-31 05:00:00 +- finsh: 2023-07-31 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1685637971507027970 + stage: 4 + start: 2023-07-30 16:00:00 +- exclude: coct + finsh: 2023-07-31 05:00:00 + source: https://twitter.com/Eskom_SA/status/1685613006455963648 + stage: 4 + start: 2023-07-30 16:00:00 +- finsh: 2023-07-30 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1685637971507027970 + stage: 2 + start: 2023-07-30 05:00:00 +- exclude: coct + finsh: 2023-07-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1684904333429669888 + stage: 2 + start: 2023-07-30 05:00:00 +- exclude: coct + finsh: 2023-07-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1684904333429669888 + stage: 4 + start: 2023-07-29 16:00:00 +- finsh: 2023-07-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684914908209545216 + stage: 4 + start: 2023-07-29 16:00:00 +- exclude: coct + finsh: 2023-07-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1684904333429669888 + stage: 3 + start: 2023-07-29 05:00:00 +- finsh: 2023-07-29 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684914908209545216 + stage: 3 + start: 2023-07-29 05:00:00 +- finsh: 2023-07-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684914908209545216 + stage: 4 + start: 2023-07-28 22:00:00 +- finsh: 2023-07-28 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684914908209545216 + stage: 2 + start: 2023-07-28 16:00:00 +- exclude: coct + finsh: 2023-07-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1684904333429669888 + stage: 4 + start: &id023 2023-07-28 14:00:00 +- finsh: 2023-07-28 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684914908209545216 + stage: 3 + start: 2023-07-28 06:00:00 +- finsh: 2023-07-28 06:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684235232826859520 + stage: 4 + start: 2023-07-27 22:00:00 +- finsh: 2023-07-27 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684235232826859520 + stage: 2 + start: 2023-07-27 16:00:00 +- finsh: 2023-07-27 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684235232826859520 + stage: 6 + start: 2023-07-26 22:00:00 +- finsh: 2023-07-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683076694683394049 + stage: 4 + start: 2023-07-26 22:00:00 +- finsh: 2023-07-26 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1684235232826859520 + stage: 2 + start: &id022 2023-07-26 16:00:00 +- finsh: *id022 + include: coct + source: https://twitter.com/CityofCT/status/1683076694683394049 + stage: 2 + start: 2023-07-26 05:00:00 +- finsh: 2023-07-26 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683863928953004036 + stage: 4 + start: 2023-07-25 17:00:00 +- finsh: 2023-07-25 17:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683454812552036352 + stage: 2 + start: 2023-07-25 16:00:00 +- exclude: coct + finsh: *id023 + source: https://twitter.com/Eskom_SA/status/1683443467182039041 + stage: 4 + start: 2023-07-25 05:00:00 +- finsh: 2023-07-25 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683454812552036352 + stage: 4 + start: 2023-07-25 05:00:00 +- finsh: 2023-07-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683454812552036352 + stage: 5 + start: 2023-07-24 22:00:00 +- finsh: 2023-07-24 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683454812552036352 + stage: 3 + start: 2023-07-24 16:00:00 +- exclude: coct + finsh: 2023-07-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1683443467182039041 + stage: 5 + start: &id025 2023-07-24 14:00:00 +- finsh: 2023-07-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683454812552036352 + stage: 4 + start: &id024 2023-07-24 14:00:00 +- finsh: *id024 + include: coct + source: https://twitter.com/CityofCT/status/1683076691768274944 + stage: 3 + start: 2023-07-24 05:00:00 +- exclude: coct + finsh: *id025 + source: https://twitter.com/Eskom_SA/status/1683064670796521472 + stage: 3 + start: 2023-07-24 05:00:00 +- finsh: 2023-07-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683076691768274944 + stage: 4 + start: 2023-07-23 14:00:00 +- exclude: coct + finsh: 2023-07-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1683064670796521472 + stage: 4 + start: &id026 2023-07-23 14:00:00 +- exclude: coct + finsh: 2023-07-23 14:00:00 + source: https://twitter.com/Eskom_SA/status/1683064670796521472 + stage: 2 + start: 2023-07-23 12:00:00 +- finsh: 2023-07-23 14:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1683076691768274944 + stage: 2 + start: 2023-07-23 05:00:00 +- exclude: coct + finsh: *id026 + source: https://twitter.com/Eskom_SA/status/1682373646541639680 + stage: 2 + start: 2023-07-23 05:00:00 +- exclude: coct + finsh: 2023-07-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 3 + start: 2023-07-22 16:00:00 +- exclude: coct + finsh: 2023-07-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 1 + start: 2023-07-22 05:00:00 +- finsh: 2023-07-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1682380379292925957 + stage: 4 + start: 2023-07-22 00:00:00 +- exclude: coct + finsh: 2023-07-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1682373646541639680 + stage: 4 + start: &id027 2023-07-22 00:00:00 +- finsh: 2023-07-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1682299114992566272 + stage: 4 + start: 2023-07-21 22:00:00 +- finsh: 2023-07-21 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1682299114992566272 + stage: 2 + start: 2023-07-21 16:00:00 +- exclude: coct + finsh: *id027 + source: https://twitter.com/Eskom_SA/status/1682295655148994562 + stage: 4 + start: 2023-07-21 10:00:00 +- finsh: 2023-07-21 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1682299114992566272 + stage: 3 + start: &id028 2023-07-21 10:00:00 +- finsh: *id028 + include: coct + source: https://twitter.com/CityofCT/status/1681677099839389697 + stage: 1 + start: 2023-07-21 05:00:00 +- exclude: coct + finsh: 2023-07-21 16:00:00 + source: https://twitter.com/Eskom_SA/status/1681663775605137409 + stage: 2 + start: 2023-07-21 05:00:00 +- finsh: 2023-07-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 4 + start: 2023-07-20 22:00:00 +- exclude: coct + finsh: 2023-07-21 05:00:00 + source: https://twitter.com/Eskom_SA/status/1681663775605137409 + stage: 4 + start: 2023-07-20 16:00:00 +- finsh: 2023-07-20 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 2 + start: &id029 2023-07-20 16:00:00 +- finsh: 2023-07-20 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 3 + start: 2023-07-20 09:00:00 +- finsh: *id029 + include: coct + source: https://twitter.com/CityofCT/status/1681635730727075840 + stage: 1 + start: 2023-07-20 09:00:00 +- exclude: coct + finsh: 2023-07-20 16:00:00 + source: https://twitter.com/Eskom_SA/status/1681663775605137409 + stage: 3 + start: 2023-07-20 05:00:00 +- finsh: 2023-07-20 09:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 2 + start: 2023-07-20 05:00:00 +- finsh: 2023-07-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 4 + start: 2023-07-19 22:00:00 +- exclude: coct + finsh: 2023-07-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1681663775605137409 + stage: 4 + start: 2023-07-19 16:00:00 +- finsh: 2023-07-19 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1681677096672690177 + stage: 2 + start: &id030 2023-07-19 16:00:00 +- exclude: coct + finsh: 2023-07-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 3 + start: 2023-07-19 16:00:00 +- finsh: *id030 + include: coct + source: https://twitter.com/CityofCT/status/1681635730727075840 + stage: 1 + start: 2023-07-19 05:00:00 +- exclude: coct + finsh: 2023-07-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 1 + start: 2023-07-19 05:00:00 +- finsh: 2023-07-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680929352312143874 + stage: 3 + start: 2023-07-18 22:00:00 +- exclude: coct + finsh: 2023-07-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 3 + start: 2023-07-18 16:00:00 +- exclude: coct + finsh: 2023-07-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 1 + start: 2023-07-18 05:00:00 +- finsh: 2023-07-18 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680929352312143874 + stage: 1 + start: 2023-07-18 05:00:00 +- finsh: 2023-07-18 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679002265422577669 + stage: 4 + start: 2023-07-18 05:00:00 +- finsh: 2023-07-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680929352312143874 + stage: 4 + start: 2023-07-17 22:00:00 +- exclude: coct + finsh: 2023-07-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1680922608555134976 + stage: 4 + start: 2023-07-17 16:00:00 +- exclude: coct + finsh: 2023-07-17 16:00:00 + source: https://twitter.com/Eskom_SA/status/1680532844173488128 + stage: 2 + start: 2023-07-17 05:00:00 +- finsh: 2023-07-17 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680929352312143874 + stage: 2 + start: 2023-07-17 05:00:00 +- exclude: coct + finsh: 2023-07-17 14:00:00 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 3 + start: 2023-07-17 05:00:00 +- finsh: 2023-07-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680541836467658752 + stage: 4 + start: 2023-07-16 16:00:00 +- exclude: coct + finsh: 2023-07-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1680532844173488128 + stage: 4 + start: &id031 2023-07-16 16:00:00 +- exclude: coct + finsh: *id031 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 4 + start: 2023-07-16 14:00:00 +- finsh: 2023-07-16 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1680541836467658752 + stage: 2 + start: &id032 2023-07-16 08:00:00 +- exclude: coct + finsh: 2023-07-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1680441055211077634 + stage: 2 + start: &id033 2023-07-16 08:00:00 +- finsh: *id032 + include: coct + source: https://twitter.com/CityofCT/status/1679002265422577669 + stage: 4 + start: 2023-07-16 05:00:00 +- exclude: coct + finsh: *id033 + source: https://twitter.com/Eskom_SA/status/1679496210397134850 + stage: 4 + start: 2023-07-16 05:00:00 +- exclude: coct + finsh: *id033 + source: https://twitter.com/Eskom_SA/status/1678389358217383937 + stage: 2 + start: 2023-07-16 05:00:00 +- finsh: 2023-07-16 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-15 16:00:00 +- exclude: coct + finsh: 2023-07-16 05:00:00 + source: https://twitter.com/Eskom_SA/status/1679496210397134850 + stage: 6 + start: 2023-07-15 14:00:00 +- exclude: coct + finsh: 2023-07-15 14:00:00 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 3 + start: 2023-07-15 05:00:00 +- finsh: 2023-07-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678727852760481793 + stage: 4 + start: 2023-07-14 22:00:00 +- finsh: *id032 + include: coct + source: https://twitter.com/CityofCT/status/1679564739955904513 + stage: 6 + start: &id034 2023-07-14 20:00:00 +- finsh: *id034 + include: coct + source: https://twitter.com/CityofCT/status/1678029896025530369 + stage: 1 + start: 2023-07-14 16:00:00 +- finsh: 2023-07-15 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-14 16:00:00 +- finsh: 2023-07-14 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679564739955904513 + stage: 4 + start: &id035 2023-07-14 06:00:00 +- finsh: *id035 + include: coct + source: https://twitter.com/CityofCT/status/1678727852760481793 + stage: 3 + start: 2023-07-14 05:00:00 +- finsh: 2023-07-14 06:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679564739955904513 + stage: 6 + start: 2023-07-13 22:00:00 +- finsh: 2023-07-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678727852760481793 + stage: 4 + start: 2023-07-13 22:00:00 +- finsh: 2023-07-14 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-13 16:00:00 +- exclude: coct + finsh: 2023-07-16 01:35:00 + source: https://twitter.com/Eskom_SA/status/1680441055211077634 + stage: 6 + start: 2023-07-13 14:00:00 +- exclude: coct + finsh: 2023-07-14 05:00:00 + source: https://twitter.com/Eskom_SA/status/1679496210397134850 + stage: 6 + start: 2023-07-13 14:00:00 +- finsh: 2023-07-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679564739955904513 + stage: 4 + start: 2023-07-13 05:00:00 +- exclude: coct + finsh: 2023-07-13 14:00:00 + source: https://twitter.com/Eskom_SA/status/1679496210397134850 + stage: 4 + start: 2023-07-13 05:00:00 +- exclude: coct + finsh: 2023-07-13 14:00:00 + source: https://twitter.com/Eskom_SA/status/1678389358217383937 + stage: 2 + start: 2023-07-13 05:00:00 +- finsh: 2023-07-13 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679002265422577669 + stage: 6 + start: 2023-07-12 22:00:00 +- exclude: coct + finsh: 2023-07-13 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-12 16:00:00 +- finsh: 2023-07-13 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-12 16:00:00 +- exclude: coct + finsh: 2023-07-13 05:00:00 + source: https://twitter.com/Eskom_SA/status/1678982734637662211 + stage: 6 + start: 2023-07-12 14:00:00 +- finsh: 2023-07-12 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1679002265422577669 + stage: 4 + start: &id036 2023-07-12 07:00:00 +- exclude: coct + finsh: 2023-07-12 14:00:00 + source: https://twitter.com/Eskom_SA/status/1678982734637662211 + stage: 4 + start: &id037 2023-07-12 07:00:00 +- finsh: *id036 + include: coct + source: https://twitter.com/CityofCT/status/1678727849648242689 + stage: 3 + start: 2023-07-12 05:00:00 +- exclude: coct + finsh: *id037 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 3 + start: 2023-07-12 05:00:00 +- finsh: 2023-07-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678727849648242689 + stage: 4 + start: 2023-07-11 22:00:00 +- finsh: 2023-07-12 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-11 16:00:00 +- exclude: coct + finsh: 2023-07-12 05:00:00 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 4 + start: 2023-07-11 14:00:00 +- exclude: coct + finsh: 2023-07-11 14:00:00 + source: https://twitter.com/Eskom_SA/status/1678713914408726530 + stage: 2 + start: &id038 2023-07-11 13:00:00 +- finsh: 2023-07-11 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678727849648242689 + stage: 2 + start: 2023-07-11 05:00:00 +- exclude: coct + finsh: *id038 + source: https://twitter.com/Eskom_SA/status/1678389358217383937 + stage: 2 + start: 2023-07-11 05:00:00 +- finsh: 2023-07-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678405368307757060 + stage: 4 + start: 2023-07-10 22:00:00 +- finsh: 2023-07-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678405368307757060 + stage: 2 + start: 2023-07-10 16:00:00 +- finsh: 2023-07-11 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-10 16:00:00 +- finsh: 2023-07-10 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678405368307757060 + stage: 3 + start: 2023-07-10 13:00:00 +- exclude: coct + finsh: 2023-07-11 05:00:00 + source: https://twitter.com/Eskom_SA/status/1678389358217383937 + stage: 4 + start: 2023-07-10 13:00:00 +- finsh: 2023-07-10 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1678029896025530369 + stage: 3 + start: 2023-07-09 16:00:00 +- exclude: coct + finsh: 2023-07-10 00:00:00 + source: https://twitter.com/Eskom_SA/status/1678014498194456576 + stage: 3 + start: 2023-07-09 16:00:00 +- finsh: 2023-07-09 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1677632035320373249 + stage: 3 + start: 2023-07-08 16:00:00 +- exclude: coct + finsh: 2023-07-09 00:00:00 + source: https://twitter.com/Eskom_SA/status/1677617910456500224 + stage: 3 + start: 2023-07-08 16:00:00 +- exclude: coct + finsh: 2023-07-08 16:00:00 + source: https://twitter.com/Eskom_SA/status/1676926595590676481 + stage: 1 + start: 2023-07-08 05:00:00 +- exclude: coct + finsh: 2023-07-08 00:00:00 + source: https://twitter.com/Eskom_SA/status/1676926595590676481 + stage: 3 + start: 2023-07-07 16:00:00 +- finsh: 2023-07-08 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1676979020938764288 + stage: 3 + start: 2023-07-07 16:00:00 +- exclude: coct + finsh: 2023-07-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1676926595590676481 + stage: 1 + start: 2023-07-07 05:00:00 +- finsh: 2023-07-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1676979020938764288 + stage: 1 + start: 2023-07-07 05:00:00 +- exclude: coct + finsh: 2023-07-07 00:00:00 + source: https://twitter.com/Eskom_SA/status/1676926595590676481 + stage: 3 + start: 2023-07-06 16:00:00 +- finsh: 2023-07-07 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674784651507019781 + stage: 3 + start: 2023-07-06 16:00:00 +- exclude: coct + finsh: 2023-07-06 16:00:00 + source: https://twitter.com/Eskom_SA/status/1676926595590676481 + stage: 1 + start: &id039 2023-07-06 14:00:00 +- finsh: 2023-07-07 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1676979020938764288 + stage: 1 + start: 2023-07-06 05:00:00 +- exclude: coct + finsh: *id039 + source: https://twitter.com/Eskom_SA/status/1676214474888433670 + stage: 1 + start: 2023-07-06 05:00:00 +- exclude: coct + finsh: 2023-07-06 00:00:00 + source: https://twitter.com/Eskom_SA/status/1676214474888433670 + stage: 3 + start: 2023-07-05 16:00:00 +- finsh: 2023-07-06 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674784651507019781 + stage: 3 + start: 2023-07-05 16:00:00 +- exclude: coct + finsh: 2023-07-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1676214474888433670 + stage: 1 + start: 2023-07-05 05:00:00 +- finsh: 2023-07-06 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1676222584180834311 + stage: 1 + start: 2023-07-05 05:00:00 +- exclude: coct + finsh: 2023-07-05 00:00:00 + source: https://twitter.com/Eskom_SA/status/1676214474888433670 + stage: 3 + start: 2023-07-04 16:00:00 +- finsh: 2023-07-05 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1676222584180834311 + stage: 1 + start: 2023-07-04 16:00:00 +- finsh: 2023-07-04 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1675504671941701635 + stage: 1 + start: 2023-07-03 16:00:00 +- exclude: coct + finsh: 2023-07-04 00:00:00 + source: https://twitter.com/Eskom_SA/status/1675460911421685763 + stage: 3 + start: 2023-07-03 16:00:00 +- finsh: 2023-07-03 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1675504671941701635 + stage: 3 + start: 2023-07-02 16:00:00 +- exclude: coct + finsh: 2023-07-03 00:00:00 + source: https://twitter.com/Eskom_SA/status/1675460911421685763 + stage: 3 + start: 2023-07-02 16:00:00 +- exclude: coct + finsh: 2023-07-02 00:00:00 + source: https://twitter.com/Eskom_SA/status/1674765893014810625 + stage: 3 + start: 2023-07-01 16:00:00 +- finsh: 2023-07-02 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674784651507019781 + stage: 3 + start: 2023-07-01 16:00:00 +- exclude: coct + finsh: 2023-07-01 00:00:00 + source: https://twitter.com/Eskom_SA/status/1674765893014810625 + stage: 3 + start: 2023-06-30 16:00:00 +- finsh: 2023-07-01 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674784651507019781 + stage: 1 + start: &id040 2023-06-30 16:00:00 +- exclude: coct + finsh: 2023-06-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1674045234265587714 + stage: 1 + start: 2023-06-30 07:00:00 +- finsh: *id040 + include: coct + source: https://twitter.com/CityofCT/status/1674064429061644298 + stage: 1 + start: 2023-06-30 05:00:00 +- exclude: coct + finsh: 2023-06-30 00:00:00 + source: https://twitter.com/Eskom_SA/status/1674045234265587714 + stage: 3 + start: 2023-06-29 16:00:00 +- exclude: coct + finsh: 2023-06-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1674045234265587714 + stage: 1 + start: 2023-06-29 07:00:00 +- finsh: 2023-06-30 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674064429061644298 + stage: 1 + start: 2023-06-29 05:00:00 +- finsh: 2023-06-29 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1674064429061644298 + stage: 1 + start: 2023-06-28 16:00:00 +- exclude: coct + finsh: 2023-06-29 00:00:00 + source: https://twitter.com/Eskom_SA/status/1674045234265587714 + stage: 3 + start: 2023-06-28 16:00:00 +- finsh: 2023-06-28 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1673933330297782272 + stage: 1 + start: 2023-06-28 08:00:00 +- exclude: coct + finsh: 2023-06-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1674045234265587714 + stage: 2 + start: 2023-06-28 07:00:00 +- exclude: coct + finsh: 2023-06-28 00:00:00 + source: https://twitter.com/Eskom_SA/status/1672961632706654210 + stage: 3 + start: 2023-06-27 16:00:00 +- finsh: 2023-06-28 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1673236138885099522 + stage: 1 + start: 2023-06-27 16:00:00 +- exclude: coct + finsh: 2023-06-27 00:00:00 + source: https://twitter.com/Eskom_SA/status/1672961632706654210 + stage: 3 + start: 2023-06-26 16:00:00 +- finsh: 2023-06-27 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1673236138885099522 + stage: 1 + start: 2023-06-26 16:00:00 +- exclude: coct + finsh: 2023-06-26 00:00:00 + source: https://twitter.com/Eskom_SA/status/1672961632706654210 + stage: 3 + start: 2023-06-25 16:00:00 +- finsh: 2023-06-26 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1672334751254847493 + stage: 3 + start: 2023-06-25 16:00:00 +- finsh: 2023-06-25 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1672334751254847493 + stage: 1 + start: 2023-06-25 05:00:00 +- exclude: coct + finsh: 2023-06-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1672279129914236928 + stage: 1 + start: 2023-06-25 05:00:00 +- finsh: 2023-06-25 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1672334745265401858 + stage: 3 + start: 2023-06-24 16:00:00 +- exclude: coct + finsh: 2023-06-25 00:00:00 + source: https://twitter.com/Eskom_SA/status/1672279129914236928 + stage: 3 + start: 2023-06-24 16:00:00 +- finsh: 2023-06-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1672334745265401858 + stage: 1 + start: 2023-06-24 05:00:00 +- exclude: coct + finsh: 2023-06-24 16:00:00 + source: https://twitter.com/Eskom_SA/status/1672279129914236928 + stage: 1 + start: 2023-06-24 05:00:00 +- finsh: 2023-06-24 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1672334745265401858 + stage: 1 + start: 2023-06-23 16:00:00 +- exclude: coct + finsh: 2023-06-24 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-23 16:00:00 +- exclude: coct + finsh: 2023-06-23 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-22 16:00:00 +- finsh: 2023-06-23 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1671523060862574593 + stage: 1 + start: 2023-06-22 16:00:00 +- exclude: coct + finsh: 2023-06-22 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-21 16:00:00 +- finsh: 2023-06-22 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1671523060862574593 + stage: 1 + start: 2023-06-21 16:00:00 +- exclude: coct + finsh: 2023-06-21 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-20 16:00:00 +- finsh: 2023-06-21 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1670445029519753218 + stage: 1 + start: 2023-06-20 16:00:00 +- exclude: coct + finsh: 2023-06-20 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-19 16:00:00 +- finsh: 2023-06-20 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1670445029519753218 + stage: 1 + start: 2023-06-19 16:00:00 +- exclude: coct + finsh: 2023-06-19 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-18 16:00:00 +- finsh: 2023-06-19 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1670445029519753218 + stage: 3 + start: 2023-06-18 16:00:00 +- exclude: coct + finsh: 2023-06-18 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-17 16:00:00 +- finsh: 2023-06-18 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1669695834366066690 + stage: 3 + start: 2023-06-17 16:00:00 +- exclude: coct + finsh: 2023-06-17 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-16 16:00:00 +- finsh: 2023-06-17 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1669695834366066690 + stage: 1 + start: 2023-06-16 16:00:00 +- exclude: coct + finsh: 2023-06-16 00:00:00 + source: https://twitter.com/Eskom_SA/status/1668984599936991232 + stage: 3 + start: 2023-06-15 16:00:00 +- finsh: 2023-06-16 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1668992663821983746 + stage: 1 + start: 2023-06-15 16:00:00 +- finsh: 2023-06-15 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667886205042556929 + stage: 3 + start: 2023-06-14 22:00:00 +- exclude: coct + finsh: 2023-06-15 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667876251464335361 + stage: 3 + start: 2023-06-14 16:00:00 +- finsh: 2023-06-15 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1668992663821983746 + stage: 1 + start: 2023-06-14 16:00:00 +- finsh: 2023-06-14 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667886205042556929 + stage: 3 + start: 2023-06-13 22:00:00 +- finsh: 2023-06-14 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1668244652892344322 + stage: 1 + start: 2023-06-13 16:00:00 +- exclude: coct + finsh: 2023-06-14 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667876251464335361 + stage: 3 + start: 2023-06-13 16:00:00 +- finsh: 2023-06-13 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667886114688978951 + stage: 3 + start: 2023-06-12 22:00:00 +- finsh: 2023-06-13 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1668244652892344322 + stage: 1 + start: 2023-06-12 16:00:00 +- exclude: coct + finsh: 2023-06-13 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667876251464335361 + stage: 3 + start: 2023-06-12 16:00:00 +- exclude: coct + finsh: 2023-06-12 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667876251464335361 + stage: 4 + start: 2023-06-11 16:00:00 +- finsh: 2023-06-12 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667886114688978951 + stage: 4 + start: 2023-06-11 16:00:00 +- finsh: 2023-06-11 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667133909262376960 + stage: 1 + start: 2023-06-11 05:00:00 +- exclude: coct + finsh: 2023-06-11 16:00:00 + source: https://twitter.com/Eskom_SA/status/1667121757302472704 + stage: 1 + start: 2023-06-11 05:00:00 +- finsh: 2023-06-11 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667133905542197248 + stage: 4 + start: 2023-06-10 16:00:00 +- exclude: coct + finsh: 2023-06-11 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667121757302472704 + stage: 4 + start: 2023-06-10 16:00:00 +- finsh: 2023-06-10 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667133905542197248 + stage: 1 + start: 2023-06-10 05:00:00 +- exclude: coct + finsh: 2023-06-10 16:00:00 + source: https://twitter.com/Eskom_SA/status/1667121757302472704 + stage: 1 + start: 2023-06-10 05:00:00 +- finsh: 2023-06-10 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667133905542197248 + stage: 3 + start: 2023-06-09 22:00:00 +- finsh: 2023-06-09 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1667133905542197248 + stage: 1 + start: 2023-06-09 16:00:00 +- exclude: coct + finsh: 2023-06-10 00:00:00 + source: https://twitter.com/Eskom_SA/status/1667121757302472704 + stage: 3 + start: 2023-06-09 16:00:00 +- finsh: 2023-06-09 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666432912198184961 + stage: 3 + start: 2023-06-08 22:00:00 +- finsh: 2023-06-08 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666432912198184961 + stage: 1 + start: 2023-06-08 16:00:00 +- exclude: coct + finsh: 2023-06-09 00:00:00 + source: https://twitter.com/Eskom_SA/status/1666058659816783873 + stage: 3 + start: 2023-06-08 16:00:00 +- finsh: 2023-06-08 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666432912198184961 + stage: 3 + start: 2023-06-07 22:00:00 +- finsh: 2023-06-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666432912198184961 + stage: 1 + start: 2023-06-07 16:00:00 +- exclude: coct + finsh: 2023-06-08 00:00:00 + source: https://twitter.com/Eskom_SA/status/1666058659816783873 + stage: 3 + start: 2023-06-07 16:00:00 +- exclude: coct + finsh: 2023-06-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1665332864290897922/photo/1 + stage: 1 + start: 2023-06-07 05:00:00 +- finsh: 2023-06-07 00:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666093693814853635 + stage: 3 + start: 2023-06-06 22:00:00 +- exclude: coct + finsh: 2023-06-07 00:00:00 + source: https://twitter.com/Eskom_SA/status/1666058659816783873 + stage: 3 + start: 2023-06-06 16:00:00 +- finsh: 2023-06-06 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666093693814853635 + stage: 1 + start: 2023-06-06 16:00:00 +- finsh: 2023-06-06 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1666000898437312513 + stage: 2 + start: 2023-06-06 16:00:00 +- exclude: coct + finsh: 2023-06-06 16:00:00 + source: https://twitter.com/Eskom_SA/status/1665953473395843072 + stage: 0 + start: 2023-06-06 08:00:00 +- exclude: coct + finsh: 2023-06-06 08:00:00 + source: https://twitter.com/Eskom_SA/status/1665332864290897922/photo/1 + stage: 1 + start: 2023-06-06 05:00:00 +- finsh: 2023-06-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1665722443896352769 + stage: 0 + start: 2023-06-06 05:00:00 +- finsh: 2023-06-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1665722443896352769 + stage: 4 + start: 2023-06-05 22:00:00 +- exclude: coct + finsh: 2023-06-06 05:00:00 + source: https://twitter.com/Eskom_SA/status/1665332864290897922/photo/1 + stage: 4 + start: 2023-06-05 16:00:00 +- finsh: 2023-06-05 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1665722443896352769 + stage: 3 + start: 2023-06-05 16:00:00 +- finsh: 2023-06-05 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1665354631105445891 + stage: 0 + start: 2023-06-05 05:00:00 +- exclude: coct + finsh: 2023-06-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1665332864290897922/photo/1 + stage: 2 + start: 2023-06-04 16:00:00 +- finsh: 2023-06-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1665354631105445891 + stage: 2 + start: 2023-06-04 16:00:00 +- exclude: coct + finsh: 2023-06-05 00:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 6 + start: 2023-06-04 16:00:00 +- finsh: 2023-06-04 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664993433772072961 + stage: 0 + start: 2023-06-04 05:00:00 +- exclude: coct + finsh: 2023-06-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664987567463309312 + stage: 0 + start: 2023-06-04 05:00:00 +- finsh: 2023-06-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664987567463309312 + stage: 0 + start: 2023-06-04 05:00:00 +- exclude: coct + finsh: 2023-06-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1664987567463309312 + stage: 4 + start: 2023-06-03 16:00:00 +- finsh: 2023-06-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664993433772072961 + stage: 4 + start: 2023-06-03 16:00:00 +- finsh: 2023-06-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1664987567463309312 + stage: 4 + start: 2023-06-03 16:00:00 +- exclude: coct + finsh: 2023-06-04 00:00:00 + source: https://twitter.com/Eskom_SA/status/1662785206925893632 + stage: 5 + start: 2023-06-03 16:00:00 +- exclude: coct + finsh: 2023-06-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664943896822939649 + stage: 0 + start: 2023-06-03 11:40:00 +- finsh: 2023-06-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664993433772072961 + stage: 0 + start: &id041 2023-06-03 11:40:00 +- finsh: 2023-06-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664943896822939649 + stage: 0 + start: 2023-06-03 11:40:00 +- finsh: 2023-06-10 00:00:00 + source: https://twitter.com/Eskom_SA/status/1664943896822939649 + stage: 0 + start: 2023-06-03 11:40:00 +- finsh: 2023-07-01 00:00:00 + source: https://twitter.com/Eskom_SA/status/1664943896822939649 + stage: 0 + start: 2023-06-03 11:40:00 +- exclude: coct + finsh: 2023-06-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664250326818365440 + stage: 2 + start: 2023-06-03 05:00:00 +- finsh: *id041 + include: coct + source: https://twitter.com/CityofCT/status/1664305001110421513 + stage: 2 + start: 2023-06-03 05:00:00 +- finsh: 2023-06-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664305001110421513 + stage: 4 + start: 2023-06-02 22:00:00 +- finsh: 2023-06-02 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663929404882296835 + stage: 5 + start: 2023-06-02 16:00:00 +- exclude: coct + finsh: 2023-06-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1662785206925893632 + stage: 5 + start: 2023-06-02 16:00:00 +- exclude: coct + finsh: 2023-06-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1664250326818365440 + stage: 4 + start: 2023-06-02 05:00:00 +- finsh: 2023-06-02 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664305001110421513 + stage: 3 + start: 2023-06-02 05:00:00 +- finsh: 2023-06-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664305001110421513 + stage: 6 + start: 2023-06-01 22:00:00 +- exclude: coct + finsh: 2023-06-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1664250326818365440 + stage: 6 + start: 2023-06-01 16:00:00 +- finsh: 2023-06-01 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1664305001110421513 + stage: 5 + start: 2023-06-01 16:00:00 +- exclude: coct + finsh: 2023-06-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1664250326818365440 + stage: 4 + start: &id042 2023-06-01 14:00:00 +- finsh: 2023-06-01 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663929404882296835 + stage: 3 + start: 2023-06-01 05:00:00 +- exclude: coct + finsh: *id042 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 4 + start: 2023-06-01 05:00:00 +- finsh: 2023-06-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663929404882296835 + stage: 6 + start: 2023-05-31 20:00:00 +- exclude: coct + finsh: 2023-06-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 6 + start: 2023-05-31 16:00:00 +- finsh: 2023-05-31 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663929404882296835 + stage: 4 + start: 2023-05-31 16:00:00 +- exclude: coct + finsh: 2023-05-31 16:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 4 + start: 2023-05-31 05:00:00 +- finsh: 2023-05-31 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663452536026861568 + stage: 3 + start: 2023-05-31 05:00:00 +- finsh: 2023-05-31 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663452536026861568 + stage: 6 + start: 2023-05-30 20:00:00 +- exclude: coct + finsh: 2023-05-31 05:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 6 + start: 2023-05-30 16:00:00 +- finsh: 2023-05-30 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663452536026861568 + stage: 4 + start: 2023-05-30 16:00:00 +- exclude: coct + finsh: 2023-05-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 4 + start: 2023-05-30 05:00:00 +- finsh: 2023-05-30 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663452536026861568 + stage: 3 + start: 2023-05-30 05:00:00 +- finsh: 2023-05-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663168528009117696 + stage: 6 + start: 2023-05-29 20:00:00 +- exclude: coct + finsh: 2023-05-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1663156249087574017 + stage: 6 + start: 2023-05-29 16:00:00 +- finsh: 2023-05-29 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663168528009117696 + stage: 4 + start: 2023-05-29 16:00:00 +- exclude: coct + finsh: 2023-05-30 00:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-29 16:00:00 +- finsh: 2023-05-29 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1663168528009117696 + stage: 3 + start: 2023-05-29 05:00:00 +- exclude: coct + finsh: 2023-05-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1662785206925893632 + stage: 4 + start: 2023-05-29 05:00:00 +- exclude: coct + finsh: 2023-05-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1662785206925893632 + stage: 5 + start: 2023-05-28 16:00:00 +- finsh: 2023-05-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662819309419110402 + stage: 5 + start: 2023-05-28 16:00:00 +- exclude: coct + finsh: 2023-05-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1662066427585613826 + stage: 2 + start: 2023-05-28 05:00:00 +- finsh: 2023-05-28 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662091022543859712 + stage: 2 + start: 2023-05-28 05:00:00 +- finsh: 2023-05-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662091022543859712 + stage: 5 + start: 2023-05-27 16:00:00 +- exclude: coct + finsh: 2023-05-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-27 16:00:00 +- finsh: 2023-05-27 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662091022543859712 + stage: 3 + start: 2023-05-27 05:00:00 +- exclude: coct + finsh: 2023-05-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1662066427585613826 + stage: 3 + start: 2023-05-27 05:00:00 +- finsh: 2023-05-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662091022543859712 + stage: 5 + start: 2023-05-26 22:00:00 +- exclude: coct + finsh: 2023-05-27 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-26 16:00:00 +- exclude: coct + finsh: 2023-05-26 16:00:00 + source: https://twitter.com/Eskom_SA/status/1662066427585613826 + stage: 4 + start: 2023-05-26 13:00:00 +- finsh: 2023-05-26 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1662091022543859712 + stage: 3 + start: 2023-05-26 05:00:00 +- exclude: coct + finsh: 2023-05-26 16:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 4 + start: 2023-05-26 05:00:00 +- finsh: 2023-05-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 5 + start: 2023-05-25 22:00:00 +- exclude: coct + finsh: 2023-05-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-25 16:00:00 +- exclude: coct + finsh: 2023-05-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 4 + start: 2023-05-25 05:00:00 +- finsh: 2023-05-25 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 3 + start: 2023-05-25 05:00:00 +- finsh: 2023-05-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 5 + start: 2023-05-24 20:00:00 +- exclude: coct + finsh: 2023-05-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-24 16:00:00 +- exclude: coct + finsh: 2023-05-24 16:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 4 + start: 2023-05-24 05:00:00 +- finsh: 2023-05-24 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 3 + start: 2023-05-24 05:00:00 +- finsh: 2023-05-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 5 + start: 2023-05-23 20:00:00 +- exclude: coct + finsh: 2023-05-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660938174791663616 + stage: 5 + start: 2023-05-23 16:00:00 +- finsh: 2023-05-23 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660963541325692929 + stage: 3 + start: 2023-05-23 05:00:00 +- exclude: coct + finsh: 2023-05-23 16:00:00 + source: https://twitter.com/Eskom_SA/status/1660697244536848393 + stage: 4 + start: 2023-05-23 05:00:00 +- finsh: 2023-05-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660712975986991122 + stage: 5 + start: 2023-05-22 20:00:00 +- exclude: coct + finsh: 2023-05-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660257998269210626/photo/1 + stage: 4 + start: 2023-05-22 16:00:00 +- finsh: 2023-05-22 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660320868239650816 + stage: 3 + start: 2023-05-22 16:00:00 +- exclude: coct + finsh: 2023-05-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1660257998269210626/photo/1 + stage: 3 + start: 2023-05-22 05:00:00 +- finsh: 2023-05-22 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660320868239650816 + stage: 2 + start: 2023-05-22 05:00:00 +- finsh: 2023-05-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1660320868239650816 + stage: 4 + start: 2023-05-21 16:00:00 +- exclude: coct + finsh: 2023-05-22 05:00:00 + source: https://twitter.com/Eskom_SA/status/1660257998269210626/photo/1 + stage: 4 + start: 2023-05-21 16:00:00 +- exclude: coct + finsh: 2023-05-21 16:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 1 + start: 2023-05-21 05:00:00 +- finsh: 2023-05-21 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 1 + start: 2023-05-21 05:00:00 +- exclude: coct + finsh: 2023-05-21 05:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 4 + start: 2023-05-20 16:00:00 +- finsh: 2023-05-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 4 + start: 2023-05-20 16:00:00 +- exclude: coct + finsh: 2023-05-20 16:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 3 + start: 2023-05-20 05:00:00 +- finsh: 2023-05-20 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 3 + start: 2023-05-20 05:00:00 +- finsh: 2023-05-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 5 + start: &id043 2023-05-19 22:00:00 +- finsh: *id043 + include: coct + source: https://twitter.com/CityofCT/status/1658846616894201866 + stage: 6 + start: 2023-05-19 20:00:00 +- exclude: coct + finsh: 2023-05-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 5 + start: 2023-05-19 16:00:00 +- exclude: coct + finsh: 2023-05-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 4 + start: 2023-05-19 05:00:00 +- finsh: 2023-05-19 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 3 + start: 2023-05-19 05:00:00 +- finsh: 2023-05-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 5 + start: 2023-05-18 22:00:00 +- exclude: coct + finsh: 2023-05-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1659143200437665792 + stage: 5 + start: 2023-05-18 16:00:00 +- exclude: coct + finsh: 2023-05-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 4 + start: 2023-05-18 05:00:00 +- finsh: 2023-05-18 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1659160844947554306 + stage: 3 + start: 2023-05-18 05:00:00 +- finsh: 2023-05-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658846616894201866 + stage: 6 + start: 2023-05-17 20:00:00 +- finsh: 2023-05-17 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658846616894201866 + stage: 4 + start: 2023-05-17 16:00:00 +- exclude: coct + finsh: 2023-05-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 6 + start: 2023-05-17 16:00:00 +- exclude: coct + finsh: 2023-05-17 16:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 4 + start: 2023-05-17 05:00:00 +- finsh: 2023-05-17 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658487390581964800 + stage: 3 + start: 2023-05-17 05:00:00 +- finsh: 2023-05-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658487390581964800 + stage: 6 + start: 2023-05-16 20:00:00 +- exclude: coct + finsh: 2023-05-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 6 + start: 2023-05-16 16:00:00 +- finsh: 2023-05-16 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658487390581964800 + stage: 4 + start: 2023-05-16 16:00:00 +- exclude: coct + finsh: 2023-05-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 4 + start: 2023-05-16 05:00:00 +- finsh: 2023-05-16 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658089742397853696 + stage: 3 + start: 2023-05-16 05:00:00 +- finsh: 2023-05-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658089742397853696 + stage: 6 + start: 2023-05-15 20:00:00 +- exclude: coct + finsh: 2023-05-16 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 6 + start: 2023-05-15 16:00:00 +- finsh: 2023-05-15 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658089742397853696 + stage: 4 + start: 2023-05-15 15:00:00 +- exclude: coct + finsh: 2023-05-15 15:00:00 + source: https://twitter.com/Eskom_SA/status/1658086187477659649 + stage: 4 + start: 2023-05-15 05:00:00 +- finsh: 2023-05-15 15:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1658089742397853696 + stage: 3 + start: 2023-05-15 05:00:00 +- finsh: 2023-05-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657714881485840384 + stage: 6 + start: 2023-05-14 16:00:00 +- exclude: coct + finsh: 2023-05-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 6 + start: &id045 2023-05-14 16:00:00 +- finsh: 2023-05-14 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657714881485840384 + stage: 3 + start: &id044 2023-05-14 14:00:00 +- exclude: coct + finsh: 2023-05-14 16:00:00 + source: https://twitter.com/Eskom_SA/status/1657681204747857921 + stage: 3 + start: 2023-05-14 12:00:00 +- finsh: *id044 + include: coct + source: https://twitter.com/CityofCT/status/1657645356971065345 + stage: 3 + start: 2023-05-14 05:00:00 +- exclude: coct + finsh: *id045 + source: https://twitter.com/Eskom_SA/status/1657628188489424896 + stage: 3 + start: 2023-05-14 05:00:00 +- exclude: coct + finsh: 2023-05-14 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657006128897597441 + stage: 5 + start: 2023-05-13 16:00:00 +- finsh: 2023-05-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657022851784769539 + stage: 5 + start: 2023-05-13 16:00:00 +- exclude: coct + finsh: 2023-05-13 16:00:00 + source: https://twitter.com/Eskom_SA/status/1657006128897597441 + stage: 3 + start: 2023-05-13 05:00:00 +- finsh: 2023-05-13 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657022851784769539 + stage: 3 + start: 2023-05-13 05:00:00 +- finsh: 2023-05-13 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657022851784769539 + stage: 6 + start: 2023-05-12 20:00:00 +- finsh: 2023-05-12 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1657022851784769539 + stage: 4 + start: 2023-05-12 16:00:00 +- exclude: coct + finsh: 2023-05-13 05:00:00 + source: https://twitter.com/Eskom_SA/status/1657006128897597441 + stage: 6 + start: &id047 2023-05-12 14:00:00 +- finsh: 2023-05-12 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302060894052353 + stage: 5 + start: 2023-05-12 05:00:00 +- finsh: 2023-05-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 6 + start: 2023-05-11 20:00:00 +- finsh: 2023-05-11 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 4 + start: 2023-05-11 16:00:00 +- finsh: 2023-05-11 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 5 + start: 2023-05-11 05:00:00 +- finsh: 2023-05-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 6 + start: 2023-05-10 22:00:00 +- finsh: 2023-05-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 4 + start: 2023-05-10 16:00:00 +- finsh: 2023-05-10 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1656302057500942336 + stage: 5 + start: 2023-05-10 05:00:00 +- finsh: 2023-05-10 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655812088449708033 + stage: 6 + start: 2023-05-09 22:00:00 +- finsh: 2023-05-09 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655812088449708033 + stage: 4 + start: 2023-05-09 16:00:00 +- finsh: 2023-05-09 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655812088449708033 + stage: 5 + start: 2023-05-09 05:00:00 +- finsh: 2023-05-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655584141704921089 + stage: 6 + start: 2023-05-08 20:00:00 +- finsh: 2023-05-08 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655584141704921089 + stage: 4 + start: &id046 2023-05-08 16:00:00 +- finsh: 2023-05-08 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655584141704921089 + stage: 5 + start: 2023-05-08 05:00:00 +- finsh: *id046 + include: coct + source: https://twitter.com/CityofCT/status/1654753124895059969 + stage: 3 + start: 2023-05-08 05:00:00 +- exclude: coct + finsh: *id047 + source: https://twitter.com/Eskom_SA/status/1655187364543643650 + stage: 6 + start: 2023-05-07 16:00:00 +- finsh: 2023-05-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655584141704921089 + stage: 6 + start: &id048 2023-05-07 16:00:00 +- finsh: 2023-05-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1655203659179851776 + stage: 5 + start: 2023-05-07 15:00:00 +- finsh: *id048 + include: coct + source: https://twitter.com/CityofCT/status/1654829406433542144 + stage: 5 + start: 2023-05-07 05:00:00 +- finsh: 2023-05-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1654829406433542144 + stage: 5 + start: 2023-05-06 16:00:00 +- exclude: coct + finsh: 2023-05-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1654814465508925442 + stage: 5 + start: 2023-05-06 13:00:00 +- finsh: 2023-05-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1654829406433542144 + stage: 4 + start: &id049 2023-05-06 13:00:00 +- finsh: *id049 + include: coct + source: https://twitter.com/CityofCT/status/1654753124895059969 + stage: 4 + start: 2023-05-06 05:00:00 +- exclude: coct + finsh: 2023-05-06 13:00:00 + source: https://twitter.com/Eskom_SA/status/1654650638750318592 + stage: 4 + start: 2023-05-06 05:00:00 +- finsh: *id049 + include: coct + source: https://twitter.com/CityofCT/status/1654490066763300866 + stage: 3 + start: 2023-05-06 05:00:00 +- finsh: 2023-05-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1654490066763300866 + stage: 5 + start: 2023-05-05 22:00:00 +- exclude: coct + finsh: 2023-05-06 05:00:00 + source: https://twitter.com/Eskom_SA/status/1654468777294086144 + stage: 5 + start: 2023-05-05 16:00:00 +- finsh: 2023-05-06 00:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 5 + start: 2023-05-05 16:00:00 +- finsh: 2023-05-05 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1654490066763300866 + stage: 3 + start: 2023-05-05 05:00:00 +- exclude: coct + finsh: 2023-05-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 4 + start: 2023-05-05 05:00:00 +- finsh: 2023-05-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 4 + start: 2023-05-05 05:00:00 +- finsh: 2023-05-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653783611500376065 + stage: 6 + start: 2023-05-04 22:00:00 +- finsh: 2023-05-04 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653783611500376065 + stage: 4 + start: 2023-05-04 16:00:00 +- exclude: coct + finsh: 2023-05-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 6 + start: 2023-05-04 16:00:00 +- finsh: 2023-05-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 6 + start: 2023-05-04 16:00:00 +- finsh: 2023-05-04 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653783611500376065 + stage: 3 + start: 2023-05-04 05:00:00 +- exclude: coct + finsh: 2023-05-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 4 + start: 2023-05-04 05:00:00 +- finsh: 2023-05-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 4 + start: 2023-05-04 05:00:00 +- finsh: 2023-05-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653783611500376065 + stage: 6 + start: 2023-05-03 20:00:00 +- finsh: 2023-05-03 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653783611500376065 + stage: 4 + start: 2023-05-03 16:00:00 +- exclude: coct + finsh: 2023-05-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1653750929785593856 + stage: 6 + start: 2023-05-03 16:00:00 +- exclude: coct + finsh: 2023-05-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653060078549843969 + stage: 4 + start: 2023-05-03 05:00:00 +- finsh: 2023-05-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653076062836850688 + stage: 3 + start: 2023-05-03 05:00:00 +- finsh: 2023-05-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653076062836850688 + stage: 6 + start: 2023-05-02 20:00:00 +- finsh: 2023-05-02 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653076062836850688 + stage: 4 + start: 2023-05-02 16:00:00 +- exclude: coct + finsh: 2023-05-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1653060078549843969 + stage: 6 + start: 2023-05-02 16:00:00 +- exclude: coct + finsh: 2023-05-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1653060078549843969 + stage: 4 + start: 2023-05-02 05:00:00 +- finsh: 2023-05-02 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653076062836850688 + stage: 3 + start: 2023-05-01 20:00:00 +- finsh: 2023-05-01 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1653076062836850688 + stage: 1 + start: 2023-05-01 16:00:00 +- exclude: coct + finsh: 2023-05-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1653060078549843969 + stage: 3 + start: 2023-05-01 16:00:00 +- exclude: coct + finsh: 2023-05-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1652660084340662273 + stage: 1 + start: 2023-05-01 05:00:00 +- finsh: 2023-05-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1652708867376132097 + stage: 3 + start: 2023-04-30 16:00:00 +- exclude: coct + finsh: 2023-05-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1652660084340662273 + stage: 3 + start: 2023-04-30 16:00:00 +- finsh: 2023-04-30 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190936146149377 + stage: 1 + start: 2023-04-30 05:00:00 +- exclude: coct + finsh: 2023-04-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 1 + start: 2023-04-30 05:00:00 +- finsh: 2023-04-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190936146149377 + stage: 4 + start: 2023-04-29 16:00:00 +- exclude: coct + finsh: 2023-04-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 4 + start: 2023-04-29 16:00:00 +- finsh: 2023-04-29 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190936146149377 + stage: 3 + start: 2023-04-29 05:00:00 +- exclude: coct + finsh: 2023-04-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 3 + start: 2023-04-29 05:00:00 +- finsh: 2023-04-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 4 + start: 2023-04-28 20:00:00 +- exclude: coct + finsh: 2023-04-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 4 + start: 2023-04-28 16:00:00 +- finsh: 2023-04-28 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 2 + start: 2023-04-28 05:00:00 +- exclude: coct + finsh: 2023-04-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 3 + start: 2023-04-28 05:00:00 +- finsh: 2023-04-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 4 + start: 2023-04-27 20:00:00 +- finsh: 2023-04-27 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 2 + start: 2023-04-27 16:00:00 +- exclude: coct + finsh: 2023-04-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 4 + start: 2023-04-27 16:00:00 +- finsh: 2023-04-27 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 1 + start: 2023-04-27 05:00:00 +- exclude: coct + finsh: 2023-04-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 2 + start: 2023-04-27 05:00:00 +- finsh: 2023-04-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 4 + start: 2023-04-26 20:00:00 +- exclude: coct + finsh: 2023-04-27 05:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 4 + start: 2023-04-26 16:00:00 +- finsh: 2023-04-26 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1651190931129761792 + stage: 2 + start: 2023-04-26 05:00:00 +- exclude: coct + finsh: 2023-04-26 16:00:00 + source: https://twitter.com/Eskom_SA/status/1651152876545232897 + stage: 3 + start: 2023-04-26 05:00:00 +- finsh: 2023-04-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650900189727670282 + stage: 6 + start: 2023-04-25 22:00:00 +- finsh: 2023-04-25 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650900189727670282 + stage: 4 + start: 2023-04-25 16:00:00 +- exclude: coct + finsh: 2023-04-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1650466861316812800 + stage: 6 + start: 2023-04-25 16:00:00 +- exclude: coct + finsh: 2023-04-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1650466861316812800 + stage: 4 + start: 2023-04-25 05:00:00 +- finsh: 2023-04-25 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650483583763587073 + stage: 3 + start: 2023-04-25 05:00:00 +- exclude: coct + finsh: 2023-04-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 5 + start: 2023-04-25 05:00:00 +- finsh: 2023-04-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650483583763587073 + stage: 6 + start: 2023-04-24 22:00:00 +- exclude: coct + finsh: 2023-04-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1650466861316812800 + stage: 6 + start: 2023-04-24 16:00:00 +- finsh: 2023-04-24 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650483583763587073 + stage: 4 + start: 2023-04-24 16:00:00 +- exclude: coct + finsh: 2023-04-24 16:00:00 + source: https://twitter.com/Eskom_SA/status/1650466861316812800 + stage: 3 + start: 2023-04-24 05:00:00 +- finsh: 2023-04-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650483583763587073 + stage: 2 + start: 2023-04-24 05:00:00 +- finsh: 2023-04-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1650138554922676226 + stage: 4 + start: 2023-04-23 16:00:00 +- exclude: coct + finsh: 2023-04-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1650116329918152709 + stage: 4 + start: 2023-04-23 16:00:00 +- exclude: coct + finsh: 2023-04-23 16:00:00 + source: https://twitter.com/Eskom_SA/status/1649417334723936259 + stage: 3 + start: 2023-04-23 05:00:00 +- finsh: 2023-04-23 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 3 + start: 2023-04-23 05:00:00 +- finsh: 2023-04-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 4 + start: 2023-04-22 16:00:00 +- exclude: coct + finsh: 2023-04-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1649417334723936259 + stage: 4 + start: 2023-04-22 16:00:00 +- finsh: 2023-04-22 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 3 + start: 2023-04-22 12:00:00 +- finsh: 2023-04-22 12:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 2 + start: 2023-04-22 05:00:00 +- exclude: coct + finsh: 2023-04-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1649417334723936259 + stage: 3 + start: 2023-04-22 05:00:00 +- finsh: 2023-04-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 6 + start: 2023-04-21 20:00:00 +- finsh: 2023-04-21 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1649434898078261250 + stage: 4 + start: 2023-04-21 16:00:00 +- exclude: coct + finsh: 2023-04-22 05:00:00 + source: https://twitter.com/Eskom_SA/status/1649417334723936259 + stage: 6 + start: &id050 2023-04-21 16:00:00 +- finsh: 2023-04-21 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 5 + start: &id051 2023-04-21 07:00:00 +- exclude: coct + finsh: *id050 + source: https://twitter.com/Eskom_SA/status/1649262062227300352 + stage: 6 + start: &id052 2023-04-21 06:00:00 +- finsh: *id051 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 4 + start: 2023-04-21 05:00:00 +- exclude: coct + finsh: *id052 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 5 + start: 2023-04-21 05:00:00 +- finsh: 2023-04-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 6 + start: 2023-04-20 20:00:00 +- exclude: coct + finsh: 2023-04-21 05:00:00 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 6 + start: 2023-04-20 16:00:00 +- finsh: 2023-04-20 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 4 + start: &id053 2023-04-20 05:00:00 +- exclude: coct + finsh: 2023-04-20 16:00:00 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 5 + start: 2023-04-20 05:00:00 +- finsh: *id053 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 6 + start: 2023-04-19 22:00:00 +- finsh: 2023-04-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 6 + start: &id054 2023-04-19 20:00:00 +- exclude: coct + finsh: 2023-04-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 6 + start: 2023-04-19 16:00:00 +- finsh: *id054 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 5 + start: 2023-04-19 06:00:00 +- finsh: 2023-04-19 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1648702612206759939 + stage: 4 + start: &id055 2023-04-19 05:00:00 +- exclude: coct + finsh: 2023-04-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1648691363012046848 + stage: 5 + start: 2023-04-19 05:00:00 +- finsh: *id055 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 6 + start: 2023-04-18 22:00:00 +- finsh: 2023-04-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647953975864356864 + stage: 6 + start: &id056 2023-04-18 20:00:00 +- exclude: coct + finsh: 2023-04-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1647934364607557634 + stage: 6 + start: 2023-04-18 16:00:00 +- finsh: *id056 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 5 + start: 2023-04-18 06:00:00 +- exclude: coct + finsh: 2023-04-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1647934364607557634 + stage: 5 + start: 2023-04-18 05:00:00 +- finsh: 2023-04-18 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647953975864356864 + stage: 4 + start: &id057 2023-04-18 05:00:00 +- finsh: *id057 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 6 + start: 2023-04-17 22:00:00 +- finsh: 2023-04-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647953975864356864 + stage: 6 + start: 2023-04-17 20:00:00 +- finsh: 2023-04-17 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647953975864356864 + stage: 4 + start: 2023-04-17 16:00:00 +- exclude: coct + finsh: 2023-04-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1647934364607557634 + stage: 6 + start: &id059 2023-04-17 14:00:00 +- finsh: 2023-04-17 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647953975864356864 + stage: 5 + start: &id058 2023-04-17 06:00:00 +- finsh: *id058 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 5 + start: 2023-04-17 05:00:00 +- exclude: coct + finsh: *id059 + source: https://twitter.com/Eskom_SA/status/1647577920251080704 + stage: 6 + start: 2023-04-16 14:00:00 +- finsh: 2023-04-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647585842620186624 + stage: 6 + start: 2023-04-16 05:00:00 +- finsh: 2023-04-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647223716978257922 + stage: 6 + start: 2023-04-15 20:00:00 +- exclude: coct + finsh: *id059 + source: https://twitter.com/Eskom_SA/status/1647219673681870850 + stage: 6 + start: 2023-04-15 16:00:00 +- exclude: coct + finsh: 2023-04-15 16:00:00 + source: https://twitter.com/Eskom_SA/status/1646849219100041218 + stage: 5 + start: 2023-04-15 05:00:00 +- finsh: 2023-04-15 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1647223716978257922 + stage: 5 + start: 2023-04-15 05:00:00 +- finsh: 2023-04-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646874069525037056 + stage: 6 + start: 2023-04-14 22:00:00 +- finsh: 2023-04-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646102644362977282 + stage: 5 + start: 2023-04-14 22:00:00 +- finsh: 2023-04-14 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646874069525037056 + stage: 4 + start: 2023-04-14 16:00:00 +- finsh: 2023-04-14 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646874069525037056 + stage: 5 + start: &id060 2023-04-14 06:00:00 +- finsh: *id060 + include: coct + source: https://twitter.com/CityofCT/status/1646481643715141635 + stage: 5 + start: 2023-04-14 05:00:00 +- finsh: *id060 + include: coct + source: https://twitter.com/CityofCT/status/1646102644362977282 + stage: 4 + start: 2023-04-14 05:00:00 +- exclude: coct + finsh: 2023-04-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1646849219100041218 + stage: 6 + start: &id062 2023-04-14 00:00:00 +- finsh: 2023-04-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646481643715141635 + stage: 6 + start: 2023-04-13 22:00:00 +- finsh: 2023-04-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646102644362977282 + stage: 5 + start: 2023-04-13 22:00:00 +- finsh: 2023-04-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646481643715141635 + stage: 4 + start: 2023-04-13 16:00:00 +- finsh: 2023-04-13 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646481643715141635 + stage: 5 + start: &id061 2023-04-13 06:00:00 +- finsh: *id061 + include: coct + source: https://twitter.com/CityofCT/status/1646102644362977282 + stage: 4 + start: 2023-04-13 05:00:00 +- finsh: 2023-04-13 06:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646352518853586945 + stage: 6 + start: &id063 2023-04-13 04:00:00 +- exclude: coct + finsh: *id062 + source: https://twitter.com/Eskom_SA/status/1646257255266787330 + stage: 6 + start: &id064 2023-04-12 23:00:00 +- finsh: *id063 + include: coct + source: https://twitter.com/CityofCT/status/1646127260875870209 + stage: 6 + start: 2023-04-12 22:00:00 +- finsh: 2023-04-12 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646102644362977282 + stage: 3 + start: &id065 2023-04-12 18:00:00 +- exclude: coct + finsh: *id064 + source: https://twitter.com/Eskom_SA/status/1646138476235030530 + stage: 6 + start: 2023-04-12 16:00:00 +- finsh: 2023-04-12 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1646127260875870209 + stage: 4 + start: 2023-04-12 05:00:00 +- exclude: coct + finsh: 2023-04-12 16:00:00 + source: https://twitter.com/Eskom_SA/status/1646138476235030530 + stage: 5 + start: 2023-04-12 05:00:00 +- finsh: *id065 + include: coct + source: https://twitter.com/CityofCT/status/1646019299738279937 + stage: 4 + start: 2023-04-12 05:00:00 +- finsh: 2023-04-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645444359272235010 + stage: 5 + start: 2023-04-11 22:00:00 +- exclude: coct + finsh: 2023-04-12 05:00:00 + source: https://twitter.com/Eskom_SA/status/1645423209632727042 + stage: 5 + start: 2023-04-11 16:00:00 +- finsh: 2023-04-11 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645444359272235010 + stage: 4 + start: 2023-04-11 16:00:00 +- finsh: 2023-04-11 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645444359272235010 + stage: 2 + start: 2023-04-11 05:00:00 +- finsh: 2023-04-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645444359272235010 + stage: 3 + start: 2023-04-10 22:00:00 +- exclude: coct + finsh: 2023-04-11 16:00:00 + source: https://twitter.com/Eskom_SA/status/1645423209632727042 + stage: 3 + start: 2023-04-10 17:00:00 +- finsh: 2023-04-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645444359272235010 + stage: 1 + start: &id066 2023-04-10 17:00:00 +- finsh: *id066 + include: coct + source: https://twitter.com/CityofCT/status/1645066898109767683 + stage: 1 + start: 2023-04-10 16:00:00 +- exclude: coct + finsh: 2023-04-10 17:00:00 + source: https://twitter.com/Eskom_SA/status/1645044545434918914 + stage: 1 + start: 2023-04-10 16:00:00 +- exclude: coct + finsh: 2023-04-10 05:00:00 + source: https://twitter.com/Eskom_SA/status/1645044545434918914 + stage: 2 + start: &id067 2023-04-09 17:00:00 +- finsh: 2023-04-10 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1645066898109767683 + stage: 2 + start: &id068 2023-04-09 17:00:00 +- exclude: coct + finsh: *id067 + source: https://twitter.com/Eskom_SA/status/1643610532090355717 + stage: 3 + start: 2023-04-09 16:00:00 +- finsh: *id068 + include: coct + source: https://twitter.com/CityofCT/status/1644659834128683009 + stage: 3 + start: 2023-04-09 16:00:00 +- finsh: 2023-04-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1644670816842395648 + stage: 2 + start: &id069 2023-04-08 17:00:00 +- exclude: coct + finsh: 2023-04-09 05:00:00 + source: https://twitter.com/Eskom_SA/status/1644670597945782307 + stage: 2 + start: &id070 2023-04-08 17:00:00 +- finsh: *id069 + include: coct + source: https://twitter.com/CityofCT/status/1643941036585021440 + stage: 3 + start: 2023-04-08 16:00:00 +- exclude: coct + finsh: *id070 + source: https://twitter.com/Eskom_SA/status/1643610532090355717 + stage: 3 + start: 2023-04-08 16:00:00 +- exclude: coct + finsh: 2023-04-08 11:00:00 + source: https://twitter.com/Eskom_SA/status/1644630099445071872 + stage: 1 + start: 2023-04-08 05:00:00 +- finsh: 2023-04-08 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643635940559134720 + stage: 1 + start: 2023-04-08 05:00:00 +- finsh: 2023-04-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643941034034954244 + stage: 2 + start: 2023-04-07 22:00:00 +- exclude: coct + finsh: 2023-04-08 05:00:00 + source: https://twitter.com/Eskom_SA/status/1643610532090355717 + stage: 2 + start: 2023-04-07 16:00:00 +- finsh: 2023-04-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643941034034954244 + stage: 1 + start: 2023-04-07 16:00:00 +- exclude: coct + finsh: 2023-04-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1643610532090355717 + stage: 1 + start: 2023-04-07 05:00:00 +- finsh: 2023-04-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643941034034954244 + stage: 4 + start: 2023-04-06 22:00:00 +- finsh: 2023-04-06 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643941034034954244 + stage: 2 + start: 2023-04-06 16:00:00 +- finsh: 2023-04-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643941034034954244 + stage: 3 + start: 2023-04-06 05:00:00 +- finsh: 2023-04-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643272227905847300 + stage: 2 + start: 2023-04-06 05:00:00 +- finsh: 2023-04-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643635940559134720 + stage: 4 + start: 2023-04-05 22:00:00 +- exclude: coct + finsh: 2023-04-07 05:00:00 + source: https://twitter.com/Eskom_SA/status/1643610532090355717 + stage: 4 + start: 2023-04-05 16:00:00 +- finsh: 2023-04-05 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643635940559134720 + stage: 3 + start: 2023-04-05 16:00:00 +- finsh: 2023-04-05 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643272227905847300 + stage: 2 + start: 2023-04-05 05:00:00 +- exclude: coct + finsh: 2023-04-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 3 + start: 2023-04-05 05:00:00 +- finsh: 2023-04-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643272227905847300 + stage: 4 + start: 2023-04-04 22:00:00 +- finsh: 2023-04-04 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1643272227905847300 + stage: 3 + start: 2023-04-04 16:00:00 +- exclude: coct + finsh: 2023-04-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 4 + start: 2023-04-04 16:00:00 +- exclude: coct + finsh: 2023-04-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 3 + start: 2023-04-04 05:00:00 +- finsh: 2023-04-04 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642593062047174656 + stage: 2 + start: 2023-04-04 05:00:00 +- finsh: 2023-04-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642593062047174656 + stage: 4 + start: 2023-04-03 22:00:00 +- exclude: coct + finsh: 2023-04-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 4 + start: 2023-04-03 16:00:00 +- finsh: 2023-04-03 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642593062047174656 + stage: 3 + start: 2023-04-03 16:00:00 +- exclude: coct + finsh: 2023-04-03 16:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 3 + start: 2023-04-03 05:00:00 +- finsh: 2023-04-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642593062047174656 + stage: 2 + start: 2023-04-03 05:00:00 +- exclude: coct + finsh: 2023-04-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 4 + start: 2023-04-02 16:00:00 +- exclude: coct + finsh: 2023-04-03 00:00:00 + source: https://twitter.com/Eskom_SA/status/1641112378812035073 + stage: 2 + start: 2023-04-02 16:00:00 +- exclude: coct + finsh: 2023-04-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1642540773588516867 + stage: 3 + start: 2023-04-02 05:00:00 +- finsh: 2023-04-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642593062047174656 + stage: 4 + start: &id071 2023-04-02 05:00:00 +- exclude: coct + finsh: 2023-04-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1641112378812035073 + stage: 1 + start: 2023-04-02 05:00:00 +- finsh: *id071 + include: coct + source: https://twitter.com/CityofCT/status/1642538310353534980 + stage: 4 + start: 2023-04-01 16:00:00 +- finsh: 2023-04-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641068884370378752 + stage: 2 + start: 2023-04-01 16:00:00 +- finsh: 2023-04-01 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1642538310353534980 + stage: 3 + start: 2023-04-01 05:00:00 +- exclude: coct + finsh: 2023-04-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1641112378812035073 + stage: 2 + start: 2023-04-01 05:00:00 +- finsh: 2023-04-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641068884370378752 + stage: 3 + start: 2023-04-01 00:00:00 +- finsh: 2023-04-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641802363781406721 + stage: 4 + start: 2023-03-31 22:00:00 +- exclude: coct + finsh: 2023-04-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1641886539499143169 + stage: 4 + start: &id072 2023-03-31 21:33:00 +- finsh: 2023-03-31 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641068884370378752 + stage: 1 + start: 2023-03-31 16:00:00 +- finsh: 2023-03-31 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641802363781406721 + stage: 2 + start: &id073 2023-03-31 14:00:00 +- exclude: coct + finsh: *id072 + source: https://twitter.com/Eskom_SA/status/1641777135265234949 + stage: 4 + start: 2023-03-31 13:11:00 +- exclude: coct + finsh: 2023-03-31 16:00:00 + source: https://twitter.com/Eskom_SA/status/1641764668065579010 + stage: 3 + start: 2023-03-31 05:00:00 +- finsh: *id073 + include: coct + source: https://twitter.com/CityofCT/status/1641441808222945287 + stage: 1 + start: 2023-03-31 05:00:00 +- finsh: 2023-03-31 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641441808222945287 + stage: 4 + start: 2023-03-30 22:00:00 +- finsh: 2023-03-30 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641441808222945287 + stage: 2 + start: 2023-03-30 16:00:00 +- exclude: coct + finsh: 2023-03-31 05:00:00 + source: https://twitter.com/Eskom_SA/status/1641112378812035073 + stage: 4 + start: 2023-03-30 16:00:00 +- finsh: 2023-03-30 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641120462850732032 + stage: 3 + start: 2023-03-29 22:00:00 +- finsh: 2023-03-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640717582989950976 + stage: 2 + start: 2023-03-29 22:00:00 +- exclude: coct + finsh: 2023-03-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1641112378812035073 + stage: 3 + start: &id074 2023-03-29 18:11:00 +- finsh: 2023-03-29 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641120462850732032 + stage: 1 + start: 2023-03-29 18:00:00 +- exclude: coct + finsh: *id074 + source: https://twitter.com/Eskom_SA/status/1641057533447008257 + stage: 2 + start: 2023-03-29 16:00:00 +- finsh: 2023-03-29 18:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641068881216249856 + stage: 2 + start: 2023-03-29 16:00:00 +- exclude: coct + finsh: 2023-03-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1641057533447008257 + stage: 1 + start: 2023-03-29 05:00:00 +- finsh: 2023-03-29 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1641068881216249856 + stage: 1 + start: 2023-03-29 05:00:00 +- finsh: 2023-03-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640717578208423936 + stage: 2 + start: 2023-03-28 22:00:00 +- exclude: coct + finsh: 2023-03-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1639998087786557440 + stage: 2 + start: 2023-03-28 16:00:00 +- finsh: 2023-03-28 18:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640717578208423936 + stage: 2 + start: 2023-03-28 16:00:00 +- exclude: coct + finsh: 2023-03-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1639998087786557440 + stage: 1 + start: 2023-03-28 05:00:00 +- finsh: 2023-03-28 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640717578208423936 + stage: 1 + start: 2023-03-28 05:00:00 +- finsh: 2023-03-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640431769533947908 + stage: 3 + start: &id075 2023-03-27 21:00:00 +- finsh: *id075 + include: coct + source: https://twitter.com/CityofCT/status/1640312874781245441 + stage: 1 + start: &id076 2023-03-27 18:00:00 +- exclude: coct + finsh: 2023-03-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1639998087786557440 + stage: 3 + start: 2023-03-27 16:00:00 +- finsh: 2023-03-27 18:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640312874781245441 + stage: 3 + start: 2023-03-27 16:00:00 +- finsh: *id076 + include: coct + source: https://twitter.com/CityofCT/status/1640010246801219586 + stage: 3 + start: 2023-03-27 16:00:00 +- exclude: coct + finsh: 2023-03-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1639998087786557440 + stage: 2 + start: 2023-03-27 05:00:00 +- finsh: 2023-03-27 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640312874781245441 + stage: 2 + start: 2023-03-27 05:00:00 +- exclude: coct + finsh: 2023-03-27 05:00:00 + source: https://twitter.com/Eskom_SA/status/1639998087786557440 + stage: 1 + start: &id077 2023-03-26 17:00:00 +- finsh: 2023-03-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1640010246801219586 + stage: 1 + start: 2023-03-26 16:00:00 +- exclude: coct + finsh: *id077 + source: https://twitter.com/Eskom_SA/status/1639250916103553026 + stage: 1 + start: 2023-03-26 15:00:00 +- finsh: 2023-03-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1639286182419865608 + stage: 2 + start: 2023-03-25 16:00:00 +- exclude: coct + finsh: 2023-03-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1639250916103553026 + stage: 2 + start: 2023-03-25 15:00:00 +- exclude: coct + finsh: 2023-03-25 15:00:00 + source: https://twitter.com/Eskom_SA/status/1639250916103553026 + stage: 1 + start: 2023-03-25 05:00:00 +- finsh: 2023-03-25 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1639286182419865608 + stage: 1 + start: 2023-03-25 05:00:00 +- exclude: coct + finsh: 2023-03-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1639250916103553026 + stage: 2 + start: &id078 2023-03-24 15:00:00 +- finsh: 2023-03-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1639158274129002496 + stage: 2 + start: 2023-03-24 08:00:00 +- exclude: coct + finsh: *id078 + source: https://twitter.com/Eskom_SA/status/1638145199309303808 + stage: 2 + start: 2023-03-24 05:00:00 +- finsh: 2023-03-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1639286182419865608 + stage: 2 + start: &id079 2023-03-24 02:00:00 +- finsh: *id079 + include: coct + source: https://twitter.com/CityofCT/status/1638944670272180231 + stage: 3 + start: 2023-03-23 22:00:00 +- exclude: coct + finsh: 2023-03-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1638145199309303808 + stage: 3 + start: 2023-03-23 16:00:00 +- exclude: coct + finsh: 2023-03-23 16:00:00 + source: https://twitter.com/Eskom_SA/status/1638145199309303808 + stage: 2 + start: 2023-03-23 05:00:00 +- finsh: 2023-03-23 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1638944670272180231 + stage: 1 + start: 2023-03-23 05:00:00 +- finsh: 2023-03-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1638171559180537857 + stage: 3 + start: 2023-03-22 22:00:00 +- exclude: coct + finsh: 2023-03-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1638145199309303808 + stage: 3 + start: 2023-03-22 16:00:00 +- finsh: 2023-03-22 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1638171559180537857 + stage: 2 + start: 2023-03-22 16:00:00 +- exclude: coct + finsh: 2023-03-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1638145199309303808 + stage: 2 + start: &id080 2023-03-22 05:00:00 +- finsh: 2023-03-22 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1638171559180537857 + stage: 1 + start: 2023-03-22 05:00:00 +- finsh: 2023-03-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1637755465932193793 + stage: 2 + start: 2023-03-21 22:00:00 +- finsh: 2023-03-21 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1637755465932193793 + stage: 1 + start: 2023-03-21 16:00:00 +- exclude: coct + finsh: *id080 + source: https://twitter.com/Eskom_SA/status/1637734509075472384 + stage: 2 + start: 2023-03-21 16:00:00 +- exclude: coct + finsh: 2023-03-22 00:00:00 + source: https://twitter.com/Eskom_SA/status/1636742665009000448 + stage: 2 + start: 2023-03-21 16:00:00 +- finsh: 2023-03-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1637466317451083780 + stage: 2 + start: 2023-03-20 22:00:00 +- finsh: 2023-03-20 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1637466317451083780 + stage: 1 + start: 2023-03-20 16:00:00 +- exclude: coct + finsh: 2023-03-21 16:00:00 + source: https://twitter.com/Eskom_SA/status/1637450951043829760 + stage: 2 + start: 2023-03-20 16:00:00 +- exclude: coct + finsh: 2023-03-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1637450951043829760 + stage: 2 + start: 2023-03-19 16:00:00 +- finsh: 2023-03-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636775114233479168 + stage: 1 + start: 2023-03-19 16:00:00 +- exclude: coct + finsh: 2023-03-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1637450951043829760 + stage: 1 + start: 2023-03-19 05:00:00 +- finsh: 2023-03-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636775114233479168 + stage: 2 + start: 2023-03-18 16:00:00 +- exclude: coct + finsh: 2023-03-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1637150152690368516 + stage: 1 + start: 2023-03-18 15:00:00 +- finsh: 2023-03-18 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636775114233479168 + stage: 1 + start: 2023-03-18 05:00:00 +- exclude: coct + finsh: 2023-03-18 15:00:00 + source: https://twitter.com/Eskom_SA/status/1636742665009000448 + stage: 1 + start: 2023-03-18 05:00:00 +- finsh: 2023-03-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636718804142116865 + stage: 2 + start: 2023-03-17 22:00:00 +- finsh: 2023-03-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 3 + start: 2023-03-17 22:00:00 +- exclude: coct + finsh: 2023-03-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1636742665009000448 + stage: 2 + start: &id081 2023-03-17 17:00:00 +- exclude: coct + finsh: *id081 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 5 + start: 2023-03-17 16:00:00 +- finsh: 2023-03-17 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636718804142116865 + stage: 1 + start: &id082 2023-03-17 15:00:00 +- exclude: coct + finsh: *id081 + source: https://twitter.com/Eskom_SA/status/1636669047017287680 + stage: 2 + start: &id084 2023-03-17 12:00:00 +- finsh: *id082 + include: coct + source: https://twitter.com/CityofCT/status/1636675055844306944 + stage: 1 + start: &id083 2023-03-17 12:00:00 +- finsh: *id083 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 2 + start: 2023-03-17 05:00:00 +- exclude: coct + finsh: *id084 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 4 + start: 2023-03-17 05:00:00 +- finsh: 2023-03-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 3 + start: 2023-03-16 22:00:00 +- exclude: coct + finsh: 2023-03-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 5 + start: 2023-03-16 16:00:00 +- finsh: 2023-03-16 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 2 + start: 2023-03-16 05:00:00 +- exclude: coct + finsh: 2023-03-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 4 + start: 2023-03-16 05:00:00 +- finsh: 2023-03-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 3 + start: 2023-03-15 22:00:00 +- finsh: 2023-03-15 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1636017301572014086 + stage: 2 + start: &id085 2023-03-15 16:00:00 +- exclude: coct + finsh: 2023-03-16 05:00:00 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 5 + start: 2023-03-15 16:00:00 +- exclude: coct + finsh: *id084 + source: https://twitter.com/Eskom_SA/status/1635994491365597190 + stage: 3 + start: 2023-03-15 15:00:00 +- finsh: *id085 + include: coct + source: https://twitter.com/CityofCT/status/1635276799914684418 + stage: 3 + start: 2023-03-15 05:00:00 +- exclude: coct + finsh: 2023-03-15 16:00:00 + source: https://twitter.com/Eskom_SA/status/1635610777649577984 + stage: 3 + start: &id086 2023-03-15 05:00:00 +- finsh: 2023-03-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1635276799914684418 + stage: 4 + start: 2023-03-14 22:00:00 +- exclude: coct + finsh: 2023-03-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1635610777649577984 + stage: 4 + start: 2023-03-14 14:00:00 +- finsh: 2023-03-14 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1635276799914684418 + stage: 3 + start: 2023-03-14 05:00:00 +- finsh: 2023-03-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1635276799914684418 + stage: 4 + start: 2023-03-13 22:00:00 +- exclude: coct + finsh: 2023-03-14 00:00:00 + source: https://twitter.com/Eskom_SA/status/1634157466219937801 + stage: 4 + start: 2023-03-13 16:00:00 +- exclude: coct + finsh: *id086 + source: https://twitter.com/Eskom_SA/status/1635237899502501888 + stage: 4 + start: 2023-03-13 13:00:00 +- finsh: 2023-03-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1635276799914684418 + stage: 3 + start: 2023-03-13 05:00:00 +- finsh: 2023-03-13 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1634171982253027328 + stage: 2 + start: 2023-03-13 05:00:00 +- finsh: 2023-03-13 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1634906556285308928 + stage: 4 + start: 2023-03-12 16:00:00 +- exclude: coct + finsh: 2023-03-13 16:00:00 + source: https://twitter.com/Eskom_SA/status/1634895194477965312 + stage: 4 + start: 2023-03-12 16:00:00 +- finsh: 2023-03-12 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1634906556285308928 + stage: 1 + start: 2023-03-12 05:00:00 +- exclude: coct + finsh: 2023-03-12 16:00:00 + source: https://twitter.com/Eskom_SA/status/1634157466219937801 + stage: 1 + start: 2023-03-12 05:00:00 +- finsh: 2023-03-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1634171982253027328 + stage: 3 + start: 2023-03-11 05:00:00 +- exclude: coct + finsh: 2023-03-12 05:00:00 + source: https://twitter.com/Eskom_SA/status/1634157466219937801 + stage: 3 + start: 2023-03-11 05:00:00 +- exclude: coct + finsh: 2023-03-11 16:00:00 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 3 + start: 2023-03-11 05:00:00 +- finsh: 2023-03-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 4 + start: 2023-03-10 22:00:00 +- exclude: coct + finsh: 2023-03-11 05:00:00 + source: https://twitter.com/Eskom_SA/status/1634157466219937801 + stage: 4 + start: &id087 2023-03-10 20:00:00 +- exclude: coct + finsh: *id087 + source: https://twitter.com/Eskom_SA/status/1632800975101521921 + stage: 5 + start: 2023-03-10 19:00:00 +- finsh: 2023-03-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 3 + start: 2023-03-10 05:00:00 +- exclude: coct + finsh: 2023-03-10 16:00:00 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 3 + start: 2023-03-10 05:00:00 +- exclude: coct + finsh: 2023-03-10 05:00:00 + source: https://twitter.com/Eskom_SA/status/1632800975101521921 + stage: 5 + start: 2023-03-09 19:00:00 +- finsh: 2023-03-10 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 4 + start: 2023-03-09 16:00:00 +- finsh: 2023-03-09 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 3 + start: &id088 2023-03-09 05:00:00 +- exclude: coct + finsh: 2023-03-09 16:00:00 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 3 + start: 2023-03-09 05:00:00 +- finsh: 2023-03-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 4 + start: 2023-03-08 16:00:00 +- finsh: *id088 + include: coct + source: https://twitter.com/CityofCT/status/1632618281898000384 + stage: 4 + start: 2023-03-08 16:00:00 +- finsh: 2023-03-08 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1633424847626817537 + stage: 3 + start: 2023-03-08 05:00:00 +- exclude: coct + finsh: *id087 + source: https://twitter.com/Eskom_SA/status/1633406304411688961 + stage: 4 + start: 2023-03-08 05:00:00 +- exclude: coct + finsh: 2023-03-08 16:00:00 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 3 + start: 2023-03-08 05:00:00 +- finsh: 2023-03-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632825722367537154 + stage: 5 + start: &id089 2023-03-07 22:00:00 +- exclude: coct + finsh: 2023-03-08 05:00:00 + source: https://twitter.com/Eskom_SA/status/1632800975101521921 + stage: 5 + start: 2023-03-07 19:00:00 +- finsh: 2023-03-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632825722367537154 + stage: 4 + start: 2023-03-07 16:00:00 +- finsh: *id089 + include: coct + source: https://twitter.com/CityofCT/status/1632618281898000384 + stage: 4 + start: 2023-03-07 16:00:00 +- exclude: coct + finsh: 2023-03-07 19:00:00 + source: https://twitter.com/Eskom_SA/status/1632800975101521921 + stage: 4 + start: 2023-03-07 05:00:00 +- finsh: 2023-03-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632825722367537154 + stage: 3 + start: 2023-03-07 05:00:00 +- exclude: coct + finsh: 2023-03-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 3 + start: 2023-03-07 05:00:00 +- finsh: 2023-03-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632825722367537154 + stage: 5 + start: 2023-03-06 22:00:00 +- exclude: coct + finsh: 2023-03-07 05:00:00 + source: https://twitter.com/Eskom_SA/status/1632800975101521921 + stage: 5 + start: &id090 2023-03-06 19:00:00 +- finsh: 2023-03-06 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632825722367537154 + stage: 4 + start: 2023-03-06 16:00:00 +- exclude: coct + finsh: *id090 + source: https://twitter.com/Eskom_SA/status/1632713597926223873 + stage: 5 + start: &id091 2023-03-06 16:00:00 +- finsh: 2023-03-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632725509082697729 + stage: 3 + start: 2023-03-06 05:00:00 +- exclude: coct + finsh: *id091 + source: https://twitter.com/Eskom_SA/status/1632355494672191489 + stage: 4 + start: 2023-03-05 16:00:00 +- finsh: 2023-03-06 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632050813882302464 + stage: 3 + start: 2023-03-05 16:00:00 +- exclude: coct + finsh: 2023-03-05 16:00:00 + source: https://twitter.com/Eskom_SA/status/1631993806517051393 + stage: 2 + start: 2023-03-05 05:00:00 +- finsh: 2023-03-05 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632050813882302464 + stage: 2 + start: 2023-03-05 05:00:00 +- exclude: coct + finsh: 2023-03-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1631993806517051393 + stage: 4 + start: 2023-03-04 16:00:00 +- finsh: 2023-03-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632050813882302464 + stage: 4 + start: 2023-03-04 16:00:00 +- exclude: coct + finsh: 2023-03-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1631293020107595781 + stage: 3 + start: 2023-03-04 05:00:00 +- finsh: 2023-03-04 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1632050813882302464 + stage: 3 + start: 2023-03-04 05:00:00 +- finsh: 2023-03-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1631301481189068808 + stage: 4 + start: 2023-03-03 16:00:00 +- finsh: 2023-03-03 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1631301481189068808 + stage: 3 + start: 2023-03-03 05:00:00 +- exclude: coct + finsh: 2023-03-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1631293020107595781 + stage: 4 + start: 2023-03-03 05:00:00 +- finsh: 2023-03-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1631301481189068808 + stage: 5 + start: 2023-03-02 16:00:00 +- exclude: coct + finsh: 2023-03-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1631293020107595781 + stage: 5 + start: 2023-03-02 16:00:00 +- exclude: coct + finsh: 2023-03-02 16:00:00 + source: https://twitter.com/Eskom_SA/status/1631293020107595781 + stage: 4 + start: 2023-03-02 05:00:00 +- finsh: 2023-03-02 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1630581235947798528 + stage: 3 + start: 2023-03-02 05:00:00 +- finsh: 2023-03-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629904816313966594 + stage: 4 + start: 2023-03-01 19:00:00 +- exclude: coct + finsh: 2023-03-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1630546800636510210 + stage: 5 + start: 2023-03-01 16:00:00 +- finsh: 2023-03-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1630581235947798528 + stage: 5 + start: 2023-03-01 16:00:00 +- finsh: 2023-03-01 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1630581235947798528 + stage: 3 + start: 2023-03-01 05:00:00 +- exclude: coct + finsh: 2023-03-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1630546800636510210 + stage: 4 + start: 2023-03-01 00:00:00 +- finsh: 2023-03-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1630581235947798528 + stage: 4 + start: &id092 2023-03-01 00:00:00 +- finsh: *id092 + include: coct + source: https://twitter.com/CityofCT/status/1630581235947798528 + stage: 4 + start: 2023-02-28 16:00:00 +- exclude: coct + finsh: 2023-03-01 16:00:00 + source: https://twitter.com/Eskom_SA/status/1630546800636510210 + stage: 4 + start: 2023-02-28 16:00:00 +- exclude: coct + finsh: 2023-02-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1630546800636510210 + stage: 3 + start: 2023-02-28 05:00:00 +- finsh: 2023-02-28 19:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629904816313966594 + stage: 2 + start: 2023-02-28 05:00:00 +- finsh: 2023-02-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629904816313966594 + stage: 5 + start: 2023-02-27 19:00:00 +- exclude: coct + finsh: 2023-02-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1629896464980754432 + stage: 5 + start: 2023-02-27 16:00:00 +- finsh: 2023-02-27 19:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629904816313966594 + stage: 3 + start: 2023-02-27 05:00:00 +- finsh: 2023-02-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629904816313966594 + stage: 4 + start: &id093 2023-02-26 19:00:00 +- exclude: coct + finsh: 2023-02-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1629896464980754432 + stage: 4 + start: &id095 2023-02-26 19:00:00 +- finsh: *id093 + include: coct + source: https://twitter.com/CityofCT/status/1629866676266082312 + stage: 4 + start: &id094 2023-02-26 17:00:00 +- finsh: *id094 + include: coct + source: https://twitter.com/CityofCT/status/1629755502308540417 + stage: 4 + start: &id097 2023-02-26 10:09:00 +- exclude: coct + finsh: *id095 + source: https://twitter.com/Eskom_SA/status/1629737381354938369 + stage: 4 + start: &id096 2023-02-26 09:00:00 +- exclude: coct + finsh: *id096 + source: https://twitter.com/Eskom_SA/status/1629504022150348804 + stage: 5 + start: 2023-02-26 05:00:00 +- finsh: *id097 + include: coct + source: https://twitter.com/CityofCT/status/1629504970515947520 + stage: 5 + start: 2023-02-26 05:00:00 +- finsh: 2023-02-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1629504970515947520 + stage: 6 + start: &id098 2023-02-25 17:00:00 +- exclude: coct + finsh: 2023-02-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1629504022150348804 + stage: 6 + start: &id101 2023-02-25 00:00:00 +- finsh: *id098 + include: coct + source: https://twitter.com/CityofCT/status/1629142231943729154 + stage: 6 + start: &id099 2023-02-24 19:00:00 +- finsh: *id099 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 6 + start: 2023-02-24 16:00:00 +- finsh: 2023-02-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 5 + start: 2023-02-24 05:00:00 +- finsh: 2023-02-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 6 + start: 2023-02-23 16:00:00 +- finsh: 2023-02-23 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 5 + start: 2023-02-23 05:00:00 +- finsh: 2023-02-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 6 + start: 2023-02-22 16:00:00 +- finsh: 2023-02-22 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1628403147600191489 + stage: 5 + start: 2023-02-22 05:00:00 +- finsh: 2023-02-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627540528202915840 + stage: 6 + start: 2023-02-21 16:00:00 +- finsh: 2023-02-21 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627540528202915840 + stage: 5 + start: 2023-02-21 05:00:00 +- finsh: 2023-02-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627540528202915840 + stage: 6 + start: 2023-02-20 16:00:00 +- finsh: 2023-02-20 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627540528202915840 + stage: 5 + start: &id100 2023-02-20 07:00:00 +- finsh: *id100 + include: coct + source: https://twitter.com/CityofCT/status/1627279829992185857 + stage: 3 + start: 2023-02-20 05:00:00 +- exclude: coct + finsh: *id101 + source: https://twitter.com/Eskom_SA/status/1627405790641369088 + stage: 6 + start: &id102 2023-02-19 22:00:00 +- finsh: 2023-02-26 00:00:00 + source: https://twitter.com/Eskom_SA/status/1627405790641369088 + stage: 6 + start: 2023-02-19 22:00:00 +- exclude: coct + finsh: *id102 + source: https://twitter.com/Eskom_SA/status/1627260471517630465 + stage: 6 + start: 2023-02-19 20:00:00 +- finsh: 2023-02-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627279829992185857 + stage: 6 + start: 2023-02-19 20:00:00 +- exclude: coct + finsh: 2023-02-19 20:00:00 + source: https://twitter.com/Eskom_SA/status/1627260471517630465 + stage: 4 + start: &id103 2023-02-19 12:00:00 +- finsh: 2023-02-19 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1627279829992185857 + stage: 4 + start: 2023-02-19 05:00:00 +- exclude: coct + finsh: *id103 + source: https://twitter.com/Eskom_SA/status/1626954827673616386 + stage: 4 + start: 2023-02-19 05:00:00 +- finsh: 2023-02-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1626968438198394880 + stage: 6 + start: 2023-02-18 20:00:00 +- exclude: coct + finsh: 2023-02-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1626954827673616386 + stage: 6 + start: 2023-02-18 20:00:00 +- finsh: 2023-02-18 20:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1626968438198394880 + stage: 4 + start: &id105 2023-02-18 16:00:00 +- exclude: coct + finsh: 2023-02-18 20:00:00 + source: https://twitter.com/Eskom_SA/status/1626954827673616386 + stage: 4 + start: &id104 2023-02-18 16:00:00 +- exclude: coct + finsh: *id104 + source: https://twitter.com/Eskom_SA/status/1626701057366556672 + stage: 4 + start: &id106 2023-02-18 09:00:00 +- finsh: 2023-02-24 23:00:00 + source: https://twitter.com/Eskom_SA/status/1626701057366556672 + stage: 4 + start: 2023-02-18 09:00:00 +- finsh: *id105 + include: coct + source: https://twitter.com/CityofCT/status/1626846030120599552 + stage: 4 + start: 2023-02-18 05:00:00 +- exclude: coct + finsh: *id106 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-18 05:00:00 +- exclude: coct + finsh: 2023-02-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-17 16:00:00 +- finsh: 2023-02-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521417465872386 + stage: 4 + start: 2023-02-17 16:00:00 +- exclude: coct + finsh: 2023-02-17 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-17 05:00:00 +- finsh: 2023-02-17 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521417465872386 + stage: 2 + start: 2023-02-17 05:00:00 +- exclude: coct + finsh: 2023-02-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-16 16:00:00 +- finsh: 2023-02-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 4 + start: 2023-02-16 16:00:00 +- exclude: coct + finsh: 2023-02-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-16 05:00:00 +- finsh: 2023-02-16 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 2 + start: 2023-02-16 05:00:00 +- finsh: 2023-02-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625006169935777792 + stage: 4 + start: 2023-02-15 22:00:00 +- exclude: coct + finsh: 2023-02-16 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-15 16:00:00 +- finsh: 2023-02-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 4 + start: 2023-02-15 16:00:00 +- exclude: coct + finsh: 2023-02-15 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-15 05:00:00 +- finsh: 2023-02-15 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 2 + start: 2023-02-15 05:00:00 +- finsh: 2023-02-15 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 4 + start: 2023-02-14 22:00:00 +- exclude: coct + finsh: 2023-02-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-14 16:00:00 +- finsh: 2023-02-14 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625521412390764547 + stage: 3 + start: 2023-02-14 16:00:00 +- exclude: coct + finsh: 2023-02-14 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-14 05:00:00 +- finsh: 2023-02-14 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625006166437683201 + stage: 2 + start: 2023-02-14 05:00:00 +- finsh: 2023-02-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625006166437683201 + stage: 4 + start: 2023-02-13 22:00:00 +- exclude: coct + finsh: 2023-02-14 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-13 16:00:00 +- finsh: 2023-02-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625006166437683201 + stage: 3 + start: 2023-02-13 16:00:00 +- exclude: coct + finsh: 2023-02-13 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 3 + start: 2023-02-13 05:00:00 +- finsh: 2023-02-13 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1625006166437683201 + stage: 2 + start: 2023-02-13 05:00:00 +- exclude: coct + finsh: 2023-02-13 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624807056912879617 + stage: 4 + start: 2023-02-12 16:00:00 +- finsh: 2023-02-13 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 3 + start: 2023-02-12 16:00:00 +- finsh: 2023-02-12 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 2 + start: 2023-02-12 05:00:00 +- exclude: coct + finsh: 2023-02-12 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624014904960208896 + stage: 2 + start: 2023-02-12 05:00:00 +- finsh: 2023-02-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 3 + start: 2023-02-11 16:00:00 +- finsh: 2023-02-11 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 2 + start: 2023-02-11 05:00:00 +- exclude: coct + finsh: 2023-02-12 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624014904960208896 + stage: 3 + start: 2023-02-11 05:00:00 +- finsh: 2023-02-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 4 + start: 2023-02-10 22:00:00 +- finsh: 2023-02-10 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 3 + start: 2023-02-10 16:00:00 +- exclude: coct + finsh: 2023-02-11 05:00:00 + source: https://twitter.com/Eskom_SA/status/1624014904960208896 + stage: 4 + start: 2023-02-10 16:00:00 +- finsh: 2023-02-10 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1624032606802046977 + stage: 2 + start: 2023-02-10 05:00:00 +- exclude: coct + finsh: 2023-02-10 16:00:00 + source: https://twitter.com/Eskom_SA/status/1624014904960208896 + stage: 3 + start: 2023-02-10 05:00:00 +- finsh: 2023-02-10 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 4 + start: 2023-02-09 22:00:00 +- exclude: coct + finsh: 2023-02-10 05:00:00 + source: https://twitter.com/Eskom_SA/status/1622906524443021313 + stage: 4 + start: 2023-02-09 16:00:00 +- finsh: 2023-02-09 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 3 + start: 2023-02-09 16:00:00 +- exclude: coct + finsh: 2023-02-09 16:00:00 + source: https://twitter.com/Eskom_SA/status/1622906524443021313 + stage: 3 + start: 2023-02-09 05:00:00 +- finsh: 2023-02-09 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 2 + start: 2023-02-09 05:00:00 +- finsh: 2023-02-09 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 4 + start: 2023-02-08 22:00:00 +- exclude: coct + finsh: 2023-02-09 05:00:00 + source: https://twitter.com/Eskom_SA/status/1622906524443021313 + stage: 4 + start: 2023-02-08 16:00:00 +- finsh: 2023-02-08 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 3 + start: 2023-02-08 16:00:00 +- exclude: coct + finsh: 2023-02-08 16:00:00 + source: https://twitter.com/Eskom_SA/status/1622906524443021313 + stage: 3 + start: 2023-02-08 05:00:00 +- finsh: 2023-02-08 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 2 + start: 2023-02-08 05:00:00 +- finsh: 2023-02-08 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 4 + start: 2023-02-07 22:00:00 +- exclude: coct + finsh: 2023-02-08 05:00:00 + source: https://twitter.com/Eskom_SA/status/1622906524443021313 + stage: 4 + start: 2023-02-07 16:00:00 +- finsh: 2023-02-07 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 3 + start: 2023-02-07 16:00:00 +- exclude: coct + finsh: 2023-02-07 16:00:00 + source: https://twitter.com/Eskom_SA/status/1622279822591377410 + stage: 3 + start: 2023-02-07 05:00:00 +- finsh: 2023-02-07 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622972028146929664 + stage: 2 + start: 2023-02-07 05:00:00 +- finsh: 2023-02-07 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622289278968397825 + stage: 4 + start: 2023-02-06 22:00:00 +- finsh: 2023-02-06 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622289278968397825 + stage: 3 + start: 2023-02-06 16:00:00 +- exclude: coct + finsh: 2023-02-07 05:00:00 + source: https://twitter.com/Eskom_SA/status/1622279822591377410 + stage: 4 + start: 2023-02-06 16:00:00 +- exclude: coct + finsh: 2023-02-06 16:00:00 + source: https://twitter.com/Eskom_SA/status/1622279822591377410 + stage: 3 + start: 2023-02-06 05:00:00 +- exclude: coct + finsh: 2023-02-06 05:00:00 + source: https://twitter.com/Eskom_SA/status/1622279822591377410 + stage: 2 + start: &id107 2023-02-05 19:00:00 +- finsh: 2023-02-06 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1622289278968397825 + stage: 2 + start: 2023-02-05 16:00:00 +- exclude: coct + finsh: *id107 + source: https://twitter.com/Eskom_SA/status/1621180625892917255 + stage: 2 + start: 2023-02-05 16:00:00 +- finsh: 2023-02-05 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1621391173892947968 + stage: 3 + start: 2023-02-04 16:00:00 +- finsh: 2023-02-04 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1621391173892947968 + stage: 2 + start: 2023-02-04 05:00:00 +- exclude: coct + finsh: 2023-02-05 05:00:00 + source: https://twitter.com/Eskom_SA/status/1621180625892917255 + stage: 3 + start: 2023-02-04 05:00:00 +- finsh: 2023-02-04 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1621391173892947968 + stage: 4 + start: 2023-02-03 22:00:00 +- finsh: 2023-02-03 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1621391173892947968 + stage: 3 + start: 2023-02-03 05:00:00 +- exclude: coct + finsh: 2023-02-04 05:00:00 + source: https://twitter.com/Eskom_SA/status/1621180625892917255 + stage: 4 + start: 2023-02-03 05:00:00 +- finsh: 2023-02-03 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1620382805174943746 + stage: 5 + start: 2023-02-02 22:00:00 +- finsh: 2023-02-02 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1620382805174943746 + stage: 4 + start: 2023-02-02 05:00:00 +- exclude: coct + finsh: 2023-02-03 05:00:00 + source: https://twitter.com/Eskom_SA/status/1621180625892917255 + stage: 5 + start: &id108 2023-02-02 00:00:00 +- finsh: 2023-02-02 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754740950372352 + stage: 4 + start: 2023-02-01 22:00:00 +- exclude: coct + finsh: *id108 + source: https://twitter.com/Eskom_SA/status/1620358353976430595 + stage: 5 + start: 2023-02-01 05:00:00 +- finsh: 2023-02-01 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754740950372352 + stage: 3 + start: 2023-02-01 05:00:00 +- finsh: 2023-02-01 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754735237730304 + stage: 4 + start: 2023-01-31 22:00:00 +- exclude: coct + finsh: 2023-02-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1620358353976430595 + stage: 6 + start: 2023-01-31 21:00:00 +- exclude: coct + finsh: 2023-01-31 21:00:00 + source: https://twitter.com/Eskom_SA/status/1620358353976430595 + stage: 5 + start: 2023-01-31 12:00:00 +- exclude: coct + finsh: 2023-01-31 12:00:00 + source: https://twitter.com/Eskom_SA/status/1620358353976430595 + stage: 4 + start: &id109 2023-01-31 05:00:00 +- finsh: 2023-01-31 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754735237730304 + stage: 3 + start: 2023-01-31 05:00:00 +- finsh: 2023-01-31 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754735237730304 + stage: 4 + start: 2023-01-30 22:00:00 +- finsh: 2023-01-30 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754735237730304 + stage: 3 + start: 2023-01-30 05:00:00 +- exclude: coct + finsh: 2023-01-30 16:00:00 + source: https://twitter.com/Eskom_SA/status/1618279933578719238 + stage: 4 + start: 2023-01-30 05:00:00 +- exclude: coct + finsh: *id109 + source: https://twitter.com/Eskom_SA/status/1619748849781993472 + stage: 4 + start: 2023-01-29 19:00:00 +- finsh: 2023-01-30 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1619754735237730304 + stage: 4 + start: 2023-01-29 16:00:00 +- exclude: coct + finsh: 2023-01-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1618958836123189248 + stage: 4 + start: 2023-01-29 16:00:00 +- finsh: 2023-01-29 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618968466383581185 + stage: 2 + start: 2023-01-29 05:00:00 +- exclude: coct + finsh: 2023-01-29 16:00:00 + source: https://twitter.com/Eskom_SA/status/1618958836123189248 + stage: 2 + start: 2023-01-29 05:00:00 +- finsh: 2023-01-29 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618968466383581185 + stage: 4 + start: 2023-01-28 16:00:00 +- exclude: coct + finsh: 2023-01-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1618958836123189248 + stage: 4 + start: 2023-01-28 16:00:00 +- finsh: 2023-01-28 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618968466383581185 + stage: 2 + start: 2023-01-28 05:00:00 +- exclude: coct + finsh: 2023-01-28 16:00:00 + source: https://twitter.com/Eskom_SA/status/1618958836123189248 + stage: 3 + start: 2023-01-28 05:00:00 +- finsh: 2023-01-28 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618968466383581185 + stage: 4 + start: 2023-01-27 22:00:00 +- finsh: 2023-01-27 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618968466383581185 + stage: 3 + start: &id110 2023-01-27 16:00:00 +- exclude: coct + finsh: 2023-01-28 05:00:00 + source: https://twitter.com/Eskom_SA/status/1618958836123189248 + stage: 4 + start: &id111 2023-01-27 05:00:00 +- finsh: *id110 + include: coct + source: https://twitter.com/CityofCT/status/1618845215665844224 + stage: 3 + start: 2023-01-27 05:00:00 +- finsh: 2023-01-27 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545014976057345 + stage: 2 + start: 2023-01-27 05:00:00 +- exclude: coct + finsh: 2023-01-27 16:00:00 + source: https://twitter.com/Eskom_SA/status/1617110799603929091 + stage: 1 + start: 2023-01-27 05:00:00 +- finsh: 2023-01-27 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618288929228328960 + stage: 5 + start: 2023-01-26 22:00:00 +- exclude: coct + finsh: 2023-01-27 05:00:00 + source: https://twitter.com/Eskom_SA/status/1617110799603929091 + stage: 3 + start: 2023-01-26 16:00:00 +- exclude: coct + finsh: *id111 + source: https://twitter.com/Eskom_SA/status/1618279933578719238 + stage: 5 + start: 2023-01-26 05:00:00 +- exclude: coct + finsh: 2023-01-26 16:00:00 + source: https://twitter.com/Eskom_SA/status/1617110799603929091 + stage: 1 + start: 2023-01-26 05:00:00 +- finsh: 2023-01-26 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618288929228328960 + stage: 4 + start: 2023-01-25 22:00:00 +- finsh: 2023-01-26 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617405945075896322 + stage: 3 + start: 2023-01-25 22:00:00 +- exclude: coct + finsh: 2023-01-26 05:00:00 + source: https://twitter.com/Eskom_SA/status/1618279933578719238 + stage: 4 + start: 2023-01-25 16:00:00 +- finsh: 2023-01-25 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1618288929228328960 + stage: 3 + start: 2023-01-25 16:00:00 +- finsh: 2023-01-25 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 2 + start: 2023-01-25 05:00:00 +- exclude: coct + finsh: 2023-01-25 16:00:00 + source: https://twitter.com/Eskom_SA/status/1617515639547269124 + stage: 3 + start: 2023-01-25 05:00:00 +- finsh: 2023-01-25 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 4 + start: 2023-01-24 22:00:00 +- finsh: 2023-01-24 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 3 + start: 2023-01-24 16:00:00 +- exclude: coct + finsh: 2023-01-25 05:00:00 + source: https://twitter.com/Eskom_SA/status/1617515639547269124 + stage: 4 + start: 2023-01-24 16:00:00 +- finsh: 2023-01-24 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 2 + start: 2023-01-24 05:00:00 +- exclude: coct + finsh: 2023-01-24 16:00:00 + source: https://twitter.com/Eskom_SA/status/1617515639547269124 + stage: 3 + start: 2023-01-24 05:00:00 +- finsh: 2023-01-24 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 4 + start: 2023-01-23 22:00:00 +- finsh: 2023-01-23 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617545010546892804 + stage: 3 + start: 2023-01-23 16:00:00 +- exclude: coct + finsh: 2023-01-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1617515639547269124 + stage: 4 + start: 2023-01-23 16:00:00 +- exclude: coct + finsh: 2023-01-23 16:00:00 + source: https://twitter.com/Eskom_SA/status/1617515639547269124 + stage: 3 + start: &id112 2023-01-23 05:46:00 +- finsh: 2023-01-23 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617405853510012928 + stage: 2 + start: 2023-01-23 05:00:00 +- exclude: coct + finsh: *id112 + source: https://twitter.com/Eskom_SA/status/1617110799603929091 + stage: 2 + start: 2023-01-23 05:00:00 +- exclude: coct + finsh: 2023-01-23 05:00:00 + source: https://twitter.com/Eskom_SA/status/1617110799603929091 + stage: 3 + start: 2023-01-22 16:00:00 +- finsh: 2023-01-23 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617134524185612290 + stage: 3 + start: 2023-01-22 16:00:00 +- exclude: coct + finsh: 2023-01-22 16:00:00 + source: https://twitter.com/Eskom_SA/status/1616422581439180800 + stage: 2 + start: 2023-01-22 05:00:00 +- finsh: 2023-01-22 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1617134524185612290 + stage: 2 + start: 2023-01-22 05:00:00 +- exclude: coct + finsh: 2023-01-22 05:00:00 + source: https://twitter.com/Eskom_SA/status/1616422581439180800 + stage: 4 + start: 2023-01-21 16:00:00 +- finsh: 2023-01-22 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1616438384897187842 + stage: 4 + start: 2023-01-21 16:00:00 +- exclude: coct + finsh: 2023-01-21 16:00:00 + source: https://twitter.com/Eskom_SA/status/1616422581439180800 + stage: 3 + start: 2023-01-21 05:00:00 +- finsh: 2023-01-21 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1616438384897187842 + stage: 2 + start: 2023-01-21 05:00:00 +- finsh: 2023-01-21 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1616438384897187842 + stage: 4 + start: 2023-01-20 22:00:00 +- finsh: 2023-01-20 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1616438384897187842 + stage: 3 + start: 2023-01-20 16:00:00 +- exclude: coct + finsh: 2023-01-21 05:00:00 + source: https://twitter.com/Eskom_SA/status/1616422581439180800 + stage: 4 + start: 2023-01-20 05:00:00 +- finsh: 2023-01-20 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615032041162014736 + stage: 3 + start: 2023-01-20 05:00:00 +- finsh: 2023-01-20 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615032041162014736 + stage: 5 + start: 2023-01-19 22:00:00 +- exclude: coct + finsh: 2023-01-20 05:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 5 + start: 2023-01-19 16:00:00 +- finsh: 2023-01-19 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615032041162014736 + stage: 4 + start: 2023-01-19 16:00:00 +- exclude: coct + finsh: 2023-01-19 16:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 4 + start: 2023-01-19 05:00:00 +- finsh: 2023-01-19 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615032041162014736 + stage: 3 + start: 2023-01-19 05:00:00 +- finsh: 2023-01-19 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 5 + start: 2023-01-18 22:00:00 +- exclude: coct + finsh: 2023-01-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 5 + start: 2023-01-18 16:00:00 +- finsh: 2023-01-18 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 4 + start: 2023-01-18 16:00:00 +- exclude: coct + finsh: 2023-01-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 4 + start: 2023-01-18 05:00:00 +- finsh: 2023-01-18 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 3 + start: 2023-01-18 05:00:00 +- finsh: 2023-01-18 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 5 + start: 2023-01-17 22:00:00 +- exclude: coct + finsh: 2023-01-18 05:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 5 + start: 2023-01-17 16:00:00 +- finsh: 2023-01-17 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 4 + start: 2023-01-17 16:00:00 +- exclude: coct + finsh: 2023-01-17 16:00:00 + source: https://twitter.com/Eskom_SA/status/1615001268774227971 + stage: 4 + start: 2023-01-17 05:00:00 +- finsh: 2023-01-17 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 3 + start: 2023-01-17 05:00:00 +- finsh: 2023-01-17 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 6 + start: 2023-01-16 22:00:00 +- finsh: 2023-01-16 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1615031881551970318 + stage: 5 + start: 2023-01-16 05:00:00 +- finsh: 2023-01-16 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1614662839251210241 + stage: 6 + start: 2023-01-14 16:00:00 +- finsh: 2023-01-14 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613862235943624706 + stage: 5 + start: 2023-01-14 05:00:00 +- finsh: 2023-01-14 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613862235943624706 + stage: 6 + start: 2023-01-13 22:00:00 +- finsh: 2023-01-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1612889529400332288 + stage: 5 + start: 2023-01-13 16:00:00 +- finsh: 2023-01-13 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613862235943624706 + stage: 5 + start: 2023-01-13 05:00:00 +- finsh: 2023-01-13 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613174742424461313 + stage: 6 + start: 2023-01-12 22:00:00 +- finsh: 2023-01-12 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1612889529400332288 + stage: 5 + start: 2023-01-12 16:00:00 +- finsh: 2023-01-12 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613174742424461313 + stage: 5 + start: 2023-01-12 05:00:00 +- finsh: 2023-01-12 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613174742424461313 + stage: 6 + start: 2023-01-11 22:00:00 +- finsh: 2023-01-12 04:59:00 + source: https://twitter.com/CityofCT/status/1612101173934170112 + stage: 4 + start: 2023-01-11 22:00:00 +- exclude: coct + finsh: 2023-01-17 05:00:00 + source: https://twitter.com/Eskom_SA/status/1613158343979171840 + stage: 6 + start: 2023-01-11 16:00:00 +- exclude: coct + finsh: 2023-01-17 00:00:00 + source: https://twitter.com/Eskom_SA/status/1613158343979171840 + stage: 6 + start: 2023-01-11 16:00:00 +- finsh: 2023-01-11 22:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1613174742424461313 + stage: 5 + start: 2023-01-11 16:00:00 +- finsh: 2023-01-11 21:59:00 + source: https://twitter.com/CityofCT/status/1612101173934170112 + stage: 3 + start: 2023-01-11 16:00:00 +- exclude: coct + finsh: 2023-01-11 16:00:00 + source: https://twitter.com/Eskom_SA/status/1612871052056477697 + stage: 4 + start: 2023-01-11 05:00:00 +- finsh: 2023-01-11 16:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1612889524186779649 + stage: 3 + start: 2023-01-11 05:00:00 +- finsh: 2023-01-11 15:59:00 + source: https://twitter.com/CityofCT/status/1612101173934170112 + stage: 2 + start: 2023-01-11 05:00:00 +- finsh: 2023-01-11 04:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 4 + start: 2023-01-10 22:00:00 +- finsh: 2023-01-11 05:00:00 + include: coct + source: https://twitter.com/CityofCT/status/1612889524186779649 + stage: 6 + start: &id113 2023-01-10 21:00:00 +- exclude: coct + finsh: 2023-01-11 05:00:00 + source: https://twitter.com/Eskom_SA/status/1612870818781925392 + stage: 6 + start: 2023-01-10 21:00:00 +- exclude: coct + finsh: 2023-01-10 20:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 4 + start: 2023-01-10 16:00:00 +- finsh: *id113 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-10 16:00:00 +- finsh: 2023-01-10 21:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-10 16:00:00 +- finsh: 2023-01-10 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 2 + start: 2023-01-10 05:00:00 +- exclude: coct + finsh: 2023-01-10 15:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 3 + start: 2023-01-10 05:00:00 +- finsh: 2023-01-10 15:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 2 + start: 2023-01-10 05:00:00 +- finsh: 2023-01-10 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 4 + start: 2023-01-09 22:00:00 +- finsh: 2023-01-10 04:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 4 + start: 2023-01-09 22:00:00 +- exclude: coct + finsh: 2023-01-10 04:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 4 + start: 2023-01-09 16:00:00 +- finsh: 2023-01-09 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-09 16:00:00 +- finsh: 2023-01-09 21:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-09 16:00:00 +- exclude: coct + finsh: 2023-01-09 15:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 3 + start: 2023-01-09 05:00:00 +- finsh: 2023-01-09 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 2 + start: 2023-01-09 05:00:00 +- finsh: 2023-01-09 15:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 2 + start: 2023-01-09 05:00:00 +- finsh: 2023-01-09 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 4 + start: 2023-01-08 16:00:00 +- exclude: coct + finsh: 2023-01-09 04:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 4 + start: 2023-01-08 16:00:00 +- finsh: 2023-01-09 04:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 4 + start: 2023-01-08 16:00:00 +- finsh: 2023-01-08 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-08 05:00:00 +- exclude: coct + finsh: 2023-01-08 15:59:00 + source: https://twitter.com/Eskom_SA/status/1612014546377445376 + stage: 3 + start: 2023-01-08 05:00:00 +- finsh: 2023-01-08 15:59:00 + source: https://twitter.com/CityofCT/status/1612101167315550209 + stage: 3 + start: 2023-01-08 05:00:00 +- exclude: coct + finsh: 2023-01-08 04:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 4 + start: 2023-01-07 16:00:00 +- finsh: 2023-01-08 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1611732826348453889 + stage: 4 + start: 2023-01-07 16:00:00 +- exclude: coct + finsh: 2023-01-07 15:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 3 + start: 2023-01-07 05:00:00 +- finsh: 2023-01-07 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1611732826348453889 + stage: 2 + start: 2023-01-07 05:00:00 +- finsh: 2023-01-07 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1611349258489266176 + stage: 4 + start: 2023-01-06 22:00:00 +- finsh: 2023-01-07 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 2 + start: 2023-01-06 22:00:00 +- exclude: coct + finsh: 2023-01-07 04:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 4 + start: 2023-01-06 16:00:00 +- finsh: 2023-01-06 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1611349258489266176 + stage: 3 + start: &id114 2023-01-06 16:00:00 +- exclude: coct + finsh: 2023-01-06 15:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 3 + start: 2023-01-06 05:00:00 +- finsh: 2023-01-06 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1611349258489266176 + stage: 2 + start: 2023-01-06 05:00:00 +- finsh: *id114 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 1 + start: 2023-01-06 05:00:00 +- finsh: 2023-01-06 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610976236771151872 + stage: 4 + start: 2023-01-05 22:00:00 +- finsh: 2023-01-06 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 2 + start: 2023-01-05 22:00:00 +- exclude: coct + finsh: 2023-01-06 04:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 4 + start: 2023-01-05 16:00:00 +- finsh: 2023-01-05 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610976236771151872 + stage: 3 + start: &id115 2023-01-05 16:00:00 +- finsh: 2023-01-05 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610976236771151872 + stage: 2 + start: 2023-01-05 05:00:00 +- finsh: *id115 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 1 + start: 2023-01-05 05:00:00 +- finsh: 2023-01-05 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610632821160165379 + stage: 3 + start: 2023-01-04 22:00:00 +- exclude: coct + finsh: 2023-01-05 15:59:00 + source: https://twitter.com/Eskom_SA/status/1610958520102305792 + stage: 3 + start: 2023-01-04 16:00:00 +- finsh: 2023-01-04 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610632821160165379 + stage: 2 + start: 2023-01-04 16:00:00 +- finsh: 2023-01-04 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610632821160165379 + stage: 1 + start: 2023-01-04 05:00:00 +- finsh: 2023-01-04 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 2 + start: 2023-01-03 22:00:00 +- finsh: 2023-01-03 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1610273069225869319 + stage: 1 + start: 2023-01-03 05:00:00 +- finsh: 2023-01-03 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1609905691736801281 + stage: 2 + start: 2023-01-02 22:00:00 +- finsh: 2023-01-02 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1609905691736801281 + stage: 1 + start: 2023-01-02 05:00:00 +- exclude: coct + finsh: 2023-01-02 04:59:00 + source: https://twitter.com/Eskom_SA/status/1607677138726969344 + stage: 3 + start: 2023-01-01 16:00:00 +- finsh: 2023-01-02 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1609180782228029440 + stage: 2 + start: 2023-01-01 05:00:00 +- exclude: coct + finsh: 2023-01-01 15:59:00 + source: https://twitter.com/Eskom_SA/status/1607677138726969344 + stage: 2 + start: 2023-01-01 05:00:00 +- finsh: 2023-01-01 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1609180782228029440 + stage: 2 + start: 2022-12-31 22:00:00 +- exclude: coct + finsh: 2023-01-01 04:59:00 + source: https://twitter.com/Eskom_SA/status/1608107655167606784 + stage: 4 + start: 2022-12-31 16:00:00 +- exclude: coct + finsh: 2023-01-04 15:59:00 + source: https://twitter.com/Eskom_SA/status/1610609225448951811 + stage: 2 + start: 2022-12-31 05:00:00 +- exclude: coct + finsh: 2022-12-31 15:59:00 + source: https://twitter.com/Eskom_SA/status/1608770681281613824 + stage: 2 + start: 2022-12-31 05:00:00 +- finsh: 2022-12-31 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 4 + start: 2022-12-30 22:00:00 +- exclude: coct + finsh: 2022-12-31 04:59:00 + source: https://twitter.com/Eskom_SA/status/1608770681281613824 + stage: 4 + start: 2022-12-30 16:00:00 +- finsh: 2022-12-30 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 3 + start: 2022-12-30 16:00:00 +- exclude: coct + finsh: 2022-12-30 15:59:00 + source: https://twitter.com/Eskom_SA/status/1608770681281613824 + stage: 3 + start: 2022-12-30 05:00:00 +- finsh: 2022-12-30 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 2 + start: 2022-12-30 05:00:00 +- finsh: 2022-12-30 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 4 + start: 2022-12-29 22:00:00 +- finsh: 2022-12-29 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 3 + start: 2022-12-29 16:00:00 +- exclude: coct + finsh: 2022-12-30 04:59:00 + source: https://twitter.com/Eskom_SA/status/1608107655167606784 + stage: 4 + start: 2022-12-29 16:00:00 +- finsh: 2022-12-29 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 2 + start: 2022-12-29 05:00:00 +- exclude: coct + finsh: 2022-12-29 15:59:00 + source: https://twitter.com/Eskom_SA/status/1608107655167606784 + stage: 3 + start: 2022-12-29 05:00:00 +- finsh: 2022-12-29 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 4 + start: 2022-12-28 22:00:00 +- exclude: coct + finsh: 2022-12-29 04:59:00 + source: https://twitter.com/Eskom_SA/status/1608107655167606784 + stage: 4 + start: 2022-12-28 16:29:00 +- finsh: 2022-12-28 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1608111894694346755 + stage: 3 + start: 2022-12-28 16:00:00 +- exclude: coct + finsh: 2022-12-28 16:28:00 + source: https://twitter.com/Eskom_SA/status/1608107655167606784 + stage: 2 + start: &id116 2022-12-28 05:00:00 +- finsh: 2022-12-28 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1607696623093563392 + stage: 1 + start: 2022-12-28 05:00:00 +- finsh: 2022-12-28 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1607696623093563392 + stage: 3 + start: 2022-12-27 22:00:00 +- finsh: 2022-12-28 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606667251876241409 + stage: 2 + start: 2022-12-27 22:00:00 +- exclude: coct + finsh: 2022-12-28 04:59:00 + source: https://twitter.com/Eskom_SA/status/1607677138726969344 + stage: 3 + start: 2022-12-27 16:00:00 +- finsh: 2022-12-27 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1607696623093563392 + stage: 2 + start: &id117 2022-12-27 16:00:00 +- exclude: coct + finsh: *id116 + source: https://twitter.com/Eskom_SA/status/1606650168123817985 + stage: 3 + start: 2022-12-27 16:00:00 +- finsh: *id117 + include: coct + source: https://twitter.com/CityofCT/status/1606667251876241409 + stage: 1 + start: 2022-12-27 05:00:00 +- finsh: 2022-12-27 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1607038569419362305 + stage: 1 + start: 2022-12-26 22:00:00 +- exclude: coct + finsh: 2022-12-27 15:59:00 + source: https://twitter.com/Eskom_SA/status/1607677138726969344 + stage: 1 + start: 2022-12-26 05:00:00 +- exclude: coct + finsh: 2022-12-27 15:59:00 + source: https://twitter.com/Eskom_SA/status/1606650168123817985 + stage: 2 + start: 2022-12-26 05:00:00 +- finsh: 2022-12-26 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606667251876241409 + stage: 1 + start: 2022-12-26 05:00:00 +- finsh: 2022-12-25 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606667251876241409 + stage: 3 + start: 2022-12-24 22:00:00 +- exclude: coct + finsh: 2022-12-25 04:59:00 + source: https://twitter.com/Eskom_SA/status/1606650168123817985 + stage: 3 + start: 2022-12-24 05:00:00 +- finsh: 2022-12-24 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606667251876241409 + stage: 1 + start: 2022-12-24 05:00:00 +- finsh: 2022-12-24 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606311646955245569 + stage: 4 + start: 2022-12-23 22:00:00 +- finsh: 2022-12-23 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1606311646955245569 + stage: 3 + start: 2022-12-23 05:00:00 +- finsh: 2022-12-23 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 4 + start: 2022-12-22 22:00:00 +- finsh: 2022-12-22 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 3 + start: 2022-12-22 05:00:00 +- finsh: 2022-12-22 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 4 + start: 2022-12-21 22:00:00 +- exclude: coct + finsh: 2022-12-24 04:59:00 + source: https://twitter.com/Eskom_SA/status/1606296476975386624 + stage: 4 + start: 2022-12-21 05:00:00 +- finsh: 2022-12-21 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 3 + start: 2022-12-21 05:00:00 +- finsh: 2022-12-21 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 6 + start: 2022-12-20 22:00:00 +- exclude: coct + finsh: 2022-12-21 04:59:00 + source: https://twitter.com/Eskom_SA/status/1605233646331465728 + stage: 6 + start: 2022-12-20 20:00:00 +- finsh: 2022-12-20 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 5 + start: 2022-12-20 20:00:00 +- exclude: coct + finsh: 2022-12-20 19:59:00 + source: https://twitter.com/Eskom_SA/status/1605233646331465728 + stage: 4 + start: 2022-12-20 05:00:00 +- finsh: 2022-12-20 19:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1605257927748624387 + stage: 3 + start: 2022-12-20 05:00:00 +- finsh: 2022-12-20 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1604445711172411393 + stage: 5 + start: 2022-12-19 22:00:00 +- exclude: coct + finsh: 2022-12-20 04:59:00 + source: https://twitter.com/Eskom_SA/status/1604399472204726272 + stage: 5 + start: 2022-12-19 05:00:00 +- finsh: 2022-12-19 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1604445711172411393 + stage: 4 + start: &id118 2022-12-19 05:00:00 +- finsh: *id118 + include: coct + source: https://twitter.com/CityofCT/status/1603039838957092864 + stage: 3 + start: 2022-12-18 06:00:00 +- finsh: 2022-12-19 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1604445711172411393 + stage: 6 + start: 2022-12-18 05:00:00 +- finsh: 2022-12-18 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603653072009543680 + stage: 6 + start: 2022-12-17 22:00:00 +- finsh: 2022-12-18 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603110173920604161 + stage: 4 + start: 2022-12-17 22:00:00 +- finsh: 2022-12-17 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603039834876293121 + stage: 1 + start: 2022-12-17 06:00:00 +- finsh: 2022-12-17 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603653072009543680 + stage: 5 + start: 2022-12-17 05:00:00 +- finsh: 2022-12-17 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603653072009543680 + stage: 6 + start: 2022-12-16 22:00:00 +- finsh: 2022-12-17 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603110173920604161 + stage: 4 + start: 2022-12-16 22:00:00 +- finsh: 2022-12-16 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603653072009543680 + stage: 5 + start: &id119 2022-12-16 09:07:00 +- exclude: coct + finsh: 2022-12-19 04:59:00 + source: https://twitter.com/Eskom_SA/status/1603641580417605632 + stage: 6 + start: &id120 2022-12-16 08:34:00 +- finsh: *id119 + include: coct + source: https://twitter.com/CityofCT/status/1603110173920604161 + stage: 3 + start: 2022-12-16 05:00:00 +- finsh: 2022-12-16 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603039834876293121 + stage: 4 + start: 2022-12-15 22:00:00 +- finsh: 2022-12-15 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603039834876293121 + stage: 3 + start: 2022-12-15 06:00:00 +- exclude: coct + finsh: *id120 + source: https://twitter.com/Eskom_SA/status/1603096736515641344 + stage: 4 + start: &id122 2022-12-15 05:00:00 +- finsh: 2022-12-15 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603039834876293121 + stage: 5 + start: 2022-12-14 22:00:00 +- finsh: 2022-12-14 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1603110173920604161 + stage: 4 + start: &id121 2022-12-14 05:00:00 +- finsh: *id121 + include: coct + source: https://twitter.com/CityofCT/status/1601967837089767424 + stage: 5 + start: 2022-12-13 22:00:00 +- finsh: 2022-12-13 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1601967837089767424 + stage: 4 + start: 2022-12-13 06:00:00 +- finsh: 2022-12-13 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1601967837089767424 + stage: 5 + start: 2022-12-12 22:00:00 +- finsh: 2022-12-12 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1601967837089767424 + stage: 4 + start: 2022-12-12 06:00:00 +- exclude: coct + finsh: 2022-12-15 04:59:00 + source: https://twitter.com/Eskom_SA/status/1601537019511181313 + stage: 5 + start: 2022-12-10 13:19:00 +- exclude: coct + finsh: *id122 + source: https://twitter.com/Eskom_SA/status/1601537019511181313 + stage: 5 + start: 2022-12-10 13:19:00 +- finsh: 2022-12-12 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1601967837089767424 + stage: 5 + start: &id123 2022-12-10 13:19:00 +- finsh: 2022-12-20 23:59:00 + source: https://twitter.com/Eskom_SA/status/1601537019511181313 + stage: 5 + start: 2022-12-10 13:19:00 +- exclude: coct + finsh: 2022-12-10 13:19:00 + source: https://twitter.com/Eskom_SA/status/1601223219158999042 + stage: 4 + start: 2022-12-10 05:00:00 +- finsh: *id123 + include: coct + source: https://twitter.com/CityofCT/status/1601238204497408000 + stage: 4 + start: &id124 2022-12-10 05:00:00 +- finsh: *id124 + include: coct + source: https://twitter.com/CityofCT/status/1600944669374152704 + stage: 5 + start: 2022-12-09 22:00:00 +- finsh: 2022-12-09 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600124411956166658 + stage: 1 + start: 2022-12-09 10:00:00 +- exclude: coct + finsh: 2022-12-10 04:59:00 + source: https://twitter.com/Eskom_SA/status/1601223219158999042 + stage: 5 + start: 2022-12-09 05:00:00 +- finsh: 2022-12-10 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1601238204497408000 + stage: 5 + start: 2022-12-09 05:00:00 +- finsh: 2022-12-09 09:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600531431209324544 + stage: 3 + start: 2022-12-09 05:00:00 +- finsh: 2022-12-09 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600944669374152704 + stage: 6 + start: 2022-12-08 22:00:00 +- finsh: 2022-12-08 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600531431209324544 + stage: 5 + start: 2022-12-08 16:00:00 +- finsh: 2022-12-08 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600531431209324544 + stage: 4 + start: 2022-12-08 06:00:00 +- finsh: 2022-12-08 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600531431209324544 + stage: 6 + start: 2022-12-07 22:00:00 +- finsh: 2022-12-08 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600124416733503490 + stage: 3 + start: 2022-12-07 22:00:00 +- exclude: coct + finsh: 2022-12-08 05:00:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 2 + start: 2022-12-07 16:00:00 +- exclude: coct + finsh: 2022-12-09 04:59:00 + source: https://twitter.com/Eskom_SA/status/1600507455708037121 + stage: 6 + start: &id125 2022-12-07 12:00:00 +- finsh: 2022-12-07 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600124416733503490 + stage: 1 + start: 2022-12-07 10:00:00 +- finsh: 2022-12-07 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600531431209324544 + stage: 5 + start: 2022-12-07 09:00:00 +- exclude: coct + finsh: *id125 + source: https://twitter.com/Eskom_SA/status/1600340502628356096 + stage: 4 + start: &id126 2022-12-07 09:00:00 +- exclude: coct + finsh: *id126 + source: https://twitter.com/Eskom_SA/status/1600095494444789760 + stage: 2 + start: 2022-12-07 05:00:00 +- finsh: 2022-12-07 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600124411956166658 + stage: 3 + start: 2022-12-06 22:00:00 +- exclude: coct + finsh: 2022-12-07 04:59:00 + source: https://twitter.com/Eskom_SA/status/1600095494444789760 + stage: 3 + start: 2022-12-06 16:00:00 +- finsh: 2022-12-06 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1600124411956166658 + stage: 2 + start: &id127 2022-12-06 16:00:00 +- exclude: coct + finsh: 2022-12-06 15:59:00 + source: https://twitter.com/Eskom_SA/status/1599365735494492160 + stage: 2 + start: 2022-12-06 05:00:00 +- finsh: *id127 + include: coct + source: https://twitter.com/CityofCT/status/1599383084205735938 + stage: 1 + start: 2022-12-06 05:00:00 +- finsh: 2022-12-06 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1599383084205735938 + stage: 3 + start: 2022-12-05 22:00:00 +- exclude: coct + finsh: 2022-12-06 04:59:00 + source: https://twitter.com/Eskom_SA/status/1599365735494492160 + stage: 3 + start: 2022-12-05 05:00:00 +- finsh: 2022-12-05 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1599383084205735938 + stage: 2 + start: 2022-12-05 05:00:00 +- finsh: 2022-12-05 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1599383084205735938 + stage: 4 + start: &id128 2022-12-03 23:00:00 +- exclude: coct + finsh: 2022-12-05 04:59:00 + source: https://twitter.com/Eskom_SA/status/1599365735494492160 + stage: 4 + start: &id129 2022-12-03 22:01:00 +- finsh: *id128 + include: coct + source: https://twitter.com/CityofCT/status/1598605597229850626 + stage: 2 + start: 2022-12-03 22:00:00 +- finsh: 2022-12-03 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1597951625683152897 + stage: 2 + start: 2022-12-02 22:00:00 +- exclude: coct + finsh: *id129 + source: https://twitter.com/Eskom_SA/status/1598665740223188992 + stage: 2 + start: 2022-12-02 16:00:00 +- finsh: 2022-12-02 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1597951625683152897 + stage: 2 + start: 2022-12-01 22:00:00 +- exclude: coct + finsh: 2022-12-02 05:00:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 2 + start: 2022-12-01 16:00:00 +- finsh: 2022-12-01 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1597951625683152897 + stage: 2 + start: 2022-11-30 22:00:00 +- exclude: coct + finsh: 2022-12-01 05:00:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 2 + start: 2022-11-30 16:00:00 +- exclude: coct + finsh: 2022-11-30 15:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 2 + start: 2022-11-30 05:00:00 +- finsh: 2022-11-30 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1596926804886925312 + stage: 2 + start: 2022-11-29 22:00:00 +- exclude: coct + finsh: 2022-11-30 05:00:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 2 + start: 2022-11-29 16:00:00 +- exclude: coct + finsh: 2022-11-29 15:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 2 + start: 2022-11-29 05:00:00 +- finsh: 2022-11-29 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1596926804886925312 + stage: 2 + start: 2022-11-28 22:00:00 +- exclude: coct + finsh: 2022-11-29 05:00:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 2 + start: 2022-11-28 16:00:00 +- exclude: coct + finsh: 2022-11-28 15:59:00 + source: https://twitter.com/Eskom_SA/status/1596857928346374144 + stage: 1 + start: 2022-11-28 05:00:00 +- exclude: coct + finsh: 2022-11-28 04:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 3 + start: 2022-11-27 16:00:00 +- finsh: 2022-11-27 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1596926804886925312 + stage: 2 + start: &id130 2022-11-27 05:00:00 +- exclude: coct + finsh: 2022-11-27 04:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 4 + start: 2022-11-26 16:00:00 +- finsh: *id130 + include: coct + source: https://twitter.com/CityofCT/status/1596111265105342464 + stage: 2 + start: 2022-11-26 12:00:00 +- finsh: 2022-11-26 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1596111265105342464 + stage: 2 + start: 2022-11-25 22:00:00 +- finsh: 2022-11-25 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1596111265105342464 + stage: 1 + start: 2022-11-25 16:00:00 +- exclude: coct + finsh: 2022-11-26 04:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 4 + start: 2022-11-25 16:00:00 +- exclude: coct + finsh: 2022-11-27 23:59:00 + source: https://twitter.com/Eskom_SA/status/1596092413608697856 + stage: 2 + start: &id131 2022-11-25 12:44:00 +- exclude: coct + finsh: *id131 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 2 + start: 2022-11-25 05:00:00 +- finsh: 2022-11-25 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1595756353976471552 + stage: 3 + start: 2022-11-24 22:00:00 +- finsh: 2022-11-24 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1595756353976471552 + stage: 2 + start: 2022-11-24 16:00:00 +- exclude: coct + finsh: 2022-11-25 04:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 3 + start: 2022-11-24 16:00:00 +- exclude: coct + finsh: 2022-11-24 15:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 2 + start: 2022-11-24 05:00:00 +- finsh: 2022-11-24 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677727176839168 + stage: 4 + start: 2022-11-23 22:00:00 +- finsh: 2022-11-23 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677727176839168 + stage: 3 + start: 2022-11-23 16:00:00 +- exclude: coct + finsh: 2022-11-23 15:59:00 + source: https://twitter.com/Eskom_SA/status/1594288144043872258 + stage: 2 + start: 2022-11-23 05:00:00 +- finsh: 2022-11-23 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677727176839168 + stage: 4 + start: 2022-11-22 22:00:00 +- finsh: 2022-11-22 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677727176839168 + stage: 3 + start: 2022-11-22 16:00:00 +- finsh: 2022-11-22 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594312209135378433 + stage: 1 + start: 2022-11-22 05:00:00 +- exclude: coct + finsh: 2022-11-22 15:59:00 + source: https://twitter.com/Eskom_SA/status/1592530637470470144 + stage: 2 + start: 2022-11-22 05:00:00 +- finsh: 2022-11-22 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677724051869699 + stage: 4 + start: 2022-11-21 22:00:00 +- finsh: 2022-11-21 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677724051869699 + stage: 3 + start: 2022-11-21 16:00:00 +- exclude: coct + finsh: 2022-11-22 04:59:00 + source: https://twitter.com/Eskom_SA/status/1592530637470470144 + stage: 3 + start: 2022-11-21 16:00:00 +- finsh: 2022-11-21 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594677724051869699 + stage: 2 + start: 2022-11-21 06:00:00 +- finsh: 2022-11-21 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594312209135378433 + stage: 4 + start: 2022-11-21 00:00:00 +- exclude: coct + finsh: 2022-11-24 04:59:00 + source: https://twitter.com/Eskom_SA/status/1594637452362547204 + stage: 4 + start: &id132 2022-11-20 17:00:00 +- finsh: 2022-11-20 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1594312209135378433 + stage: 4 + start: &id133 2022-11-20 17:00:00 +- exclude: coct + finsh: *id132 + source: https://twitter.com/Eskom_SA/status/1592530637470470144 + stage: 3 + start: 2022-11-20 16:00:00 +- finsh: *id133 + include: coct + source: https://twitter.com/CityofCT/status/1593578516976648192 + stage: 4 + start: 2022-11-20 00:00:00 +- finsh: 2022-11-19 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1593482545034940417 + stage: 2 + start: 2022-11-18 06:00:00 +- exclude: coct + finsh: 2022-11-20 08:00:00 + source: https://twitter.com/Eskom_SA/status/1594288144043872258 + stage: 4 + start: &id134 2022-11-18 05:26:00 +- finsh: 2022-11-18 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528568571269121 + stage: 2 + start: 2022-11-18 05:00:00 +- finsh: 2022-11-18 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528568571269121 + stage: 3 + start: 2022-11-17 22:00:00 +- finsh: 2022-11-17 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528568571269121 + stage: 2 + start: 2022-11-17 16:00:00 +- finsh: 2022-11-17 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528568571269121 + stage: 2 + start: 2022-11-17 05:00:00 +- exclude: coct + finsh: *id134 + source: https://twitter.com/Eskom_SA/status/1592530637470470144 + stage: 2 + start: 2022-11-17 05:00:00 +- finsh: 2022-11-17 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528568571269121 + stage: 3 + start: 2022-11-16 22:00:00 +- finsh: 2022-11-16 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528563399688193 + stage: 2 + start: 2022-11-16 16:00:00 +- finsh: 2022-11-16 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592158379459461122 + stage: 2 + start: 2022-11-16 05:00:00 +- finsh: 2022-11-16 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528563399688193 + stage: 2 + start: 2022-11-15 22:00:00 +- finsh: 2022-11-15 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592528563399688193 + stage: 1 + start: 2022-11-15 16:00:00 +- exclude: coct + finsh: *id132 + source: https://twitter.com/Eskom_SA/status/1593452591865896963 + stage: 4 + start: &id135 2022-11-15 05:26:00 +- exclude: coct + finsh: *id135 + source: https://twitter.com/Eskom_SA/status/1592125403019333633 + stage: 2 + start: 2022-11-15 05:00:00 +- finsh: 2022-11-15 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592158375663796224 + stage: 2 + start: 2022-11-15 05:00:00 +- finsh: 2022-11-15 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592158375663796224 + stage: 3 + start: 2022-11-14 22:00:00 +- exclude: coct + finsh: 2022-11-15 04:59:00 + source: https://twitter.com/Eskom_SA/status/1592125403019333633 + stage: 3 + start: 2022-11-14 16:00:00 +- finsh: 2022-11-14 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1592158375663796224 + stage: 2 + start: 2022-11-14 16:00:00 +- exclude: coct + finsh: 2022-11-14 15:59:00 + source: https://twitter.com/Eskom_SA/status/1592125403019333633 + stage: 2 + start: &id136 2022-11-14 05:00:00 +- finsh: 2022-11-14 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1591081762595405824 + stage: 2 + start: 2022-11-13 06:00:00 +- finsh: 2022-11-13 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1591081762595405824 + stage: 2 + start: 2022-11-12 16:00:00 +- finsh: 2022-11-12 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1591081762595405824 + stage: 2 + start: 2022-11-11 22:00:00 +- finsh: 2022-11-11 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1591081762595405824 + stage: 1 + start: 2022-11-11 16:00:00 +- finsh: 2022-11-11 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 2 + start: 2022-11-10 22:00:00 +- finsh: 2022-11-10 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 1 + start: 2022-11-10 16:00:00 +- finsh: 2022-11-10 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 2 + start: 2022-11-09 22:00:00 +- finsh: 2022-11-09 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 1 + start: 2022-11-09 16:00:00 +- finsh: 2022-11-09 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 2 + start: 2022-11-08 22:00:00 +- finsh: 2022-11-08 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589866327207923712 + stage: 1 + start: 2022-11-08 16:00:00 +- exclude: coct + finsh: *id136 + source: https://twitter.com/Eskom_SA/status/1589839022008184832 + stage: 2 + start: 2022-11-08 09:00:00 +- finsh: 2022-11-08 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1589284113361797121 + stage: 2 + start: 2022-11-07 22:00:00 +- exclude: coct + finsh: 2022-11-08 04:59:00 + source: https://twitter.com/Eskom_SA/status/1589263017719787521 + stage: 2 + start: 2022-11-07 16:00:00 +- finsh: 2022-11-07 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1588554418265346053 + stage: 2 + start: 2022-11-06 16:00:00 +- exclude: coct + finsh: 2022-11-07 04:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 2 + start: 2022-11-06 16:00:00 +- finsh: 2022-11-06 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1588554418265346053 + stage: 1 + start: 2022-11-06 05:00:00 +- exclude: coct + finsh: 2022-11-06 15:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 1 + start: 2022-11-06 05:00:00 +- finsh: 2022-11-06 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1588554418265346053 + stage: 2 + start: 2022-11-05 22:00:00 +- exclude: coct + finsh: 2022-11-06 04:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 2 + start: 2022-11-05 16:00:00 +- exclude: coct + finsh: 2022-11-05 15:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 1 + start: 2022-11-05 05:00:00 +- finsh: 2022-11-05 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1588554418265346053 + stage: 2 + start: 2022-11-04 22:00:00 +- exclude: coct + finsh: 2022-11-05 04:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 2 + start: 2022-11-04 16:00:00 +- exclude: coct + finsh: 2022-11-04 15:59:00 + source: https://twitter.com/Eskom_SA/status/1588528568325537793 + stage: 1 + start: 2022-11-04 05:00:00 +- finsh: 2022-11-03 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1587516688559316993 + stage: 2 + start: 2022-11-03 22:00:00 +- exclude: coct + finsh: 2022-11-04 04:59:00 + source: https://twitter.com/Eskom_SA/status/1587477699693535232 + stage: 2 + start: 2022-11-03 16:00:00 +- exclude: coct + finsh: 2022-11-03 15:59:00 + source: https://twitter.com/Eskom_SA/status/1587477699693535232 + stage: 1 + start: 2022-11-03 05:00:00 +- finsh: 2022-11-02 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1587516688559316993 + stage: 2 + start: 2022-11-02 22:00:00 +- exclude: coct + finsh: 2022-11-03 04:59:00 + source: https://twitter.com/Eskom_SA/status/1587477699693535232 + stage: 2 + start: 2022-11-02 16:00:00 +- exclude: coct + finsh: 2022-11-02 15:59:00 + source: https://twitter.com/Eskom_SA/status/1587477699693535232 + stage: 1 + start: 2022-11-02 05:00:00 +- finsh: 2022-11-01 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1587516688559316993 + stage: 2 + start: 2022-11-01 22:00:00 +- exclude: coct + finsh: 2022-11-02 04:59:00 + source: https://twitter.com/Eskom_SA/status/1587477699693535232 + stage: 2 + start: 2022-11-01 16:00:00 +- finsh: 2022-11-01 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1586767706572947458 + stage: 2 + start: 2022-10-31 22:00:00 +- finsh: 2022-10-31 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1586767706572947458 + stage: 1 + start: 2022-10-31 16:00:00 +- exclude: coct + finsh: 2022-11-01 04:59:00 + source: https://twitter.com/Eskom_SA/status/1586742081887911937 + stage: 2 + start: 2022-10-31 05:00:00 +- exclude: coct + finsh: 2022-10-30 23:59:00 + source: https://twitter.com/Eskom_SA/status/1585473959541309445 + stage: 2 + start: 2022-10-30 16:00:00 +- exclude: coct + finsh: 2022-10-30 04:59:00 + source: https://twitter.com/Eskom_SA/status/1585473959541309445 + stage: 2 + start: 2022-10-29 16:00:00 +- finsh: 2022-10-30 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540838721028101 + stage: 3 + start: 2022-10-29 16:00:00 +- finsh: 2022-10-29 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540838721028101 + stage: 3 + start: 2022-10-29 12:00:00 +- exclude: coct + finsh: 2022-10-29 15:59:00 + source: https://twitter.com/Eskom_SA/status/1585473959541309445 + stage: 1 + start: 2022-10-29 05:00:00 +- finsh: 2022-10-29 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540835252264961 + stage: 3 + start: 2022-10-28 22:00:00 +- finsh: 2022-10-28 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585985440926015488 + stage: 3 + start: &id137 2022-10-28 20:00:00 +- exclude: coct + finsh: 2022-10-28 23:59:00 + source: https://twitter.com/Eskom_SA/status/1585932159478812672 + stage: 3 + start: 2022-10-28 16:00:00 +- finsh: 2022-10-28 19:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585985440926015488 + stage: 1 + start: &id138 2022-10-28 16:00:00 +- finsh: *id137 + include: coct + source: https://twitter.com/CityofCT/status/1585540835252264961 + stage: 2 + start: 2022-10-28 16:00:00 +- finsh: *id138 + include: coct + source: https://twitter.com/CityofCT/status/1585907114610143233 + stage: 2 + start: &id139 2022-10-28 10:00:00 +- exclude: coct + finsh: 2022-10-28 15:59:00 + source: https://twitter.com/Eskom_SA/status/1585932159478812672 + stage: 2 + start: 2022-10-28 05:00:00 +- finsh: *id139 + include: coct + source: https://twitter.com/CityofCT/status/1585214618443476993 + stage: 1 + start: 2022-10-28 05:00:00 +- finsh: 2022-10-28 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540835252264961 + stage: 4 + start: 2022-10-27 22:00:00 +- exclude: coct + finsh: 2022-10-28 04:59:00 + source: https://twitter.com/Eskom_SA/status/1585473959541309445 + stage: 4 + start: 2022-10-27 16:00:00 +- finsh: 2022-10-27 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540835252264961 + stage: 3 + start: 2022-10-27 16:00:00 +- exclude: coct + finsh: 2022-10-27 15:59:00 + source: https://twitter.com/Eskom_SA/status/1585473959541309445 + stage: 3 + start: 2022-10-27 05:00:00 +- finsh: 2022-10-27 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585540835252264961 + stage: 1 + start: 2022-10-27 05:00:00 +- finsh: 2022-10-27 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585214618443476993 + stage: 4 + start: 2022-10-26 22:00:00 +- finsh: 2022-10-26 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585214618443476993 + stage: 3 + start: 2022-10-26 16:00:00 +- exclude: coct + finsh: 2022-10-27 04:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 4 + start: 2022-10-26 16:00:00 +- finsh: 2022-10-26 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1585214618443476993 + stage: 1 + start: 2022-10-26 05:00:00 +- exclude: coct + finsh: 2022-10-26 15:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 3 + start: 2022-10-26 05:00:00 +- finsh: 2022-10-26 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 4 + start: 2022-10-25 22:00:00 +- exclude: coct + finsh: 2022-10-26 04:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 4 + start: 2022-10-25 16:00:00 +- finsh: 2022-10-25 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 3 + start: 2022-10-25 16:00:00 +- exclude: coct + finsh: 2022-10-25 15:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 3 + start: 2022-10-25 05:00:00 +- finsh: 2022-10-25 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 1 + start: 2022-10-25 05:00:00 +- finsh: 2022-10-25 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 4 + start: 2022-10-24 22:00:00 +- exclude: coct + finsh: 2022-10-25 04:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 4 + start: 2022-10-24 16:00:00 +- finsh: 2022-10-24 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 3 + start: 2022-10-24 16:00:00 +- exclude: coct + finsh: 2022-10-24 15:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 3 + start: 2022-10-24 05:00:00 +- finsh: 2022-10-24 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 1 + start: 2022-10-24 05:00:00 +- exclude: coct + finsh: 2022-10-24 04:59:00 + source: https://twitter.com/eskom_sa/status/1584116620686860288 + stage: 4 + start: &id141 2022-10-23 12:00:00 +- finsh: 2022-10-24 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1584147149377634304 + stage: 4 + start: &id140 2022-10-23 12:00:00 +- finsh: *id140 + include: coct + source: https://twitter.com/CityofCT/status/1583441432718716929 + stage: 3 + start: 2022-10-23 06:00:00 +- finsh: 2022-10-23 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583441432718716929 + stage: 3 + start: 2022-10-22 14:00:00 +- finsh: 2022-10-22 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583441432718716929 + stage: 1 + start: 2022-10-22 06:00:00 +- exclude: coct + finsh: 2022-10-23 04:59:00 + source: https://twitter.com/eskom_sa/status/1583027654034305024 + stage: 2 + start: 2022-10-22 05:00:00 +- finsh: 2022-10-22 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583441432718716929 + stage: 3 + start: 2022-10-21 22:00:00 +- finsh: 2022-10-21 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583070920864067584 + stage: 1 + start: 2022-10-21 16:00:00 +- finsh: 2022-10-21 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583441432718716929 + stage: 1 + start: 2022-10-21 06:00:00 +- finsh: 2022-10-21 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583207733284679681 + stage: 3 + start: &id142 2022-10-20 22:00:00 +- exclude: coct + finsh: *id141 + source: https://twitter.com/eskom_sa/status/1583151276186951681 + stage: 3 + start: 2022-10-20 19:00:00 +- finsh: 2022-10-20 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583207733284679681 + stage: 2 + start: 2022-10-20 16:00:00 +- finsh: *id142 + include: coct + source: https://twitter.com/CityofCT/status/1582387362872451072 + stage: 1 + start: 2022-10-20 16:00:00 +- finsh: 2022-10-20 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1583070920864067584 + stage: 1 + start: &id143 2022-10-20 06:00:00 +- exclude: coct + finsh: 2022-10-21 04:59:00 + source: https://twitter.com/eskom_sa/status/1583027654034305024 + stage: 3 + start: 2022-10-20 05:00:00 +- finsh: *id143 + include: coct + source: https://twitter.com/CityofCT/status/1583047950539714560 + stage: 1 + start: 2022-10-20 05:00:00 +- finsh: 2022-10-20 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582762940058701824 + stage: 3 + start: 2022-10-19 22:00:00 +- exclude: coct + finsh: 2022-10-20 04:59:00 + source: https://twitter.com/Eskom_SA/status/1582744854026592261 + stage: 3 + start: 2022-10-19 16:00:00 +- finsh: 2022-10-19 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582762940058701824 + stage: 1 + start: 2022-10-19 16:00:00 +- finsh: 2022-10-19 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582273479759794178 + stage: 3 + start: 2022-10-19 16:00:00 +- finsh: 2022-10-19 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-19 16:00:00 +- finsh: 2022-10-19 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582273479759794178 + stage: 2 + start: 2022-10-19 06:00:00 +- exclude: coct + finsh: 2022-10-19 05:00:00 + source: https://twitter.com/Eskom_SA/status/1582344269024878593 + stage: 2 + start: 2022-10-19 00:00:00 +- finsh: 2022-10-19 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582387362872451072 + stage: 2 + start: &id144 2022-10-19 00:00:00 +- finsh: 2022-10-18 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582387362872451072 + stage: 4 + start: 2022-10-18 22:00:00 +- finsh: *id144 + include: coct + source: https://twitter.com/CityofCT/status/1582273479759794178 + stage: 4 + start: 2022-10-18 22:00:00 +- finsh: 2022-10-18 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582387362872451072 + stage: 3 + start: 2022-10-18 16:00:00 +- finsh: 2022-10-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-18 16:00:00 +- finsh: 2022-10-18 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1582273479759794178 + stage: 2 + start: 2022-10-18 06:00:00 +- exclude: coct + finsh: 2022-10-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1582344269024878593 + stage: 4 + start: 2022-10-18 05:30:00 +- exclude: coct + finsh: 2022-10-17 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-17 16:00:00 +- finsh: 2022-10-17 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-17 16:00:00 +- finsh: 2022-10-17 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1581250745856184320 + stage: 2 + start: 2022-10-16 14:00:00 +- finsh: 2022-10-16 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1581250745856184320 + stage: 2 + start: 2022-10-15 22:00:00 +- exclude: coct + finsh: 2022-10-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-15 14:00:00 +- finsh: 2022-10-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581602226660773888 + stage: 2 + start: 2022-10-15 14:00:00 +- finsh: 2022-10-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1581240608043446272 + stage: 2 + start: 2022-10-15 14:00:00 +- exclude: coct + finsh: 2022-10-14 23:59:00 + source: https://twitter.com/Eskom_SA/status/1580924287954743297 + stage: 1 + start: 2022-10-14 16:00:00 +- exclude: coct + finsh: 2022-10-13 23:59:00 + source: https://twitter.com/eskom_sa/status/1580186342809513985 + stage: 2 + start: 2022-10-13 16:00:00 +- exclude: coct + finsh: 2022-10-12 23:59:00 + source: https://twitter.com/Eskom_SA/status/1580186342809513985 + stage: 2 + start: 2022-10-12 16:00:00 +- finsh: 2022-10-12 23:59:00 + source: https://twitter.com/Eskom_SA/status/1579066130177527808 + stage: 2 + start: 2022-10-12 16:00:00 +- exclude: coct + finsh: 2022-10-11 23:59:00 + source: https://twitter.com/Eskom_SA/status/1579066130177527808 + stage: 2 + start: 2022-10-11 16:00:00 +- finsh: 2022-10-11 23:59:00 + source: https://twitter.com/Eskom_SA/status/1579066130177527808 + stage: 2 + start: 2022-10-11 16:00:00 +- exclude: coct + finsh: 2022-10-10 23:59:00 + source: https://twitter.com/Eskom_SA/status/1579066130177527808 + stage: 2 + start: 2022-10-10 16:00:00 +- finsh: 2022-10-10 23:59:00 + source: https://twitter.com/Eskom_SA/status/1579066130177527808 + stage: 2 + start: 2022-10-10 16:00:00 +- finsh: 2022-10-08 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 3 + start: 2022-10-07 22:00:00 +- finsh: 2022-10-07 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 2 + start: 2022-10-07 14:00:00 +- exclude: coct + finsh: 2022-10-08 04:59:00 + source: https://twitter.com/Eskom_SA/status/1578352089746792449 + stage: 3 + start: &id145 2022-10-07 12:00:00 +- finsh: 2022-10-07 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 1 + start: 2022-10-07 06:00:00 +- finsh: 2022-10-07 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 3 + start: 2022-10-06 22:00:00 +- finsh: 2022-10-06 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 2 + start: 2022-10-06 14:00:00 +- finsh: 2022-10-06 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 1 + start: 2022-10-06 06:00:00 +- exclude: coct + finsh: *id145 + source: https://twitter.com/Eskom_SA/status/1577655123043565569 + stage: 3 + start: 2022-10-06 05:00:00 +- finsh: 2022-10-06 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 4 + start: 2022-10-05 22:00:00 +- exclude: coct + finsh: 2022-10-06 04:59:00 + source: https://twitter.com/Eskom_SA/status/1577655123043565569 + stage: 4 + start: &id148 2022-10-05 16:00:00 +- finsh: 2022-10-05 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577684658707390466 + stage: 3 + start: &id146 2022-10-05 14:00:00 +- finsh: 2022-10-05 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577329243729661953 + stage: 2 + start: 2022-10-05 06:00:00 +- finsh: *id146 + include: coct + source: https://twitter.com/CityofCT/status/1576581589206970368 + stage: 1 + start: 2022-10-05 06:00:00 +- finsh: 2022-10-05 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577329243729661953 + stage: 4 + start: 2022-10-04 22:00:00 +- finsh: 2022-10-04 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1577329243729661953 + stage: 3 + start: &id147 2022-10-04 18:00:00 +- finsh: *id147 + include: coct + source: https://twitter.com/CityofCT/status/1576951889731940357 + stage: 2 + start: 2022-10-04 14:00:00 +- finsh: 2022-10-04 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1576951889731940357 + stage: 1 + start: 2022-10-04 06:00:00 +- finsh: 2022-10-04 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1576581585293299713 + stage: 3 + start: 2022-10-03 22:00:00 +- finsh: 2022-10-03 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1576581585293299713 + stage: 2 + start: 2022-10-03 14:00:00 +- finsh: 2022-10-03 13:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1576581585293299713 + stage: 1 + start: 2022-10-03 06:00:00 +- exclude: coct + finsh: *id148 + source: https://twitter.com/Eskom_SA/status/1577325348055912452 + stage: 4 + start: &id149 2022-10-02 16:00:00 +- exclude: coct + finsh: *id149 + source: https://twitter.com/Eskom_SA/status/1575457504137543680 + stage: 3 + start: &id151 2022-10-02 15:00:00 +- finsh: 2022-10-03 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1576581585293299713 + stage: 3 + start: &id150 2022-10-02 05:00:00 +- finsh: *id150 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 3 + start: 2022-10-01 22:00:00 +- finsh: 2022-10-01 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 2 + start: 2022-10-01 12:00:00 +- finsh: 2022-10-01 11:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 1 + start: 2022-10-01 07:00:00 +- exclude: coct + finsh: *id151 + source: https://twitter.com/eskom_sa/status/1575457504137543680 + stage: 3 + start: 2022-10-01 05:00:00 +- finsh: 2022-10-01 06:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 3 + start: 2022-10-01 05:00:00 +- finsh: 2022-10-01 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 4 + start: 2022-09-30 22:00:00 +- finsh: 2022-09-30 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 2 + start: 2022-09-30 06:00:00 +- finsh: 2022-09-30 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 4 + start: 2022-09-30 00:00:00 +- finsh: 2022-09-29 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575120685621469185 + stage: 2 + start: 2022-09-29 16:00:00 +- finsh: 2022-09-29 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575485965983895553 + stage: 2 + start: 2022-09-29 06:00:00 +- finsh: 2022-09-29 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575181709762764803 + stage: 3 + start: 2022-09-29 00:00:00 +- exclude: coct + finsh: 2022-10-01 04:59:00 + source: https://twitter.com/Eskom_SA/status/1575457504137543680 + stage: 4 + start: 2022-09-28 16:00:00 +- finsh: 2022-09-28 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575181709762764803 + stage: 2 + start: 2022-09-28 16:00:00 +- exclude: coct + finsh: 2022-09-28 23:59:00 + source: https://twitter.com/Eskom_SA/status/1575100892671791105 + stage: 4 + start: 2022-09-28 16:00:00 +- finsh: 2022-09-28 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575120685621469185 + stage: 1 + start: 2022-09-28 06:00:00 +- exclude: coct + finsh: 2022-09-28 15:59:00 + source: https://twitter.com/eskom_sa/status/1575100892671791105 + stage: 3 + start: 2022-09-28 00:00:00 +- finsh: 2022-09-28 05:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1575120685621469185 + stage: 3 + start: 2022-09-28 00:00:00 +- exclude: coct + finsh: 2022-09-27 23:59:00 + source: https://twitter.com/Eskom_SA/status/1574014612097454080 + stage: 4 + start: 2022-09-27 16:00:00 +- finsh: 2022-09-27 23:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1574662172461899780 + stage: 3 + start: 2022-09-27 16:00:00 +- finsh: 2022-09-27 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1574662172461899780 + stage: 1 + start: &id152 2022-09-27 06:00:00 +- finsh: *id152 + include: coct + source: https://twitter.com/CityofCT/status/1574032206259015684 + stage: 1 + start: 2022-09-27 05:00:00 +- exclude: coct + finsh: 2022-09-27 15:59:00 + source: https://twitter.com/eskom_sa/status/1574014612097454080 + stage: 3 + start: 2022-09-27 00:00:00 +- exclude: coct + finsh: 2022-09-26 23:59:00 + source: https://twitter.com/Eskom_SA/status/1574014612097454080 + stage: 4 + start: 2022-09-26 16:00:00 +- finsh: 2022-09-27 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1574032206259015684 + stage: 3 + start: 2022-09-26 16:00:00 +- finsh: 2022-09-26 15:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1574032206259015684 + stage: 1 + start: 2022-09-26 05:00:00 +- exclude: coct + finsh: 2022-09-26 15:59:00 + source: https://twitter.com/Eskom_SA/status/1574014612097454080 + stage: 3 + start: 2022-09-25 05:00:00 +- finsh: 2022-09-26 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1574032206259015684 + stage: 3 + start: 2022-09-25 05:00:00 +- finsh: 2022-09-25 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 4 + start: 2022-09-24 22:00:00 +- finsh: 2022-09-25 04:59:00 + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 4 + start: 2022-09-24 22:00:00 +- exclude: coct + finsh: 2022-09-25 04:59:00 + source: https://twitter.com/Eskom_SA/status/1573292761985552384 + stage: 4 + start: 2022-09-24 05:00:00 +- finsh: 2022-09-24 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 2 + start: 2022-09-24 05:00:00 +- finsh: 2022-09-24 21:59:00 + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 2 + start: 2022-09-24 05:00:00 +- finsh: 2022-09-24 04:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 5 + start: 2022-09-23 22:00:00 +- finsh: 2022-09-24 04:59:00 + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 5 + start: 2022-09-23 22:00:00 +- finsh: 2022-09-23 21:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 4 + start: 2022-09-23 20:00:00 +- finsh: 2022-09-23 19:59:00 + include: coct + source: https://twitter.com/CityofCT/status/1573310766345748482 + stage: 3 + start: 2022-09-23 06:00:00 +- exclude: coct + finsh: 2022-09-24 04:59:00 + source: https://twitter.com/Eskom_SA/status/1573292761985552384 + stage: 5 + start: 2022-09-22 16:00:00 +- finsh: 2022-09-24 05:00:00 + source: https://twitter.com/Eskom_SA/status/1572966243069476866 + stage: 5 + start: 2022-09-22 16:00:00 +- finsh: 2022-09-21 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-21 05:00:00 +- finsh: 2022-09-20 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-20 05:00:00 +- finsh: 2022-09-22 23:59:00 + source: https://twitter.com/Eskom_SA/status/1572254543668281344 + stage: 5 + start: 2022-09-20 00:00:00 +- finsh: 2022-09-19 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-19 05:00:00 +- finsh: 2022-09-19 04:59:00 + source: https://twitter.com/Eskom_SA/status/1570735203718688770 + stage: 3 + start: 2022-09-18 05:00:00 +- finsh: 2022-09-18 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-18 05:00:00 +- finsh: 2022-09-19 23:59:00 + source: https://twitter.com/Eskom_SA/status/1571328907005120513 + stage: 6 + start: 2022-09-18 04:16:00 +- finsh: 2022-09-20 23:59:00 + source: https://twitter.com/Eskom_SA/status/1571328907005120513 + stage: 6 + start: 2022-09-18 04:16:00 +- finsh: 2022-09-17 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-17 16:00:00 +- finsh: 2022-09-19 04:59:00 + source: https://twitter.com/Eskom_SA/status/1571036958608195584 + stage: 5 + start: 2022-09-17 10:00:00 +- finsh: 2022-09-17 09:59:00 + source: https://twitter.com/Eskom_SA/status/1570735203718688770 + stage: 4 + start: 2022-09-17 00:00:00 +- finsh: 2022-09-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1570033811450372097 + stage: 2 + start: 2022-09-17 00:00:00 +- finsh: 2022-09-17 09:59:00 + source: https://twitter.com/Eskom_SA/status/1570735203718688770 + stage: 4 + start: 2022-09-16 13:00:00 +- finsh: 2022-09-18 04:59:00 + source: https://twitter.com/Eskom_SA/status/1570735203718688770 + stage: 4 + start: 2022-09-16 13:00:00 +- finsh: 2022-09-16 23:59:00 + source: https://twitter.com/eskom_sa/status/1568197939926810624 + stage: 2 + start: 2022-09-16 00:00:00 +- finsh: 2022-09-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1569623551853871106 + stage: 2 + start: 2022-09-15 05:00:00 +- finsh: 2022-09-15 23:59:00 + source: https://twitter.com/eskom_sa/status/1568197939926810624 + stage: 2 + start: 2022-09-15 00:00:00 +- finsh: 2022-09-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1570033811450372097 + stage: 4 + start: 2022-09-14 15:00:00 +- finsh: 2022-09-14 23:59:00 + source: https://twitter.com/eskom_sa/status/1568197939926810624 + stage: 2 + start: 2022-09-14 00:00:00 +- finsh: 2022-09-15 04:59:00 + source: https://twitter.com/Eskom_SA/status/1569623551853871106 + stage: 4 + start: 2022-09-13 10:00:00 +- finsh: 2022-09-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568892284397051906 + stage: 2 + start: 2022-09-13 05:00:00 +- finsh: 2022-09-13 23:59:00 + source: https://twitter.com/eskom_sa/status/1568197939926810624 + stage: 2 + start: 2022-09-13 00:00:00 +- finsh: 2022-09-13 04:59:00 + source: https://twitter.com/Eskom_SA/status/1568892284397051906 + stage: 3 + start: 2022-09-12 05:00:00 +- finsh: 2022-09-16 23:59:00 + source: https://twitter.com/eskom_sa/status/1568197939926810624 + stage: 2 + start: 2022-09-12 05:00:00 +- finsh: 2022-09-12 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 2 + start: 2022-09-12 05:00:00 +- finsh: 2022-09-12 04:59:00 + source: https://twitter.com/Eskom_SA/status/1568494585113976835 + stage: 4 + start: 2022-09-12 00:00:00 +- finsh: 2022-09-12 04:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 3 + start: 2022-09-12 00:00:00 +- finsh: 2022-09-11 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568494585113976835 + stage: 4 + start: 2022-09-11 00:00:00 +- finsh: 2022-09-11 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 3 + start: 2022-09-11 00:00:00 +- finsh: 2022-09-12 04:59:00 + source: https://twitter.com/Eskom_SA/status/1568494585113976835 + stage: 4 + start: 2022-09-10 10:00:00 +- finsh: 2022-09-10 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568494585113976835 + stage: 4 + start: 2022-09-10 10:00:00 +- finsh: 2022-09-10 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567843314522591234 + stage: 2 + start: 2022-09-10 05:00:00 +- finsh: 2022-09-10 09:59:00 + source: https://twitter.com/Eskom_SA/status/1568494585113976835 + stage: 3 + start: 2022-09-10 00:00:00 +- finsh: 2022-09-10 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 3 + start: 2022-09-10 00:00:00 +- finsh: 2022-09-09 23:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 3 + start: 2022-09-09 14:00:00 +- finsh: 2022-09-09 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-09 05:00:00 +- finsh: 2022-09-09 13:59:00 + source: https://twitter.com/Eskom_SA/status/1568197939926810624 + stage: 2 + start: 2022-09-09 00:00:00 +- finsh: 2022-09-09 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567843314522591234 + stage: 2 + start: 2022-09-09 00:00:00 +- finsh: 2022-09-08 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-08 16:00:00 +- finsh: 2022-09-08 23:59:00 + source: https://twitter.com/Eskom_SA/status/1567843314522591234 + stage: 2 + start: 2022-09-08 05:00:00 +- finsh: 2022-09-08 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-08 05:00:00 +- finsh: 2022-09-07 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-07 05:00:00 +- finsh: 2022-09-06 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-09-06 16:00:00 +- finsh: 2022-08-21 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-08-21 05:00:00 +- finsh: 2022-08-20 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-08-20 05:00:00 +- finsh: 2022-08-19 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-08-19 05:00:00 +- finsh: 2022-08-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1559838433920667648 + stage: 2 + start: 2022-08-18 16:00:00 +- finsh: 2022-08-18 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-08-18 05:00:00 +- finsh: 2022-08-17 22:00:00 + source: https://twitter.com/Eskom_SA/status/1567113378304237569 + stage: 2 + start: 2022-08-17 16:00:00 +- finsh: 2022-08-17 23:59:00 + source: https://twitter.com/Eskom_SA/status/1559838433920667648 + stage: 2 + start: 2022-08-17 16:00:00 +- finsh: 2022-08-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1559514946664267778 + stage: 2 + start: 2022-08-16 18:00:00 +- finsh: 2022-08-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1559514946664267778 + stage: 2 + start: 2022-08-16 16:00:00 +- finsh: 2022-08-07 23:59:00 + source: https://twitter.com/Eskom_SA/status/1555541078475939841 + stage: 2 + start: 2022-08-07 16:00:00 +- finsh: 2022-08-06 23:59:00 + source: https://twitter.com/Eskom_SA/status/1555541078475939841 + stage: 2 + start: 2022-08-06 16:00:00 +- finsh: 2022-08-05 23:59:00 + source: https://twitter.com/Eskom_SA/status/1554880679825051651 + stage: 2 + start: 2022-08-05 05:00:00 +- finsh: 2022-08-04 23:59:00 + source: https://twitter.com/Eskom_SA/status/1554880679825051651 + stage: 4 + start: 2022-08-04 16:00:00 +- finsh: 2022-08-04 23:59:00 + source: https://twitter.com/Eskom_SA/status/1554735509175517184 + stage: 2 + start: 2022-08-04 16:00:00 +- finsh: 2022-08-04 16:00:00 + source: https://twitter.com/Eskom_SA/status/1554880679825051651 + stage: 2 + start: 2022-08-04 05:00:00 +- finsh: 2022-08-03 23:59:00 + source: https://twitter.com/Eskom_SA/status/1554735509175517184 + stage: 2 + start: 2022-08-03 16:00:00 +- finsh: 2022-07-25 23:59:00 + source: https://twitter.com/Eskom_SA/status/1549001233675046914 + stage: 1 + start: 2022-07-25 16:00:00 +- finsh: 2022-07-24 23:59:00 + source: https://twitter.com/Eskom_SA/status/1550075190914195457 + stage: 1 + start: 2022-07-24 16:00:00 +- finsh: 2022-07-23 23:59:00 + source: https://twitter.com/Eskom_SA/status/1550075190914195457 + stage: 1 + start: 2022-07-23 16:00:00 +- finsh: 2022-07-22 23:59:00 + source: https://twitter.com/Eskom_SA/status/1550075190914195457 + stage: 2 + start: 2022-07-22 16:00:00 +- finsh: 2022-07-22 23:59:00 + source: https://twitter.com/Eskom_SA/status/1549001233675046914 + stage: 1 + start: 2022-07-22 16:00:00 +- finsh: 2022-07-21 23:59:00 + source: https://twitter.com/Eskom_SA/status/1550075190914195457 + stage: 2 + start: 2022-07-21 16:00:00 +- finsh: 2022-07-20 23:59:00 + source: https://twitter.com/Eskom_SA/status/1549001233675046914 + stage: 2 + start: 2022-07-20 16:00:00 +- finsh: 2022-07-19 23:59:00 + source: https://twitter.com/Eskom_SA/status/1549001233675046914 + stage: 2 + start: 2022-07-19 16:00:00 +- finsh: 2022-07-18 23:59:00 + source: https://twitter.com/Eskom_SA/status/1549001233675046914 + stage: 2 + start: 2022-07-18 16:00:00 +- finsh: 2022-07-18 16:00:00 + source: https://twitter.com/Eskom_SA/status/1547565723718860802?s=20&t=xseAiZD1Hn_3EugYgMAwBg + stage: 1 + start: 2022-07-18 05:00:00 +- finsh: 2022-07-17 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547923518234382338?s=20&t=0U1prvvPo4QHQx1onIEg6Q + stage: 2 + start: 2022-07-17 16:00:00 +- finsh: 2022-07-17 22:00:00 + source: https://twitter.com/Eskom_SA/status/1547923518234382338?s=20&t=0U1prvvPo4QHQx1onIEg6Q + stage: 2 + start: 2022-07-17 16:00:00 +- finsh: 2022-07-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547923518234382338?s=20&t=0U1prvvPo4QHQx1onIEg6Q + stage: 2 + start: 2022-07-16 16:00:00 +- finsh: 2022-07-16 22:00:00 + source: https://twitter.com/Eskom_SA/status/1547923518234382338?s=20&t=0U1prvvPo4QHQx1onIEg6Q + stage: 2 + start: 2022-07-16 16:00:00 +- finsh: 2022-07-16 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 3 + start: 2022-07-16 16:00:00 +- finsh: 2022-07-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1547565723718860802?s=20&t=xseAiZD1Hn_3EugYgMAwBg + stage: 1 + start: 2022-07-16 07:00:00 +- finsh: 2022-07-16 16:00:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 2 + start: 2022-07-16 07:00:00 +- finsh: 2022-07-16 07:00:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 1 + start: 2022-07-16 00:00:00 +- finsh: 2022-07-15 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547923518234382338?s=20&t=0U1prvvPo4QHQx1onIEg6Q + stage: 3 + start: 2022-07-15 05:00:00 +- finsh: 2022-07-15 05:00:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 2 + start: 2022-07-15 00:00:00 +- finsh: 2022-07-14 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547565723718860802?s=20&t=xseAiZD1Hn_3EugYgMAwBg + stage: 4 + start: 2022-07-14 16:00:00 +- finsh: 2022-07-14 16:00:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 3 + start: 2022-07-14 05:00:00 +- finsh: 2022-07-14 05:00:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 1 + start: 2022-07-14 00:00:00 +- finsh: 2022-07-13 23:59:00 + source: https://twitter.com/Eskom_SA/status/1547189452161916928?s=20&t=2MH_-k43RExp6ISPIpi-xw + stage: 3 + start: 2022-07-13 05:00:00 diff --git a/test-files/test_different_sources.yaml b/test-files/test_different_sources.yaml new file mode 100644 index 00000000..7e706e63 --- /dev/null +++ b/test-files/test_different_sources.yaml @@ -0,0 +1,73 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test what happens with different sources +# ---------------------------------------- +# Check that multiple sources are combined properly + +--- +changes: + # Present in first, updated in second + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1/1 + # Present in first, not in second + - stage: 0 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1/2 + # present in both + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1/3 +historical_changes: [] + +--- +changes: + # Present in first, updated in second + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2/1 + # present in both + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1/3 + # not present in first, present in second + - stage: 2 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T04:00:00 + source: https://example.com/2/4 +historical_changes: [] + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2/1 + - stage: 0 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1/2 + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1/3 + - stage: 2 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T04:00:00 + source: https://example.com/2/4 +historical_changes: [] diff --git a/test-files/test_future_conflicts.yaml b/test-files/test_future_conflicts.yaml new file mode 100644 index 00000000..087c5d55 --- /dev/null +++ b/test-files/test_future_conflicts.yaml @@ -0,0 +1,51 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for future conflicts +# ------------------------- +# +# This file tests that if there are conflicts in the future, the newer file +# should take precedence + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 +historical_changes: [] +--- +changes: + - stage: 4 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 +historical_changes: [] +--- +changes: + - stage: 4 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_include_exclude.yaml b/test-files/test_include_exclude.yaml new file mode 100644 index 00000000..fd7cdcd1 --- /dev/null +++ b/test-files/test_include_exclude.yaml @@ -0,0 +1,86 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test edge cases with `include` and `exclude` +# -------------------------------------------- +# `include` and `exclude` can be used to specify that a certain change only +# affects a certain area. Two changes should never overlap, *unless* they're +# affecting different areas. + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + exclude: coct + + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:30:00 + source: https://example.com/1 + include: coct + +historical_changes: [] + +--- +changes: + - stage: 4 + start: 2000-01-01T00:30:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 + exclude: coct + + - stage: 4 + start: 2000-01-01T00:30:00 + finsh: 2000-01-01T02:30:00 + source: https://example.com/2 + include: coct + +historical_changes: [] + +--- +# Note that there is technically duplicate information here: both `include: +# coct` and `exclude: coct` have stage 1 scheduled from 00:00 to 00:30. These +# _could_ be combined together (since the include and exclude are mutually +# exclusive and exhaustive). +# +# However, it's probably not a good idea since `include` and `exclude` are +# converted to regex behind the scenes, and there's not an easy intepretation +# for what it means for a regex to be mutually exclusive and exhaustive. +# +# So it's best to treat changes containing different `include` and `exclude` as +# completely separate items. This is what is done here. +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:30:00 + source: https://example.com/1 + exclude: coct + - stage: 4 + start: 2000-01-01T00:30:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 + exclude: coct + + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:30:00 + source: https://example.com/1 + include: coct + - stage: 4 + start: 2000-01-01T00:30:00 + finsh: 2000-01-01T02:30:00 + source: https://example.com/2 + include: coct + +historical_changes: [] diff --git a/test-files/test_information_gaps_are_kept.yaml b/test-files/test_information_gaps_are_kept.yaml new file mode 100644 index 00000000..5ca428fa --- /dev/null +++ b/test-files/test_information_gaps_are_kept.yaml @@ -0,0 +1,63 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test that information gaps are kept +# ----------------------------------- +# +# Sometimes, there just won't be information about a certain region of time. +# It's unavoidable unfortunately. This test checks that this case is handled +# properly + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + # This region of time is not specified + # start: 2000-01-01T01:00:00 + # finsh: 2000-01-01T02:00:00 + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + # This region of time is not specified + # start: 2000-01-01T01:00:00 + # finsh: 2000-01-01T01:30:00 + - stage: 2 + start: 2000-01-01T01:30:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + # This region of time is not specified + # start: 2000-01-01T01:00:00 + # finsh: 2000-01-01T01:30:00 + - stage: 2 + start: 2000-01-01T01:30:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_iso8601_second_granularity.yaml b/test-files/test_iso8601_second_granularity.yaml new file mode 100644 index 00000000..27d0b0fd --- /dev/null +++ b/test-files/test_iso8601_second_granularity.yaml @@ -0,0 +1,60 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for down-to-the-second granularity +# --------------------------------------- +# There's nothing particularly weird about this test just that the ISO +# timestamps go down to the second. + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:00:01 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T00:00:01 + finsh: 2000-01-01T00:00:02 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:02 + finsh: 2000-01-01T00:00:03 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T00:00:03 + finsh: 2000-01-01T00:00:04 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:00:01 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T00:00:01 + finsh: 2000-01-01T00:00:02 + source: https://example.com/1 + - stage: 1 + start: 2000-01-01T00:00:02 + finsh: 2000-01-01T00:00:03 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T00:00:03 + finsh: 2000-01-01T00:00:04 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_iso8601_trickery.yaml b/test-files/test_iso8601_trickery.yaml new file mode 100644 index 00000000..e406c9a8 --- /dev/null +++ b/test-files/test_iso8601_trickery.yaml @@ -0,0 +1,58 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for ISO8601 trickery +# ------------------------- +# +# In an old version of eskom-calendar, the start datetime for event `N+1` had +# to be strictly greater than the finsh datetime for event `N`, so this test +# checks that these are handled properly. + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T01:59:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 3 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:59:00 + source: https://example.com/2 + - stage: 5 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T03:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/1 + - stage: 3 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:59:00 + source: https://example.com/2 + - stage: 5 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T03:59:00 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_malformed_schema.yaml b/test-files/test_malformed_schema.yaml new file mode 100644 index 00000000..9eb5b1eb --- /dev/null +++ b/test-files/test_malformed_schema.yaml @@ -0,0 +1,182 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for malformed schema +# ------------------------- +# +# Unfortunately, sometimes a malformed YAML doc slips through into the main +# branch. If the document isn't valid YAML, then that should still be caught, +# but this file just checks for documents that are valid YAML but don't obey +# the correct schema, which is: +# +# Document: +# changes: list of `change` objects +# historical_changes: list of `change` objects +# +# change object: +# stage: integer +# start: ISO8601 timestamp +# finsh: ISO8601 timestamp +# source: string +# include: optional string +# exclude: optional string +# include_regex: optional string +# exclude_regex: optional string + +--- +# Correctly formatted. Every other document besides this one should be excluded +# from the final file +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T01:59:00 + source: https://example.com/1 +historical_changes: [] + +--- +# historical_changes is missing +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 + - stage: 6 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T01:59:00 + source: https://example.com/2 + +--- +# changes is missing +historical_changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 + - stage: 6 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T01:59:00 + source: https://example.com/2 + +--- +# change objects don't have the required fields +changes: + - start: 2000-01-01T00:00:00 + # stage: 6 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects don't have the required fields +changes: + - stage: 6 + # start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects don't have the required fields +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + # finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects don't have the required fields +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + # source: https://example.com/2 +historical_changes: [] + +--- +# change objects have extra field `finish` +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finish: 2000-01-01T00:59:00 # `finsh`, not `finish`! + source: https://example.com/2 +historical_changes: [] + +--- +# change objects have extra field `src` +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + src: https://example.com/2 +historical_changes: [] + +--- +# change objects have extra field `start_time` +changes: + - stage: 6 + start_time: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects have extra field `ls_stage` +changes: + - ls_stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects datetime is missing the time +changes: + - stage: 6 + start: 2000-01-01 # T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# change objects datetime is missing the time +changes: + - stage: 6 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01 # T00:59:00 + source: https://example.com/2 +historical_changes: [] + +--- +# The entire document is just malformed +foo: + - bar: 6 + baz: "abc" + - car: 2 + caz: "123" +joo: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:59:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T01:59:00 + source: https://example.com/1 +historical_changes: [] diff --git a/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:43:48.yaml b/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:43:48.yaml new file mode 100644 index 00000000..c4779a66 --- /dev/null +++ b/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:43:48.yaml @@ -0,0 +1,25 @@ +# How to edit this file: +# You should add items to `changes`. For example, here's a template that you +# can copy and paste just below the line `changes:`: +# ``` +# - stage: +# start: +# finsh: +# source: +# exclude: +# include: +# ``` +# See the README.md for more details +--- +changes: + - stage: 3 + start: 2023-09-04T10:00:00 + finsh: 2023-09-04T22:00:00 + source: https://twitter.com/CityofCT/status/1698744757000831345 + include: coct + - stage: 5 + start: 2023-09-04T22:00:00 + finsh: 2023-09-05T05:00:00 + source: https://twitter.com/CityofCT/status/1698744757000831345 + include: coct +historical_changes: [] diff --git a/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:44:49.yaml b/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:44:49.yaml new file mode 100644 index 00000000..58bbfbf1 --- /dev/null +++ b/test-files/test_manually_specified_0a23554a97d61568a39bd99d132e7ff1837993ef_2023-03-10T17:44:49.yaml @@ -0,0 +1,25 @@ +# How to edit this file: +# You should add items to `changes`. For example, here's a template that you +# can copy and paste just below the line `changes:`: +# ``` +# - stage: +# start: +# finsh: +# source: +# exclude: +# include: +# ``` +# See the README.md for more details +--- +changes: + - stage: 5 + start: 2023-09-04T18:00:00 + finsh: 2023-09-04T22:00:00 + source: https://twitter.com/CityofCT/status/1698744757000831345 + include: coct + - stage: 6 + start: 2023-09-04T22:00:00 + finsh: 2023-09-05T05:00:00 + source: https://twitter.com/CityofCT/status/1698744757000831345 + include: coct +historical_changes: [] diff --git a/test-files/test_multiple_documents_combined_properly.yaml b/test-files/test_multiple_documents_combined_properly.yaml new file mode 100644 index 00000000..3cb96c9a --- /dev/null +++ b/test-files/test_multiple_documents_combined_properly.yaml @@ -0,0 +1,90 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Check that multiple documents in sequence are combined properly +# --------------------------------------------------------------- +# This isn't super trivial, since later documents could "split" a change in +# two, or cause an earlier document to have it's start/end time adjusted + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T04:00:00 + finsh: 2000-01-01T07:00:00 + source: https://example.com/3 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T05:00:00 + finsh: 2000-01-01T06:00:00 + source: https://example.com/4 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:30:00 + source: https://example.com/5 +historical_changes: [] + +--- +changes: + - stage: 1 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T00:30:00 + source: https://example.com/5 + + - stage: 1 + start: 2000-01-01T00:30:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + + - stage: 1 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 + + - stage: 1 + start: 2000-01-01T04:00:00 + finsh: 2000-01-01T05:00:00 + source: https://example.com/3 + + - stage: 1 + start: 2000-01-01T05:00:00 + finsh: 2000-01-01T06:00:00 + source: https://example.com/4 + + - stage: 1 + start: 2000-01-01T06:00:00 + finsh: 2000-01-01T07:00:00 + source: https://example.com/3 + +historical_changes: [] diff --git a/test-files/test_no_loadshedding.yaml b/test-files/test_no_loadshedding.yaml new file mode 100644 index 00000000..e57dd1bc --- /dev/null +++ b/test-files/test_no_loadshedding.yaml @@ -0,0 +1,39 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test when there's no loadshedding +# --------------------------------- +# It does happen occasionaly + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + - stage: 0 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: [] +historical_changes: [] + +--- +changes: [] +historical_changes: [] diff --git a/test-files/test_only_source_changes.yaml b/test-files/test_only_source_changes.yaml new file mode 100644 index 00000000..e382d3fc --- /dev/null +++ b/test-files/test_only_source_changes.yaml @@ -0,0 +1,52 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for only source changes +# ---------------------------- +# Ensure nothing weird happens when everything stays the same, but the source +# of information gets updated. + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 4 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 4 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_stage_zero.yaml b/test-files/test_stage_zero.yaml new file mode 100644 index 00000000..f51cb5e0 --- /dev/null +++ b/test-files/test_stage_zero.yaml @@ -0,0 +1,70 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Test for stage zero being kept +# ------------------------------ +# "Stage zero" represents there being no loadshedding, but that is information +# in and of itself, and is different from there just being no information about +# loadshedding. This tests ensurees that stage zero is no omitted from the +# record. + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + - stage: 0 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + - stage: 0 + start: 2000-01-01T02:30:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T04:00:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + - stage: 2 + start: 2000-01-01T00:00:00 + finsh: 2000-01-01T01:00:00 + source: https://example.com/1 + - stage: 0 + start: 2000-01-01T01:00:00 + finsh: 2000-01-01T02:00:00 + source: https://example.com/1 + - stage: 2 + start: 2000-01-01T02:00:00 + finsh: 2000-01-01T02:30:00 + source: https://example.com/1 + - stage: 0 + start: 2000-01-01T02:30:00 + finsh: 2000-01-01T03:00:00 + source: https://example.com/2 + - stage: 2 + start: 2000-01-01T03:00:00 + finsh: 2000-01-01T04:00:00 + source: https://example.com/2 +historical_changes: [] diff --git a/test-files/test_with_funky_dates.yaml b/test-files/test_with_funky_dates.yaml new file mode 100644 index 00000000..7edf868c --- /dev/null +++ b/test-files/test_with_funky_dates.yaml @@ -0,0 +1,86 @@ +# YAML Historical Loadshedding Test Document +# ========================================== +# +# This is a YAML test file that contains multiple YAML documents. Each document +# starts with `---`. This file is used to test that historical loadshedding +# calculations are correct. +# +# If there are N documents, then the first N-1 each specify a historical state +# of loadshedding, with the most recent documents towards the end of the list. +# The last document is the result of the previous N-1 documents being combined +# together. +# +# Dates are weird, make sure they're okay +# --------------------------------------- + +--- +changes: + # over midnight + - stage: 1 + start: 2000-01-01T22:00:00 + finsh: 2000-01-02T01:00:00 + source: https://example.com/1 + # over a month boundary + - stage: 1 + start: 2000-01-31T22:00:00 + finsh: 2000-02-01T01:00:00 + source: https://example.com/1 + # over a year boundary + - stage: 1 + start: 2000-12-31T22:00:00 + finsh: 2001-01-01T01:00:00 + source: https://example.com/1 +historical_changes: [] + +--- +changes: + # over midnight + - stage: 1 + start: 2000-01-01T23:00:00 + finsh: 2000-01-02T02:00:00 + source: https://example.com/2 + # over a month boundary + - stage: 1 + start: 2000-01-31T23:00:00 + finsh: 2000-02-01T02:00:00 + source: https://example.com/2 + # over a year boundary + - stage: 1 + start: 2000-12-31T23:00:00 + finsh: 2001-01-01T02:00:00 + source: https://example.com/2 +historical_changes: [] + +--- +changes: + # over midnight + - stage: 1 + start: 2000-01-01T22:00:00 + finsh: 2000-01-01T23:00:00 + source: https://example.com/1 + - stage: 1 + start: 2000-01-01T23:00:00 + finsh: 2000-01-02T02:00:00 + source: https://example.com/2 + + # over a month boundary + - stage: 1 + start: 2000-01-31T22:00:00 + finsh: 2000-01-31T23:00:00 + source: https://example.com/1 + - stage: 1 + start: 2000-01-31T23:00:00 + finsh: 2000-02-01T02:00:00 + source: https://example.com/2 + + # over a year boundary + - stage: 1 + start: 2000-12-31T22:00:00 + finsh: 2000-12-31T23:00:00 + source: https://example.com/1 + - stage: 1 + start: 2000-12-31T23:00:00 + finsh: 2001-01-01T02:00:00 + source: https://example.com/2 + +historical_changes: []