From 35285ff91320f63764ab5257b50facfe31389354 Mon Sep 17 00:00:00 2001 From: lbesnard Date: Tue, 19 Aug 2025 16:07:22 +1000 Subject: [PATCH 1/3] Feat: CSIRO Underway data --- .../bin/vessel_underway_csiro.py | 1 + .../config/dataset/vessel_underway_csiro.json | 1046 +++++++++++++++++ notebooks/vessel_underway_csiro.ipynb | 870 ++++++++++++++ pyproject.toml | 3 +- 4 files changed, 1919 insertions(+), 1 deletion(-) create mode 120000 aodn_cloud_optimised/bin/vessel_underway_csiro.py create mode 100644 aodn_cloud_optimised/config/dataset/vessel_underway_csiro.json create mode 100644 notebooks/vessel_underway_csiro.ipynb diff --git a/aodn_cloud_optimised/bin/vessel_underway_csiro.py b/aodn_cloud_optimised/bin/vessel_underway_csiro.py new file mode 120000 index 00000000..579d8acc --- /dev/null +++ b/aodn_cloud_optimised/bin/vessel_underway_csiro.py @@ -0,0 +1 @@ +generic_launcher.py \ No newline at end of file diff --git a/aodn_cloud_optimised/config/dataset/vessel_underway_csiro.json b/aodn_cloud_optimised/config/dataset/vessel_underway_csiro.json new file mode 100644 index 00000000..d997f7a7 --- /dev/null +++ b/aodn_cloud_optimised/config/dataset/vessel_underway_csiro.json @@ -0,0 +1,1046 @@ +{ + "dataset_name": "vessel_underway_csiro", + "logger_name": "vessel_underway_csiro", + "cloud_optimised_format": "parquet", + "run_settings": { + "paths": [ + { + "s3_uri": "s3://imos-data/IMOS_UDW", + "filter": [ + ".*\\.nc" + ], + "year_range": [] + } + ], + "cluster": { + "mode": "local", + "restart_every_path": false + }, + "clear_existing_data": true, + "raise_error": false, + "coiled_cluster_options": { + "n_workers": [ + 1, + 20 + ], + "scheduler_vm_types": "m7i-flex.large", + "worker_vm_types": "m7i-flex.large", + "allow_ingress_from": "me", + "compute_purchase_option": "spot_with_fallback", + "worker_options": { + "nthreads": 4, + "memory_limit": "8GB" + } + }, + "batch_size": 5, + "s3_bucket_opts": { + "input_data": { + "bucket": "imos-data", + "s3_fs_opts": { + "key": "minioadmin", + "secret": "minioadmin", + "client_kwargs": { + "endpoint_url": "http://localhost:9000" + } + } + }, + "output_data": { + "bucket": "aodn-cloud-optimised", + "s3_fs_opts": { + "key": "minioadmin", + "secret": "minioadmin", + "client_kwargs": { + "endpoint_url": "http://localhost:9000" + } + } + } + }, + "force_previous_parquet_deletion": false + }, + "metadata_uuid": null, + "schema": { + "history": { + "type": "string", + "long_name": "History entry" + }, + "historyIdent": { + "type": "string", + "long_name": "Person making history entry" + }, + "historyDate": { + "type": "double", + "long_name": "Date of history entry", + "units": "yyyymmdd UTC" + }, + "rawLatitude": { + "type": "double", + "long_name": "Raw Latitude", + "units": "degree_north" + }, + "latitude": { + "type": "double", + "long_name": "Latitude", + "units": "degree_north" + }, + "latitudeQC": { + "type": "float" + }, + "rawLongitude": { + "type": "double", + "long_name": "Raw Longitude", + "units": "degree_east" + }, + "longitude": { + "type": "double", + "long_name": "Longitude", + "units": "degree_east" + }, + "longitudeQC": { + "type": "float" + }, + "rawAlt": { + "type": "double", + "long_name": "Raw Altitude", + "units": "m" + }, + "alt": { + "type": "double", + "long_name": "Altitude", + "units": "m" + }, + "altQC": { + "type": "float" + }, + "rawSpeedOG": { + "type": "double", + "long_name": "Raw Speed Over Ground", + "units": "knot" + }, + "speedOG": { + "type": "double", + "long_name": "Speed Over Ground", + "units": "knot" + }, + "speedOGQC": { + "type": "float" + }, + "rawCourseOG": { + "type": "double", + "long_name": "Raw Course Over Ground", + "units": "degree" + }, + "courseOG": { + "type": "double", + "long_name": "Course Over Ground", + "units": "degree" + }, + "courseOGQC": { + "type": "float" + }, + "rawShipHeading": { + "type": "double", + "long_name": "Raw Ship Heading", + "units": "degree" + }, + "shipHeading": { + "type": "double", + "long_name": "Ship Heading", + "units": "degree" + }, + "shipHeadingQC": { + "type": "float" + }, + "rawDepth": { + "type": "double", + "long_name": "Raw Depth", + "units": "m" + }, + "depth": { + "type": "double", + "long_name": "Depth", + "units": "m" + }, + "depthQC": { + "type": "float" + }, + "longitudinalWaterSpeed": { + "type": "double", + "long_name": "Longitudinal Water Speed", + "units": "knot" + }, + "longitudinalWaterSpeedQC": { + "type": "float" + }, + "transverseWaterSpeed": { + "type": "double", + "long_name": "Transverse Water Speed", + "units": "knot" + }, + "transverseWaterSpeedQC": { + "type": "float" + }, + "longitudinalGroundSpeed": { + "type": "double", + "long_name": "Longitudinal Ground Speed", + "units": "knot" + }, + "longitudinalGroundSpeedQC": { + "type": "float" + }, + "transverseGroundSpeed": { + "type": "double", + "long_name": "Transverse Ground Speed", + "units": "knot" + }, + "transverseGroundSpeedQC": { + "type": "float" + }, + "lockOnWater": { + "type": "float" + }, + "lockonGround": { + "type": "float" + }, + "rawPortAirTemp": { + "type": "double", + "long_name": "Raw Port Air Temperature", + "units": "degC" + }, + "portAirTemp": { + "type": "double", + "long_name": "Port Air Temperature", + "units": "degC" + }, + "portAirTempQC": { + "type": "float" + }, + "rawPortHumidity": { + "type": "double", + "long_name": "Raw Port Humidity", + "units": "%" + }, + "portHumidity": { + "type": "double", + "long_name": "Port Humidity", + "units": "%" + }, + "portHumidityQC": { + "type": "float" + }, + "rawStbdAirTemp": { + "type": "double", + "long_name": "Raw Starboard Air Temperature", + "units": "degC" + }, + "stbdAirTemp": { + "type": "double", + "long_name": "Starboard Air Temperature", + "units": "degC" + }, + "stbdAirTempQC": { + "type": "float" + }, + "rawStbdHumidity": { + "type": "double", + "long_name": "Raw Starboard Humidity", + "units": "%" + }, + "stbdHumidity": { + "type": "double", + "long_name": "Starboard Humidity", + "units": "%" + }, + "stbdHumidityQC": { + "type": "float" + }, + "rawMaxWindGust": { + "type": "double", + "long_name": "Raw Maximum Wind Gust", + "units": "knot" + }, + "maxWindGust": { + "type": "double", + "long_name": "Maximum Wind Gust", + "units": "knot" + }, + "maxWindGustQC": { + "type": "float" + }, + "rawPortRelWindDir": { + "type": "double", + "long_name": "Raw Port Relative Wind Direction", + "units": "degree" + }, + "portRelWindDir": { + "type": "double", + "long_name": "Port Relative Wind Direction", + "units": "degree" + }, + "portRelWindDirQC": { + "type": "float" + }, + "rawPortRelWindSpeed": { + "type": "double", + "long_name": "Raw Port Relative Wind Speed", + "units": "knot" + }, + "portRelWindSpeed": { + "type": "double", + "long_name": "Port Relative Wind Speed", + "units": "knot" + }, + "portRelWindSpeedQC": { + "type": "float" + }, + "rawPortTrueWindDir": { + "type": "double", + "long_name": "Raw Port True Wind Direction", + "units": "degree" + }, + "portTrueWindDir": { + "type": "double", + "long_name": "Port True Wind Direction", + "units": "degree" + }, + "portTrueWindDirQC": { + "type": "float" + }, + "rawPortTrueWindSpeed": { + "type": "double", + "long_name": "Raw Port True Wind Speed", + "units": "knot" + }, + "portTrueWindSpeed": { + "type": "double", + "long_name": "Port True Wind Speed", + "units": "knot" + }, + "portTrueWindSpeedQC": { + "type": "float" + }, + "rawStbdRelWindDir": { + "type": "double", + "long_name": "Raw Starboard Relative Wind Direction", + "units": "degree" + }, + "stbdRelWindDir": { + "type": "double", + "long_name": "Starboard Relative Wind Direction", + "units": "degree" + }, + "stbdRelWindDirQC": { + "type": "float" + }, + "rawStbdRelWindSpeed": { + "type": "double", + "long_name": "Raw Starboard Relative Wind Speed", + "units": "knot" + }, + "stbdRelWindSpeed": { + "type": "double", + "long_name": "Starboard Relative Wind Speed", + "units": "knot" + }, + "stbdRelWindSpeedQC": { + "type": "float" + }, + "rawStbdTrueWindDir": { + "type": "double", + "long_name": "Raw Starboard True Wind Direction", + "units": "degree" + }, + "stbdTrueWindDir": { + "type": "double", + "long_name": "Starboard True Wind Direction", + "units": "degree" + }, + "stbdTrueWindDirQC": { + "type": "float" + }, + "rawStbdTrueWindSpeed": { + "type": "double", + "long_name": "Raw Starboard True Wind Speed", + "units": "knot" + }, + "stbdTrueWindSpeed": { + "type": "double", + "long_name": "Starboard True Wind Speed", + "units": "knot" + }, + "stbdTrueWindSpeedQC": { + "type": "float" + }, + "rawAtmPressure": { + "type": "double", + "long_name": "Raw Atmospheric Pressure", + "units": "mbar" + }, + "atmPressure": { + "type": "double", + "long_name": "Atmospheric Pressure", + "units": "mbar" + }, + "atmPressureQC": { + "type": "float" + }, + "rawUltrasonicRelWindSpeed": { + "type": "double", + "long_name": "Raw Ultrasonic Relative Wind Speed", + "units": "knot" + }, + "ultrasonicRelWindSpeed": { + "type": "double", + "long_name": "Ultrasonic Relative Wind Speed", + "units": "knot" + }, + "ultrasonicRelWindSpeedQC": { + "type": "float" + }, + "rawUltrasonicRelWindDir": { + "type": "double", + "long_name": "Raw Ultrasonic Relative Wind Direction", + "units": "degree" + }, + "ultrasonicRelWindDir": { + "type": "double", + "long_name": "Ultrasonic Relative Wind Direction", + "units": "degree" + }, + "ultrasonicRelWindDirQC": { + "type": "float" + }, + "rawUltrasonicTrueWindSpeed": { + "type": "double", + "long_name": "Raw Ultrasonic True Wind Speed", + "units": "knot" + }, + "ultrasonicTrueWindSpeed": { + "type": "double", + "long_name": "Ultrasonic True Wind Speed", + "units": "knot" + }, + "ultrasonicTrueWindSpeedQC": { + "type": "float" + }, + "rawUltrasonicTrueWindDir": { + "type": "double", + "long_name": "Raw Ultrasonic True Wind Direction", + "units": "degree" + }, + "ultrasonicTrueWindDir": { + "type": "double", + "long_name": "Ultrasonic True Wind Direction", + "units": "degree" + }, + "ultrasonicTrueWindDirQC": { + "type": "float" + }, + "rawRain": { + "type": "double", + "long_name": "Raw Accumulated Hourly Rain", + "units": "mm" + }, + "rain": { + "type": "double", + "long_name": "Accumulated Hourly Rain", + "units": "mm" + }, + "rainQC": { + "type": "float" + }, + "rawPortRadiometer": { + "type": "double", + "long_name": "Raw Port Radiometer", + "units": "W/m^2" + }, + "portRadiometer": { + "type": "double", + "long_name": "Port Radiometer", + "units": "W/m^2" + }, + "portRadiometerQC": { + "type": "float" + }, + "rawStbdRadiometer": { + "type": "double", + "long_name": "Raw Starboard Radiometer", + "units": "W/m^2" + }, + "stbdRadiometer": { + "type": "double", + "long_name": "Starboard Radiometer", + "units": "W/m^2" + }, + "stbdRadiometerQC": { + "type": "float" + }, + "rawPortPyranometer": { + "type": "double", + "long_name": "Raw Port Pyranometer", + "units": "W/m^2" + }, + "portPyranometer": { + "type": "double", + "long_name": "Port Pyranometer", + "units": "W/m^2" + }, + "portPyranometerQC": { + "type": "float" + }, + "rawStbdPyranometer": { + "type": "double", + "long_name": "Raw Starboard Pyranometer", + "units": "W/m^2" + }, + "stbdPyranometer": { + "type": "double", + "long_name": "Starboard Pyranometer", + "units": "W/m^2" + }, + "stbdPyranometerQC": { + "type": "float" + }, + "rawPortPAR": { + "type": "double", + "long_name": "Raw Port PAR", + "units": "uE/m^2/s" + }, + "portPAR": { + "type": "double", + "long_name": "Port PAR", + "units": "uE/m^2/s" + }, + "portPARQC": { + "type": "float" + }, + "rawStbdPAR": { + "type": "double", + "long_name": "Raw Starboard PAR", + "units": "uE/m^2/s" + }, + "stbdPAR": { + "type": "double", + "long_name": "Starboard PAR", + "units": "uE/m^2/s" + }, + "stbdPARQC": { + "type": "float" + }, + "rawGyroHeading": { + "type": "double", + "long_name": "Raw Gyro Heading", + "units": "degree" + }, + "gyroHeading": { + "type": "double", + "long_name": "Gyro Heading", + "units": "degree" + }, + "gyroHeadingQC": { + "type": "float" + }, + "equTemp": { + "type": "double", + "long_name": "Equilibrator Water Temperature", + "units": "degC" + }, + "equTempQC": { + "type": "float" + }, + "XCO2": { + "type": "double", + "long_name": "XCO2", + "units": "ppm" + }, + "XCO2QC": { + "type": "float" + }, + "waterVapour": { + "type": "double", + "long_name": "Water Vapour", + "units": "mmol/mole" + }, + "waterVapourQC": { + "type": "float" + }, + "licorPressure": { + "type": "double", + "long_name": "Licor Pressure", + "units": "hPa" + }, + "licorPressureQC": { + "type": "float" + }, + "equPressure": { + "type": "double", + "long_name": "Equilibrator Pressure", + "units": "hPa" + }, + "equPressureQC": { + "type": "float" + }, + "waterFlow": { + "type": "double", + "long_name": "Water Flow", + "units": "l/min" + }, + "waterFlowQC": { + "type": "float" + }, + "licorFlow": { + "type": "double", + "long_name": "Licor flow", + "units": "ml/min" + }, + "licorFlowQC": { + "type": "float" + }, + "ventFlow": { + "type": "double", + "long_name": "Vent Flow", + "units": "ml/min" + }, + "ventFlowQC": { + "type": "float" + }, + "condTemp": { + "type": "double", + "long_name": "Condenser Temperature", + "units": "degC" + }, + "condTempQC": { + "type": "float" + }, + "pumpSpeed": { + "type": "double", + "long_name": "CO2 Pump Speed", + "units": "l/min" + }, + "pumpSpeedQC": { + "type": "float" + }, + "rawIsarWaterTemp": { + "type": "double", + "long_name": "Raw ISAR Water Temperature", + "units": "degC" + }, + "isarWaterTemp": { + "type": "double", + "long_name": "ISAR Water Temperature", + "units": "degC" + }, + "isarWaterTempQC": { + "type": "float" + }, + "portKeelExtension": { + "type": "double", + "long_name": "Port Drop Keel Extension", + "units": "m" + }, + "portKeelExtensionQC": { + "type": "float" + }, + "starboardKeelExtension": { + "type": "double", + "long_name": "Starboard Drop Keel Extension", + "units": "m" + }, + "starboardKeelExtensionQC": { + "type": "float" + }, + "blackCarbonConc": { + "type": "double", + "long_name": "Concentration of Black Carbon", + "units": "ug/m^3" + }, + "blackCarbonConcQC": { + "type": "float" + }, + "airFlow": { + "type": "double", + "long_name": "Air Flow Rate", + "units": "L/h" + }, + "airFlowQC": { + "type": "float" + }, + "absorptionPhotometerStatus": { + "type": "float" + }, + "o3Ozone1": { + "type": "double", + "long_name": "Ozone1", + "units": "ppb" + }, + "o3Ozone1QC": { + "type": "float" + }, + "ozone1Meterflags": { + "type": "float" + }, + "o3Ozone2": { + "type": "double", + "long_name": "Ozone2", + "units": "ppb" + }, + "o3Ozone2QC": { + "type": "float" + }, + "ozone2Meterflags": { + "type": "float" + }, + "co2Dry": { + "type": "double", + "long_name": "CO2 Dry Concentration", + "units": "ppm" + }, + "co2DryQC": { + "type": "float" + }, + "ch4Dry": { + "type": "double", + "long_name": "CH4 Dry Concentration", + "units": "ppm" + }, + "ch4DryQC": { + "type": "float" + }, + "h2O": { + "type": "double", + "long_name": "Water Concentration Percentage", + "units": "dimensionless" + }, + "h2OQC": { + "type": "float" + }, + "inletBearing": { + "type": "double", + "long_name": "Air Sampling Inlet Bearing", + "units": "degree" + }, + "inletBearingQC": { + "type": "float" + }, + "trackingBearing": { + "type": "double", + "long_name": "Tracking Target Bearing", + "units": "degree" + }, + "trackingBearingQC": { + "type": "float" + }, + "trackingMode": { + "type": "float" + }, + "rawWaterTemp": { + "type": "double", + "long_name": "Raw Water Temperature", + "units": "degC" + }, + "waterTemp": { + "type": "double", + "long_name": "Water Temperature", + "units": "degC" + }, + "waterTempQC": { + "type": "float" + }, + "rawTsgSensorTemp": { + "type": "double", + "long_name": "Raw TSG Sensor Temperature", + "units": "degC" + }, + "tsgSensorTemp": { + "type": "double", + "long_name": "TSG Sensor Temperature", + "units": "degC" + }, + "tsgSensorTempQC": { + "type": "float" + }, + "rawSalinity": { + "type": "double", + "long_name": "Raw Salinity", + "units": "PSU" + }, + "salinity": { + "type": "double", + "long_name": "Salinity", + "units": "PSU" + }, + "salinityQC": { + "type": "float" + }, + "rawTsgFlow": { + "type": "double", + "long_name": "Raw TSG Flow Rate", + "units": "l/min" + }, + "tsgFlow": { + "type": "double", + "long_name": "TSG Flow Rate", + "units": "l/min" + }, + "tsgFlowQC": { + "type": "float" + }, + "rawFluorescence": { + "type": "double", + "long_name": "Raw Fluorescence", + "units": "dimensionless" + }, + "fluorescence": { + "type": "double", + "long_name": "Fluorescence", + "units": "dimensionless" + }, + "fluorescenceQC": { + "type": "float" + }, + "rawLabMainFlow": { + "type": "double", + "long_name": "Raw UWY Lab Main Flow", + "units": "l/min" + }, + "labMainFlow": { + "type": "double", + "long_name": "UWY Lab Main Flow", + "units": "l/min" + }, + "labMainFlowQC": { + "type": "float" + }, + "rawLabBranchFlow": { + "type": "double", + "long_name": "Raw UWY Lab Branch Flow", + "units": "l/min" + }, + "labBranchFlow": { + "type": "double", + "long_name": "UWY Lab Branch Flow", + "units": "l/min" + }, + "labBranchFlowQC": { + "type": "float" + }, + "rawDo": { + "type": "double", + "long_name": "Raw Oxygen at the Optode", + "units": "uM/L" + }, + "do": { + "type": "double", + "long_name": "Oxygen at the Optode", + "units": "uM/L" + }, + "doQC": { + "type": "float" + }, + "rawDoSaturation": { + "type": "double", + "long_name": "Raw Oxygen Saturation at the Optode", + "units": "%" + }, + "doSaturation": { + "type": "double", + "long_name": "Oxygen Saturation at the Optode", + "units": "%" + }, + "doSaturationQC": { + "type": "float" + }, + "rawOptodeWaterTemp": { + "type": "double", + "long_name": "Raw Water Temperature at the Optode", + "units": "degC" + }, + "optodeWaterTemp": { + "type": "double", + "long_name": "Water Temperature at the Optode", + "units": "degC" + }, + "optodeWaterTempQC": { + "type": "float" + }, + "stbdRainQC": { + "type": "float" + }, + "rawPortRain": { + "type": "float", + "long_name": "Raw Port Accumulated Hourly Rain", + "units": "mm" + }, + "rawStbdRain": { + "type": "float", + "long_name": "Raw Starboard Accumulated Hourly Rain", + "units": "mm" + }, + "portRain": { + "type": "float", + "long_name": "Port Accumulated Hourly Rain", + "units": "mm" + }, + "rawFluorometerFlow": { + "type": "float", + "long_name": "Raw Water Flow in Fluorometer Branch", + "units": "l/min" + }, + "fluorescenceConcentration": { + "type": "float", + "long_name": "Fluorescence Concentration", + "units": "ug/L" + }, + "fluorescenceConcentrationQC": { + "type": "float" + }, + "modeoftheAirSamplingInlet": { + "type": "float" + }, + "bPhase": { + "type": "float", + "long_name": "Optode bPhase", + "units": "dimensionless" + }, + "bPhaseQC": { + "type": "float" + }, + "portRainQC": { + "type": "float" + }, + "TIME": { + "type": "timestamp[ns]" + } + }, + "aws_opendata_registry": { + "Name": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Description": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Documentation": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Contact": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "ManagedBy": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "UpdateFrequency": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Tags": [ + "FILL UP MANUALLY - CHECK DOCUMENTATION" + ], + "License": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Resources": [ + { + "Description": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "ARN": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Region": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Type": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Explore": [ + "FILL UP MANUALLY - CHECK DOCUMENTATION" + ] + } + ], + "DataAtWork": { + "Tutorials": [ + { + "Title": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "URL": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "Services": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "AuthorName": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "AuthorURL": "FILL UP MANUALLY - CHECK DOCUMENTATION" + } + ], + "Tools & Applications": [ + { + "Title": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "URL": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "AuthorName": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "AuthorURL": "FILL UP MANUALLY - CHECK DOCUMENTATION" + } + ], + "Publications": [ + { + "Title": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "URL": "FILL UP MANUALLY - CHECK DOCUMENTATION", + "AuthorName": "FILL UP MANUALLY - CHECK DOCUMENTATION" + } + ] + } + }, + "schema_transformation": { + "drop_variables": [ + "historyIdent", + "historyDate", + "history" + ], + "add_variables": { + "filename": { + "source": "@filename", + "schema": { + "type": "string", + "units": "1", + "long_name": "Filename of the source file" + } + }, + "voyage": { + "source": "@global_attribute:Voyage", + "schema": { + "type": "string", + "units": "1", + "long_name": "Name of the voyage" + } + }, + "ship_name": { + "source": "@global_attribute:Ship", + "schema": { + "type": "string", + "units": "1", + "long_name": "Name of the vessel" + } + }, + "timestamp": { + "source": "@partitioning:time_extent", + "schema": { + "type": "int64", + "units": "1", + "long_name": "Partition timestamp" + } + }, + "polygon": { + "source": "@partitioning:spatial_extent", + "schema": { + "type": "string", + "units": "1", + "long_name": "Spatial partition polygon" + } + } + }, + "partitioning": [ + { + "source_variable": "voyage" + }, + { + "source_variable": "timestamp", + "type": "time_extent", + "time_extent": { + "time_varname": "TIME", + "partition_period": "Q" + } + }, + { + "source_variable": "polygon", + "type": "spatial_extent", + "spatial_extent": { + "lat_varname": "latitude", + "lon_varname": "longitude", + "spatial_resolution": 10 + } + } + ], + "global_attributes": { + "delete": [ + "geospatial_lat_max", + "geospatial_lat_min", + "geospatial_lon_max", + "geospatial_lon_min", + "date_created" + ], + "set": { + "title": "CSIRO Underway" + } + } + } +} diff --git a/notebooks/vessel_underway_csiro.ipynb b/notebooks/vessel_underway_csiro.ipynb new file mode 100644 index 00000000..ccd16b4e --- /dev/null +++ b/notebooks/vessel_underway_csiro.ipynb @@ -0,0 +1,870 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5cd860d7", + "metadata": {}, + "source": [ + "## Access Vessel Underway Csiro (Parquet)\n", + "This Jupyter notebook demonstrates how to access and plot vessel_underway_csiro data, available as a [Parquet](https://parquet.apache.org) dataset stored on S3.\n", + "\n", + "🔗 More information about the dataset is available [in the AODN metadata catalogue](https://catalogue-imos.aodn.org.au/geonetwork/srv/eng/catalog.search#/metadata/None).\n", + "\n", + "📌 The source of truth for this notebook is maintained on [GitHub](https://github.com/aodn/aodn_cloud_optimised/tree/main/notebooks/vessel_underway_csiro.ipynb).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7f45a6ff", + "metadata": {}, + "outputs": [], + "source": [ + "dataset_name = \"vessel_underway_csiro\"" + ] + }, + { + "cell_type": "markdown", + "id": "8d3ac421", + "metadata": {}, + "source": [ + "## Install/Update packages and Load common functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ea788c1", + "metadata": {}, + "outputs": [], + "source": [ + "import os, requests, importlib.util\n", + "\n", + "open('setup.py', 'w').write(requests.get('https://raw.githubusercontent.com/aodn/aodn_cloud_optimised/main/notebooks/setup.py').text)\n", + "\n", + "spec = importlib.util.spec_from_file_location(\"setup\", \"setup.py\")\n", + "setup = importlib.util.module_from_spec(spec)\n", + "spec.loader.exec_module(setup)\n", + "\n", + "setup.install_requirements()\n", + "setup.load_dataquery()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8e48b8c7", + "metadata": {}, + "outputs": [], + "source": [ + "from DataQuery import GetAodn" + ] + }, + { + "cell_type": "markdown", + "id": "ee9e8edb", + "metadata": {}, + "source": [ + "# Understanding the Dataset" + ] + }, + { + "cell_type": "markdown", + "id": "674d9433", + "metadata": {}, + "source": [ + "## Understanding Parquet Partitioning\n", + "\n", + "Parquet files can be **partitioned** by one or more columns, which means the data is physically organised into folders based on the values in those columns. This is similar to how databases use indexes to optimise query performance.\n", + "\n", + "Partitioning enables **faster filtering**: when you query data using a partitioned column, only the relevant subset of files needs to be read—improving performance significantly.\n", + "\n", + "For example, if a dataset is partitioned by `\"site_code\"`, `\"timestamp\"`, and `\"polygon\"`, filtering on `\"site_code\"` allows the system to skip unrelated files entirely.\n", + "\n", + "In this notebook, the `GetAodn` class includes built-in methods to efficiently filter data by **time** and **latitude/longitude** using the **timestamp** and **polygon** partitions. Other partitions can be used for filtering via the `scalar_filter`.\n", + "\n", + "Any filtering on columns that are **not** partitioned can be significantly slower, as all files may need to be scanned. However, the `GetAodn` class provides a `scalar_filter` method that lets you apply these filters at load time—before the data is fully read—helping reduce the size of the resulting DataFrame.\n", + "\n", + "Once the dataset is loaded, further filtering using Pandas is efficient and flexible.\n", + "\n", + "See further below in the notebook for examples of how to filter the data effectively.\n", + "\n", + "To view the actual partition columns for this dataset, run:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "eec82f5a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 25.1 ms, sys: 3.67 ms, total: 28.8 ms\n", + "Wall time: 8.05 s\n" + ] + } + ], + "source": [ + "aodn = GetAodn(bucket_name=\"aodn-cloud-optimised\", prefix=\"\", s3_fs_opts={ \"client_kwargs\": {\"endpoint_url\": \"http://127.0.0.1:9000\"}, \"key\": \"minioadmin\", \"secret\":\"minioadmin\"})\n", + "dname = f'{dataset_name}.parquet'\n", + "%time aodn_dataset = aodn.get_dataset(dname)" + ] + }, + { + "cell_type": "markdown", + "id": "cfbd0127-ce9b-456c-b4ac-d3690ef60ee9", + "metadata": {}, + "source": [ + "### aodn_dataset.dataset.partitioning.schema" + ] + }, + { + "cell_type": "markdown", + "id": "cb453660", + "metadata": {}, + "source": [ + "## List unique partition values" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8fef38d5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['in2023_v05', 'in2019_v01']\n", + "CPU times: user 470 µs, sys: 0 ns, total: 470 µs\n", + "Wall time: 397 µs\n" + ] + } + ], + "source": [ + "%%time\n", + "unique_partition_value = aodn_dataset.get_unique_partition_values('voyage')\n", + "print(list(unique_partition_value)[0:2]) # showing a subset only" + ] + }, + { + "cell_type": "markdown", + "id": "db0b5300", + "metadata": {}, + "source": [ + "## Visualise Spatial Extent of the dataset\n", + "This section plots the polygons representing the areas where data is available. It helps to identify and create a bounding box around the regions containing data." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fa1d18c5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/lbesnard/miniforge3/envs/AodnCloudOptimised/lib/python3.12/site-packages/cartopy/mpl/feature_artist.py:144: UserWarning: facecolor will have no effect as it has been defined as \"never\".\n", + " warnings.warn('facecolor will have no effect as it has been '\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcEAAAK8CAYAAACX7wRqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjvZJREFUeJzs3Xd4VGXexvHv1EwmyUwKqZRQQ0cUEbAhRbErYsOOZVdEFPvq7lpee1tsiGUVK+qioiB2BCxUQaT3XpKQ3qee9w+WrIEASUyYJHN/risX5JTn/M6TmbnndJNhGAYiIiJhyBzqAkREREJFISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISj14pRTTuGUU06p07wmk4kHH3ywXuuRmnnrrbcwmUxs2bIl1KU0mAcffBCTyVRlWNu2bbnmmmtCU5A0KgrBJmj58uVceOGFpKen43A4aNmyJaeeeiovvvhigy531apVPPjggyH5wNyyZQsmk+mgP0888USt23zsscf47LPP6r/YakyePJnnnnvuiCyrIS1dupQrrriC1q1bExERQXx8PEOHDmXSpEkEAoGQ1VVWVsaDDz7I7NmzQ1aDNE3WUBcgtTN37lwGDRpEmzZtuOGGG0hJSWH79u3Mnz+f559/nrFjxzbYsletWsVDDz3EKaecQtu2bauM+/bbbxtsuX80cuRIzjzzzAOGH3300bVu67HHHuPCCy/k/PPPr4fKDm3y5MmsWLGCcePGNfiyGsq///1vbrzxRpKTk7nyyivp1KkTxcXFzJw5k+uuu47du3dz3333haS2srIyHnroIYAa7ZFYu3YtZrO2AUQh2OQ8+uijuN1uFi1aRGxsbJVx2dnZoSkKsNvtR2Q5xxxzDFdcccURWZb8z/z587nxxhsZMGAAX375JTExMZXjxo0bx6+//sqKFStCWGHtREREhLoEaST0VaiJ2bhxI927dz8gAAGSkpKq/G4ymbj55pt5//336dy5Mw6Hgz59+vDjjz9WmW7r1q3cdNNNdO7cmcjISBISErjooouq7PZ86623uOiiiwAYNGhQ5W7Ifbuf9j8m6PV6uf/+++nTpw9ut5uoqChOOukkZs2aVS/9cDA//PADZrOZ+++/v8rwyZMnYzKZmDhxIrC3b0pLS3n77bcr1+WPx4h27tzJtddeS3JyMhEREXTv3p0333yzSpuzZ8/GZDLxn//8h0cffZRWrVrhcDgYMmQIGzZsqJzulFNOYcaMGWzdurVyWftvSe9v0qRJDB48mKSkJCIiIujWrVtl7X/Utm1bzj77bH7++WeOO+44HA4H7du355133jlg2pUrVzJ48GAiIyNp1aoVjzzyCMFg8HBdCsBDDz2EyWTi/fffrxKA+xx77LFV+q+0tJQ77rijcrdp586deeaZZ9j/oTU1Xc9ff/2VYcOG0aJFCyIjI2nXrh3XXnstsHdXeWJiYpU6D3ecef9jgvuOjf7yyy/cfvvtJCYmEhUVxfDhw9mzZ88B83/11VecdNJJREVFERMTw1lnncXKlSsP1YXSSGlLsIlJT09n3rx5rFixgh49ehx2+jlz5vDRRx9xyy23EBERwcsvv8zpp5/OwoULK+dftGgRc+fO5dJLL6VVq1Zs2bKFiRMncsopp7Bq1SqcTicnn3wyt9xyCy+88AL33XcfXbt2Baj8d39FRUX8+9//ZuTIkdxwww0UFxfzxhtvMGzYMBYuXEjv3r3rtP5lZWXk5OQcMDw2Nhar1crgwYO56aabePzxxzn//PM55phj2L17N2PHjmXo0KHceOONALz77rtcf/31HHfccfzlL38BoEOHDgBkZWXRv3//yi8RiYmJfPXVV1x33XUUFRUdsEvziSeewGw2c+edd1JYWMhTTz3F5ZdfzoIFCwD4+9//TmFhITt27GD8+PEAREdHH3I9J06cSPfu3Tn33HOxWq1Mnz6dm266iWAwyJgxY6pMu2HDBi688EKuu+46rr76at58802uueYa+vTpQ/fu3QHIzMxk0KBB+P1+/va3vxEVFcVrr71GZGRkjfp85syZnHzyybRp0+aw0xuGwbnnnsusWbO47rrr6N27N9988w133XUXO3furOyDmq5ndnY2p512GomJifztb38jNjaWLVu28OmnnwKQmJjIxIkTGT16NMOHD+eCCy4AoFevXoetdX9jx44lLi6OBx54gC1btvDcc89x880389FHH1VO8+6773L11VczbNgwnnzyScrKypg4cSInnngiv/3222G/4EgjY0iT8u233xoWi8WwWCzGgAEDjLvvvtv45ptvDK/Xe8C0gAEYv/76a+WwrVu3Gg6Hwxg+fHjlsLKysgPmnTdvngEY77zzTuWw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PklhYSERERGV13jt7+yzz+bTTz9l+PDhnHXWWWzevJlXXnmFbt26VfshWlNLlizhvffeO2B4hw4dGDBgABUVFVx99dV06tSJRx99tHJdp0+fzqhRo1i+fHllmPfp04fvv/+ef/3rX6SlpdGuXTv69evHE088waxZs+jXrx833HAD3bp1Iy8vjyVLlvD999+Tl5dX67r79OnDRx99xO23307fvn2Jjo7mnHPOqXba0047DbvdzjnnnMNf//pXSkpKeP3110lKSjpgS7+m7r77bt59911OP/10br311spLJNLT01m2bNlh5z/++OOZMGECN910E126dKlyx5jZs2czbdo0HnnkEQDOOeccBg0axN///ne2bNnCUUcdxbfffsvnn3/OuHHjKremarqeb7/9Ni+//DLDhw+nQ4cOFBcX8/rrr+NyuSrvHhQZGUm3bt346KOPyMjIID4+nh49etToMqLacLlcTJw4kSuvvJJjjjmGSy+9lMTERLZt28aMGTM44YQTDgh/aeRCcUqq1N1XX31lXHvttUaXLl2M6Ohow263Gx07djTGjh1rZGVlVZkWMMaMGWO89957RqdOnYyIiAjj6KOPPuASh/z8fGPUqFFGixYtjOjoaGPYsGHGmjVrDjiN3DAM4/XXXzfat29vWCyWKpdL7H+JRDAYNB577DEjPT29crlffPGFcfXVVx9wqQD1cInEvjr3ndL+x0sBDMMwfv31V8NqtRqjR4+uHLZmzRrj5JNPNiIjI6u0YRiGkZWVZYwZM8Zo3bq1YbPZjJSUFGPIkCHGa6+9VjnNvkskpkyZUm2tkyZNqhxWUlJiXHbZZUZsbKwBHPZyiWnTphm9evUyHA6H0bZtW+PJJ5803nzzzQMuZ0hPTzfOOuusA+bf/+9hGIaxbNkyY+DAgYbD4TBatmxpPPzww8Ybb7xx2Esk/mjx4sXGZZddZqSlpRk2m82Ii4szhgwZYrz99ttGIBConK64uNi47bbbKqfr1KmT8fTTT1e5/KCm67lkyRJj5MiRRps2bYyIiAgjKSnJOPvss6tc+mMYhjF37lyjT58+ht1ur/Kaqs0lEvtfhrHvb7z/e2bWrFnGsGHDDLfbbTgcDqNDhw7GNddcc0BN0viZDKOejp5Lo2MymRgzZoy+mYqIHISOCYqISNhSCIqISNhSCIqISNjS2aHNmA73iogcmrYERUQkbCkERUQkbCkERUQkbCkERUQkbDXpEPzxxx8555xzSEtLw2Qy8dlnn1WO8/l83HPPPfTs2ZOoqCjS0tK46qqr2LVrV5U28vLyuPzyy3G5XMTGxnLdddcdcFuv119/nfT0dI4++ujKp4UDzJ49G5PJVO1PZmZmg677n3WovgN48MEH6dKlC1FRUcTFxTF06NAq6w7qu4P13R/deOONmEwmnnvuuSrD1XfV990111xzwDqdfvrpVaZR3x38dbd69WrOPfdc3G43UVFR9O3bl23btlWOr6ioYMyYMSQkJBAdHc2IESPIysqq0sa0adPIyMigc+fOfPHFF5XDt2zZctC+mz9/foOtd0Nr0meHlpaWctRRR3HttddywQUXVBlXVlbGkiVL+Oc//8lRRx1Ffn4+t956K+eeey6//vpr5XSXX345u3fv5rvvvsPn8zFq1Cj+8pe/MHnyZAC2bdvGU089xYcffsjOnTsZNWoUq1atqrKstWvXHvAcserup9mYHKrvYO8zB1966SXat29PeXk548eP57TTTmPDhg2VT59Q31Xfd/tMnTqV+fPnk5aWdsA49d3B++7000+vchPt/Z8ZqL6rvu82btzIiSeeyHXXXcdDDz2Ey+Vi5cqVOByOymluu+02ZsyYwZQpU3C73dx8881ccMEF/PLLL8DeG5KPGTOGSZMmYRgG1157beU9Xvf5/vvv6d69e5Vl73+f4SYltHdtqz+AMXXq1ENOs3DhQgMwtm7dahiGYaxateqA+wV+9dVXhslkMnbu3GkYhmEsX77cOPbYY42SkhJj06ZNRtu2bSun3Xdfwfz8/HpfnyOpJn1XWFhoAMb3339vGIb6bp+D9d2OHTuMli1bGitWrDDS09ON8ePHV45T3+1VXd9dffXVxnnnnXfQedR3e1XXd5dccolxxRVXHHSegoICw2azVbnX7erVqw3AmDdvnmEYe9/n6enpxp49e4w9e/YYbdu2NYqKigzD+N89cX/77bd6X59QatK7Q2ursLAQk8lEbGwssPcxQ7GxsZXP4gMYOnQoZrO5chdKjx496NWrF263m+7du1feKT+ceL1eXnvtNdxuN0cddRSgvjuUYDDIlVdeyV133XXAN2ZQ3x3O7NmzSUpKonPnzowePZrc3NzKceq76gWDQWbMmEFGRgbDhg0jKSmJfv36VdllunjxYnw+X5XnIHbp0oU2bdpUPuLM5XIxatQoUlNTSUtLY/To0VWeCdkchU0IVlRUcM899zBy5MjK3SCZmZkH7AKxWq3Ex8dXOT7wxhtvkJWVRW5uLpdffvkBbbdq1Yro6OjKn+o++JqiL774gujoaBwOB+PHj+e7776jRYsWgPruUJ588kmsViu33HJLtePVdwd3+umn88477zBz5kyefPJJ5syZwxlnnFH5bEv1XfWys7MpKSnhiSee4PTTT+fbb79l+PDhXHDBBZXP0czMzMRut1duBOyTnJxcpe8eeOABcnJyyM3N5e677z5gWccff3yVvouOjm7QdWtoTfqYYE35fD4uvvhiDMNg4sSJdWrjUPu8f/rppyrflmw2W52W0dgMGjSIpUuXkpOTw+uvv87FF1/MggULan3sJJz6bvHixTz//PMsWbKkXp52Hk59B3DppZdW/r9nz5706tWLDh06MHv2bIYMGVKrtsKp74LBIADnnXcet912G7D3+Z9z587llVdeYeDAgbVqz+12H3TcRx99RNeuXetebCPT7ENwXwBu3bqVH374ocrB8JSUFLKzs6tM7/f7ycvLIyUlpcbLaNeu3QHfrpqDqKgoOnbsSMeOHenfvz+dOnXijTfe4N5771XfHcRPP/1EdnY2bdq0qRwWCAS44447eO6559iyZYv6rhbat29PixYt2LBhA0OGDFHfHUSLFi2wWq1069atyvCuXbvy888/A3s/77xeLwUFBVXWPSsrq1Z917p1azp27FgvdTcGzXp36L4AXL9+fbVPSh8wYAAFBQUsXry4ctgPP/xAMBikX79+R7rcRi8YDOLxeAD13cFceeWVLFu2jKVLl1b+pKWlcdddd/HNN98A6rva2LFjB7m5uaSmpgLqu4Ox2+307duXtWvXVhm+bt060tPTAejTpw82m42ZM2dWjl+7di3btm1jwIABR7TexqRJbwmWlJSwYcOGyt83b97M0qVLiY+PJzU1lQsvvJAlS5bwxRdfEAgEKvd7x8fHY7fb6dq1K6effjo33HADr7zyCj6fj5tvvplLL7202tPaDyY7O5uKiooqwxISEhr1LpZD9V1CQgKPPvoo5557LqmpqeTk5DBhwgR27tzJRRddBKC+O0jftWnT5oAvWzabjZSUFDp37gyo7w7Wd/Hx8Tz00EOMGDGClJQUNm7cyN13303H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KCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYatWIfjggw9iMpmq/HTp0qVyfEVFBWPGjCEhIYHo6GhGjBhBVlZWlTamTZtGRkYGnTt35osvvqgyburUqfTv3x+3201MTAzdu3dn3LhxdV87EREJiaaSF9baztC9e3e+//77/zVg/V8Tt912GzNmzGDKlCm43W5uvvlmLrjgAn755RcAPB4PY8aMYdKkSRiGwbXXXstpp52G3W5n5syZXHLJJTz66KOce+65mEwmVq1axXfffVfrlRIRkdBrCnlR6xC0Wq2kpKQcMLywsJA33niDyZMnM3jwYAAmTZpE165dmT9/Pv3798fj8WCxWOjdu3dlWx6PB7vdzvTp0znhhBO46667KtvMyMjg/PPPr/VKiYhI6DWFvKj1McH169eTlpZG+/btufzyy9m2bRsAixcvxufzMXTo0Mppu3TpQps2bZg3bx4ALpeLUaNGkZqaSlpaGqNHjyYmJgaAlJQUVq5cyYoVK2q9EiIi0vg0hbyoVQj269ePt956i6+//pqJEyeyefNmTjrpJIqLi8nMzMRutxMbG1tlnuTkZDIzMyt/f+CBB8jJySE3N5e77767cvjYsWPp27cvPXv2pG3btlx66aW8+eabeDyeP7eGIiJyxDWVvKjV7tAzzjij8v+9evWiX79+pKen85///IfIyMgat+N2uw8YFhUVxYwZM9i4cSOzZs1i/vz53HHHHTz//PPMmzcPp9N52HZNRgCTEahxHX+cDyBotdR63nC3r8/8jogQV9I07eu3gN0e4kqann19Vpf3fLjb12d17buazNfY82KfWh8T/KPY2FgyMjLYsGEDp556Kl6vl4KCgirpnpWVVe0+4YPp0KEDHTp04Prrr+fvf/87GRkZ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lVd46KGHDjlfsm8lTp+zxsvZX9a5x9d53nA39+nHQl1Ck6b+qzu9b+su2b+yTvOV+coOO01jz4t9ahWCJ5xwAmvXrq0ybN26daSnpwN7D3qmpKQwc+bMypUoKipiwYIFjB49ujaLqhQXF0dqaiqlpaWHnTbL1p1IW0ytl2EyAiT7V5I8bS5mv85CrY2g1ULWucdz1JMvYtFlLLUWsNv5/Z6x6r862Nd3et/W3r73bZa1O4ap9lvS5bbiw07T2PNin1qF4G233cbxxx/PY489xsUXX8zChQt57bXXeO211wAwmUyMGzeORx55hE6dOtGuXTv++c9/kpaWxvnnn3/Y9l999VWWLl3K8OHD6dChAxUVFbzzzjusXLmyyr7ggzFMljr9Qfcx+wN6M9WRxevF4tGHeF2p/+pO79u6q+tnZk3maex5sU+tQrBv375MnTqVe++9l//7v/+jXbt2PPfcc1x++eWV09x9992Ulpbyl7/8hYKCAk488US+/vprHA7HYds/7rjj+Pnnn7nxxhvZtWsX0dHRdO/enc8++4yBAwfWplQREQmhppIXJsMwjDqtYSNSVFSE2+3mXx+vINJZt92hKb5lpH76k75R1lLQamH3BSdxzMPPakumDgIRdpb88w71Xx3s6zu9b2tv3/s209arbrtDy4q5/cIeFBYW4nK5GqDCI0f3DhURkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEJRmL8/vwjBCXYWINEYKQWnWtnrTOGrNV4za9jQ7vCmhLkdEGhmFoDRrO7wpBLGwqKwXp6z/gJf3XIHPsIS6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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "aodn_dataset.plot_spatial_extent()" + ] + }, + { + "cell_type": "markdown", + "id": "2c862924", + "metadata": {}, + "source": [ + "## Get Temporal Extent of the dataset" + ] + }, + { + "cell_type": "markdown", + "id": "392c2fb9", + "metadata": {}, + "source": [ + "Similary to the spatial extent, we're retrieving the minimum and maximum timestamp partition values of the dataset. This is not necessarely accurately representative of the TIME values, as the timestamp partition can be yearly/monthly... but is here to give an idea" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c8c6e7b4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 119 ms, sys: 85.2 ms, total: 204 ms\n", + "Wall time: 106 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "(Timestamp('2017-03-16 21:11:45'), Timestamp('2023-07-29 21:41:20'))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "aodn_dataset.get_temporal_extent()" + ] + }, + { + "cell_type": "markdown", + "id": "b21491c2", + "metadata": {}, + "source": [ + "## Read Metadata\n", + "\n", + "For all Parquet datasets, we create a sidecar file named **_common_metadata** in the root of the dataset. This file contains both the dataset-level and variable-level attributes. \n", + "The metadata can be retrieved below as a dictionary, and it will also be included in the pandas DataFrame when using the `get_data` method from the `GetAodn` class." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5811e040", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-08-19 16:02:49,771 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + ] + }, + { + "data": { + "text/plain": [ + "{'rawLatitude': {'type': 'double',\n", + " 'long_name': 'Raw Latitude',\n", + " 'units': 'degree_north'},\n", + " 'latitude': {'type': 'double',\n", + " 'long_name': 'Latitude',\n", + " 'units': 'degree_north'},\n", + " 'latitudeQC': {'type': 'float'},\n", + " 'rawLongitude': {'type': 'double',\n", + " 'long_name': 'Raw Longitude',\n", + " 'units': 'degree_east'},\n", + " 'longitude': {'type': 'double',\n", + " 'long_name': 'Longitude',\n", + " 'units': 'degree_east'},\n", + " 'longitudeQC': {'type': 'float'},\n", + " 'rawAlt': {'type': 'double', 'long_name': 'Raw Altitude', 'units': 'm'},\n", + " 'alt': {'type': 'double', 'long_name': 'Altitude', 'units': 'm'},\n", + " 'altQC': {'type': 'float'},\n", + " 'rawSpeedOG': {'type': 'double',\n", + " 'long_name': 'Raw Speed Over Ground',\n", + " 'units': 'knot'},\n", + " 'speedOG': {'type': 'double',\n", + " 'long_name': 'Speed Over Ground',\n", + " 'units': 'knot'},\n", + " 'speedOGQC': {'type': 'float'},\n", + " 'rawCourseOG': {'type': 'double',\n", + " 'long_name': 'Raw Course Over Ground',\n", + " 'units': 'degree'},\n", + " 'courseOG': {'type': 'double',\n", + " 'long_name': 'Course Over Ground',\n", + " 'units': 'degree'},\n", + " 'courseOGQC': {'type': 'float'},\n", + " 'rawShipHeading': {'type': 'double',\n", + " 'long_name': 'Raw Ship Heading',\n", + " 'units': 'degree'},\n", + " 'shipHeading': {'type': 'double',\n", + " 'long_name': 'Ship Heading',\n", + " 'units': 'degree'},\n", + " 'shipHeadingQC': {'type': 'float'},\n", + " 'rawDepth': {'type': 'double', 'long_name': 'Raw Depth', 'units': 'm'},\n", + " 'depth': {'type': 'double', 'long_name': 'Depth', 'units': 'm'},\n", + " 'depthQC': {'type': 'float'},\n", + " 'longitudinalWaterSpeed': {'type': 'double',\n", + " 'long_name': 'Longitudinal Water Speed',\n", + " 'units': 'knot'},\n", + " 'longitudinalWaterSpeedQC': {'type': 'float'},\n", + " 'transverseWaterSpeed': {'type': 'double',\n", + " 'long_name': 'Transverse Water Speed',\n", + " 'units': 'knot'},\n", + " 'transverseWaterSpeedQC': {'type': 'float'},\n", + " 'longitudinalGroundSpeed': {'type': 'double',\n", + " 'long_name': 'Longitudinal Ground Speed',\n", + " 'units': 'knot'},\n", + " 'longitudinalGroundSpeedQC': {'type': 'float'},\n", + " 'transverseGroundSpeed': {'type': 'double',\n", + " 'long_name': 'Transverse Ground Speed',\n", + " 'units': 'knot'},\n", + " 'transverseGroundSpeedQC': {'type': 'float'},\n", + " 'lockOnWater': {'type': 'float'},\n", + " 'lockonGround': {'type': 'float'},\n", + " 'rawPortAirTemp': {'type': 'double',\n", + " 'long_name': 'Raw Port Air Temperature',\n", + " 'units': 'degC'},\n", + " 'portAirTemp': {'type': 'double',\n", + " 'long_name': 'Port Air Temperature',\n", + " 'units': 'degC'},\n", + " 'portAirTempQC': {'type': 'float'},\n", + " 'rawPortHumidity': {'type': 'double',\n", + " 'long_name': 'Raw Port Humidity',\n", + " 'units': '%'},\n", + " 'portHumidity': {'type': 'double',\n", + " 'long_name': 'Port Humidity',\n", + " 'units': '%'},\n", + " 'portHumidityQC': {'type': 'float'},\n", + " 'rawStbdAirTemp': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Air Temperature',\n", + " 'units': 'degC'},\n", + " 'stbdAirTemp': {'type': 'double',\n", + " 'long_name': 'Starboard Air Temperature',\n", + " 'units': 'degC'},\n", + " 'stbdAirTempQC': {'type': 'float'},\n", + " 'rawStbdHumidity': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Humidity',\n", + " 'units': '%'},\n", + " 'stbdHumidity': {'type': 'double',\n", + " 'long_name': 'Starboard Humidity',\n", + " 'units': '%'},\n", + " 'stbdHumidityQC': {'type': 'float'},\n", + " 'rawMaxWindGust': {'type': 'double',\n", + " 'long_name': 'Raw Maximum Wind Gust',\n", + " 'units': 'knot'},\n", + " 'maxWindGust': {'type': 'double',\n", + " 'long_name': 'Maximum Wind Gust',\n", + " 'units': 'knot'},\n", + " 'maxWindGustQC': {'type': 'float'},\n", + " 'rawPortRelWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Port Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'portRelWindDir': {'type': 'double',\n", + " 'long_name': 'Port Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'portRelWindDirQC': {'type': 'float'},\n", + " 'rawPortRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Port Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'portRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Port Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'portRelWindSpeedQC': {'type': 'float'},\n", + " 'rawPortTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Port True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'portTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Port True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'portTrueWindDirQC': {'type': 'float'},\n", + " 'rawPortTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Port True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'portTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Port True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'portTrueWindSpeedQC': {'type': 'float'},\n", + " 'rawStbdRelWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'stbdRelWindDir': {'type': 'double',\n", + " 'long_name': 'Starboard Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'stbdRelWindDirQC': {'type': 'float'},\n", + " 'rawStbdRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'stbdRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Starboard Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'stbdRelWindSpeedQC': {'type': 'float'},\n", + " 'rawStbdTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Starboard True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'stbdTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Starboard True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'stbdTrueWindDirQC': {'type': 'float'},\n", + " 'rawStbdTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Starboard True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'stbdTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Starboard True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'stbdTrueWindSpeedQC': {'type': 'float'},\n", + " 'rawAtmPressure': {'type': 'double',\n", + " 'long_name': 'Raw Atmospheric Pressure',\n", + " 'units': 'mbar'},\n", + " 'atmPressure': {'type': 'double',\n", + " 'long_name': 'Atmospheric Pressure',\n", + " 'units': 'mbar'},\n", + " 'atmPressureQC': {'type': 'float'},\n", + " 'rawUltrasonicRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Ultrasonic Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'ultrasonicRelWindSpeed': {'type': 'double',\n", + " 'long_name': 'Ultrasonic Relative Wind Speed',\n", + " 'units': 'knot'},\n", + " 'ultrasonicRelWindSpeedQC': {'type': 'float'},\n", + " 'rawUltrasonicRelWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Ultrasonic Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'ultrasonicRelWindDir': {'type': 'double',\n", + " 'long_name': 'Ultrasonic Relative Wind Direction',\n", + " 'units': 'degree'},\n", + " 'ultrasonicRelWindDirQC': {'type': 'float'},\n", + " 'rawUltrasonicTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Raw Ultrasonic True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'ultrasonicTrueWindSpeed': {'type': 'double',\n", + " 'long_name': 'Ultrasonic True Wind Speed',\n", + " 'units': 'knot'},\n", + " 'ultrasonicTrueWindSpeedQC': {'type': 'float'},\n", + " 'rawUltrasonicTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Raw Ultrasonic True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'ultrasonicTrueWindDir': {'type': 'double',\n", + " 'long_name': 'Ultrasonic True Wind Direction',\n", + " 'units': 'degree'},\n", + " 'ultrasonicTrueWindDirQC': {'type': 'float'},\n", + " 'rawRain': {'type': 'double',\n", + " 'long_name': 'Raw Accumulated Hourly Rain',\n", + " 'units': 'mm'},\n", + " 'rain': {'type': 'double',\n", + " 'long_name': 'Accumulated Hourly Rain',\n", + " 'units': 'mm'},\n", + " 'rainQC': {'type': 'float'},\n", + " 'rawPortRadiometer': {'type': 'double',\n", + " 'long_name': 'Raw Port Radiometer',\n", + " 'units': 'W/m^2'},\n", + " 'portRadiometer': {'type': 'double',\n", + " 'long_name': 'Port Radiometer',\n", + " 'units': 'W/m^2'},\n", + " 'portRadiometerQC': {'type': 'float'},\n", + " 'rawStbdRadiometer': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Radiometer',\n", + " 'units': 'W/m^2'},\n", + " 'stbdRadiometer': {'type': 'double',\n", + " 'long_name': 'Starboard Radiometer',\n", + " 'units': 'W/m^2'},\n", + " 'stbdRadiometerQC': {'type': 'float'},\n", + " 'rawPortPyranometer': {'type': 'double',\n", + " 'long_name': 'Raw Port Pyranometer',\n", + " 'units': 'W/m^2'},\n", + " 'portPyranometer': {'type': 'double',\n", + " 'long_name': 'Port Pyranometer',\n", + " 'units': 'W/m^2'},\n", + " 'portPyranometerQC': {'type': 'float'},\n", + " 'rawStbdPyranometer': {'type': 'double',\n", + " 'long_name': 'Raw Starboard Pyranometer',\n", + " 'units': 'W/m^2'},\n", + " 'stbdPyranometer': {'type': 'double',\n", + " 'long_name': 'Starboard Pyranometer',\n", + " 'units': 'W/m^2'},\n", + " 'stbdPyranometerQC': {'type': 'float'},\n", + " 'rawPortPAR': {'type': 'double',\n", + " 'long_name': 'Raw Port PAR',\n", + " 'units': 'uE/m^2/s'},\n", + " 'portPAR': {'type': 'double', 'long_name': 'Port PAR', 'units': 'uE/m^2/s'},\n", + " 'portPARQC': {'type': 'float'},\n", + " 'rawStbdPAR': {'type': 'double',\n", + " 'long_name': 'Raw Starboard PAR',\n", + " 'units': 'uE/m^2/s'},\n", + " 'stbdPAR': {'type': 'double',\n", + " 'long_name': 'Starboard PAR',\n", + " 'units': 'uE/m^2/s'},\n", + " 'stbdPARQC': {'type': 'float'},\n", + " 'rawGyroHeading': {'type': 'double',\n", + " 'long_name': 'Raw Gyro Heading',\n", + " 'units': 'degree'},\n", + " 'gyroHeading': {'type': 'double',\n", + " 'long_name': 'Gyro Heading',\n", + " 'units': 'degree'},\n", + " 'gyroHeadingQC': {'type': 'float'},\n", + " 'equTemp': {'type': 'double',\n", + " 'long_name': 'Equilibrator Water Temperature',\n", + " 'units': 'degC'},\n", + " 'equTempQC': {'type': 'float'},\n", + " 'XCO2': {'type': 'double', 'long_name': 'XCO2', 'units': 'ppm'},\n", + " 'XCO2QC': {'type': 'float'},\n", + " 'waterVapour': {'type': 'double',\n", + " 'long_name': 'Water Vapour',\n", + " 'units': 'mmol/mole'},\n", + " 'waterVapourQC': {'type': 'float'},\n", + " 'licorPressure': {'type': 'double',\n", + " 'long_name': 'Licor Pressure',\n", + " 'units': 'hPa'},\n", + " 'licorPressureQC': {'type': 'float'},\n", + " 'equPressure': {'type': 'double',\n", + " 'long_name': 'Equilibrator Pressure',\n", + " 'units': 'hPa'},\n", + " 'equPressureQC': {'type': 'float'},\n", + " 'waterFlow': {'type': 'double', 'long_name': 'Water Flow', 'units': 'l/min'},\n", + " 'waterFlowQC': {'type': 'float'},\n", + " 'licorFlow': {'type': 'double', 'long_name': 'Licor flow', 'units': 'ml/min'},\n", + " 'licorFlowQC': {'type': 'float'},\n", + " 'ventFlow': {'type': 'double', 'long_name': 'Vent Flow', 'units': 'ml/min'},\n", + " 'ventFlowQC': {'type': 'float'},\n", + " 'condTemp': {'type': 'double',\n", + " 'long_name': 'Condenser Temperature',\n", + " 'units': 'degC'},\n", + " 'condTempQC': {'type': 'float'},\n", + " 'pumpSpeed': {'type': 'double',\n", + " 'long_name': 'CO2 Pump Speed',\n", + " 'units': 'l/min'},\n", + " 'pumpSpeedQC': {'type': 'float'},\n", + " 'rawIsarWaterTemp': {'type': 'double',\n", + " 'long_name': 'Raw ISAR Water Temperature',\n", + " 'units': 'degC'},\n", + " 'isarWaterTemp': {'type': 'double',\n", + " 'long_name': 'ISAR Water Temperature',\n", + " 'units': 'degC'},\n", + " 'isarWaterTempQC': {'type': 'float'},\n", + " 'portKeelExtension': {'type': 'double',\n", + " 'long_name': 'Port Drop Keel Extension',\n", + " 'units': 'm'},\n", + " 'portKeelExtensionQC': {'type': 'float'},\n", + " 'starboardKeelExtension': {'type': 'double',\n", + " 'long_name': 'Starboard Drop Keel Extension',\n", + " 'units': 'm'},\n", + " 'starboardKeelExtensionQC': {'type': 'float'},\n", + " 'blackCarbonConc': {'type': 'double',\n", + " 'long_name': 'Concentration of Black Carbon',\n", + " 'units': 'ug/m^3'},\n", + " 'blackCarbonConcQC': {'type': 'float'},\n", + " 'airFlow': {'type': 'double', 'long_name': 'Air Flow Rate', 'units': 'L/h'},\n", + " 'airFlowQC': {'type': 'float'},\n", + " 'absorptionPhotometerStatus': {'type': 'float'},\n", + " 'o3Ozone1': {'type': 'double', 'long_name': 'Ozone1', 'units': 'ppb'},\n", + " 'o3Ozone1QC': {'type': 'float'},\n", + " 'ozone1Meterflags': {'type': 'float'},\n", + " 'o3Ozone2': {'type': 'double', 'long_name': 'Ozone2', 'units': 'ppb'},\n", + " 'o3Ozone2QC': {'type': 'float'},\n", + " 'ozone2Meterflags': {'type': 'float'},\n", + " 'co2Dry': {'type': 'double',\n", + " 'long_name': 'CO2 Dry Concentration',\n", + " 'units': 'ppm'},\n", + " 'co2DryQC': {'type': 'float'},\n", + " 'ch4Dry': {'type': 'double',\n", + " 'long_name': 'CH4 Dry Concentration',\n", + " 'units': 'ppm'},\n", + " 'ch4DryQC': {'type': 'float'},\n", + " 'h2O': {'type': 'double',\n", + " 'long_name': 'Water Concentration Percentage',\n", + " 'units': 'dimensionless'},\n", + " 'h2OQC': {'type': 'float'},\n", + " 'inletBearing': {'type': 'double',\n", + " 'long_name': 'Air Sampling Inlet Bearing',\n", + " 'units': 'degree'},\n", + " 'inletBearingQC': {'type': 'float'},\n", + " 'trackingBearing': {'type': 'double',\n", + " 'long_name': 'Tracking Target Bearing',\n", + " 'units': 'degree'},\n", + " 'trackingBearingQC': {'type': 'float'},\n", + " 'trackingMode': {'type': 'float'},\n", + " 'rawWaterTemp': {'type': 'double',\n", + " 'long_name': 'Raw Water Temperature',\n", + " 'units': 'degC'},\n", + " 'waterTemp': {'type': 'double',\n", + " 'long_name': 'Water Temperature',\n", + " 'units': 'degC'},\n", + " 'waterTempQC': {'type': 'float'},\n", + " 'rawTsgSensorTemp': {'type': 'double',\n", + " 'long_name': 'Raw TSG Sensor Temperature',\n", + " 'units': 'degC'},\n", + " 'tsgSensorTemp': {'type': 'double',\n", + " 'long_name': 'TSG Sensor Temperature',\n", + " 'units': 'degC'},\n", + " 'tsgSensorTempQC': {'type': 'float'},\n", + " 'rawSalinity': {'type': 'double',\n", + " 'long_name': 'Raw Salinity',\n", + " 'units': 'PSU'},\n", + " 'salinity': {'type': 'double', 'long_name': 'Salinity', 'units': 'PSU'},\n", + " 'salinityQC': {'type': 'float'},\n", + " 'rawTsgFlow': {'type': 'double',\n", + " 'long_name': 'Raw TSG Flow Rate',\n", + " 'units': 'l/min'},\n", + " 'tsgFlow': {'type': 'double', 'long_name': 'TSG Flow Rate', 'units': 'l/min'},\n", + " 'tsgFlowQC': {'type': 'float'},\n", + " 'rawFluorescence': {'type': 'double',\n", + " 'long_name': 'Raw Fluorescence',\n", + " 'units': 'dimensionless'},\n", + " 'fluorescence': {'type': 'double',\n", + " 'long_name': 'Fluorescence',\n", + " 'units': 'dimensionless'},\n", + " 'fluorescenceQC': {'type': 'float'},\n", + " 'rawLabMainFlow': {'type': 'double',\n", + " 'long_name': 'Raw UWY Lab Main Flow',\n", + " 'units': 'l/min'},\n", + " 'labMainFlow': {'type': 'double',\n", + " 'long_name': 'UWY Lab Main Flow',\n", + " 'units': 'l/min'},\n", + " 'labMainFlowQC': {'type': 'float'},\n", + " 'rawLabBranchFlow': {'type': 'double',\n", + " 'long_name': 'Raw UWY Lab Branch Flow',\n", + " 'units': 'l/min'},\n", + " 'labBranchFlow': {'type': 'double',\n", + " 'long_name': 'UWY Lab Branch Flow',\n", + " 'units': 'l/min'},\n", + " 'labBranchFlowQC': {'type': 'float'},\n", + " 'rawDo': {'type': 'double',\n", + " 'long_name': 'Raw Oxygen at the Optode',\n", + " 'units': 'uM/L'},\n", + " 'do': {'type': 'double',\n", + " 'long_name': 'Oxygen at the Optode',\n", + " 'units': 'uM/L'},\n", + " 'doQC': {'type': 'float'},\n", + " 'rawDoSaturation': {'type': 'double',\n", + " 'long_name': 'Raw Oxygen Saturation at the Optode',\n", + " 'units': '%'},\n", + " 'doSaturation': {'type': 'double',\n", + " 'long_name': 'Oxygen Saturation at the Optode',\n", + " 'units': '%'},\n", + " 'doSaturationQC': {'type': 'float'},\n", + " 'rawOptodeWaterTemp': {'type': 'double',\n", + " 'long_name': 'Raw Water Temperature at the Optode',\n", + " 'units': 'degC'},\n", + " 'optodeWaterTemp': {'type': 'double',\n", + " 'long_name': 'Water Temperature at the Optode',\n", + " 'units': 'degC'},\n", + " 'optodeWaterTempQC': {'type': 'float'},\n", + " 'TIME': {'type': 'timestamp[ns]'},\n", + " 'filename': {'type': 'string',\n", + " 'units': '1',\n", + " 'long_name': 'Filename of the source file'},\n", + " 'voyage': {'type': 'string', 'units': '1', 'long_name': 'Name of the voyage'},\n", + " 'ship_name': {'type': 'string',\n", + " 'units': '1',\n", + " 'long_name': 'Name of the vessel'},\n", + " 'timestamp': {'type': 'int64',\n", + " 'units': '1',\n", + " 'long_name': 'Partition timestamp'},\n", + " 'polygon': {'type': 'string',\n", + " 'units': '1',\n", + " 'long_name': 'Spatial partition polygon'},\n", + " 'global_attributes': {'dataset_name': 'vessel_underway_csiro',\n", + " 'title': 'CSIRO Underway'}}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metadata = aodn_dataset.get_metadata()\n", + "metadata" + ] + }, + { + "cell_type": "markdown", + "id": "76e3b43b", + "metadata": {}, + "source": [ + "# Data Query and Plot" + ] + }, + { + "cell_type": "markdown", + "id": "b2432e46", + "metadata": {}, + "source": [ + "## Create a TIME and BoundingBox filter\n", + "\n", + "This cell loads a subset of the dataset based on a time range and a spatial bounding box. The result is returned as a pandas DataFrame, and basic information about its structure is displayed." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8794e0bc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-08-19 16:02:49,893 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 19300 entries, 0 to 19299\n", + "Columns: 194 entries, rawLatitude to polygon\n", + "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", + "memory usage: 23.0+ MB\n", + "CPU times: user 140 ms, sys: 51.5 ms, total: 192 ms\n", + "Wall time: 120 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "df = aodn_dataset.get_data(date_start='2017-03-16 21:11:45', \n", + " date_end='2017-03-18',\n", + " #lat_min=-34, \n", + " #lat_max=-28, \n", + " #lon_min=151, \n", + " #lon_max=160, \n", + " )\n", + "\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ecfad1d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "aodn_metadata-uuid_unknown_vessel_underway_csiro_data-hash_a55e502d.csv.zip
" + ], + "text/plain": [ + "/home/lbesnard/github_repo/aodn_cloud_optimised/notebooks/aodn_metadata-uuid_unknown_vessel_underway_csiro_data-hash_a55e502d.csv.zip" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Download Subsetted Data as CSV\n", + "\n", + "# This cell downloads the filtered dataset as a ZIP-compressed CSV file. \n", + "# The CSV includes metadata at the top as commented lines, and a `FileLink` object is returned to allow downloading directly from the notebook.\n", + "\n", + "\n", + "df.aodn.download_as_csv()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a3abac4d-a474-4550-bca4-77db4ba11991", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['rawLatitude', 'latitude', 'latitudeQC', 'rawLongitude', 'longitude',\n", + " 'longitudeQC', 'rawAlt', 'alt', 'altQC', 'rawSpeedOG',\n", + " ...\n", + " 'doSaturationQC', 'rawOptodeWaterTemp', 'optodeWaterTemp',\n", + " 'optodeWaterTempQC', 'TIME', 'filename', 'ship_name', 'voyage',\n", + " 'timestamp', 'polygon'],\n", + " dtype='object', length=194)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "markdown", + "id": "db959d48", + "metadata": {}, + "source": [ + "## Create a TIME and scalar/number filter\n", + "\n", + "This cell filters the dataset by time range and a scalar value (from a Parquet partition) using the `scalar_filter` argument. \n", + "This leverages Parquet partitioning to apply efficient, server-side filtering, which significantly speeds up data loading." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "ff46edb3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-08-19 16:02:53,960 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 19300 entries, 0 to 19299\n", + "Columns: 194 entries, rawLatitude to polygon\n", + "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", + "memory usage: 23.0+ MB\n", + "CPU times: user 134 ms, sys: 49 ms, total: 183 ms\n", + "Wall time: 96 ms\n" + ] + } + ], + "source": [ + "%%time\n", + "df = aodn_dataset.get_data(date_start='2017-03-16 21:11:45', \n", + " date_end='2017-03-18',\n", + " scalar_filter={'voyage': 'in2017_v02'})\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c71e515-c916-4490-b3d3-2d0f81636e1a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 49bbc43c..61c90e95 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -146,6 +146,7 @@ cloud_optimised_satellite_net_primary_productivity_oc3_1day_aqua = "aodn_cloud_o cloud_optimised_satellite_optical_water_type_1day_aqua = "aodn_cloud_optimised.bin.satellite_optical_water_type_1day_aqua:main" cloud_optimised_satellite_picoplankton_fraction_oc3_1day_aqua = "aodn_cloud_optimised.bin.satellite_picoplankton_fraction_oc3_1day_aqua:main" cloud_optimised_slocum_glider_delayed_qc = "aodn_cloud_optimised.bin.slocum_glider_delayed_qc:main" +cloud_optimised_update_all_metadata = "aodn_cloud_optimised.bin.update_metadata:main" cloud_optimised_vessel_air_sea_flux_product_delayed = "aodn_cloud_optimised.bin.vessel_air_sea_flux_product_delayed:main" cloud_optimised_vessel_air_sea_flux_sst_meteo_realtime = "aodn_cloud_optimised.bin.vessel_air_sea_flux_sst_meteo_realtime:main" cloud_optimised_vessel_co2_delayed_qc = "aodn_cloud_optimised.bin.vessel_co2_delayed_qc:main" @@ -154,12 +155,12 @@ cloud_optimised_vessel_satellite_radiance_delayed_qc = "aodn_cloud_optimised.bin cloud_optimised_vessel_satellite_radiance_derived_product = "aodn_cloud_optimised.bin.vessel_satellite_radiance_derived_product:main" cloud_optimised_vessel_sst_delayed_qc = "aodn_cloud_optimised.bin.vessel_sst_delayed_qc:main" cloud_optimised_vessel_trv_realtime_qc = "aodn_cloud_optimised.bin.vessel_trv_realtime_qc:main" +cloud_optimised_vessel_underway_csiro = "aodn_cloud_optimised.bin.vessel_underway_csiro:main" cloud_optimised_vessel_xbt_delayed_qc = "aodn_cloud_optimised.bin.vessel_xbt_delayed_qc:main" cloud_optimised_vessel_xbt_realtime_nonqc = "aodn_cloud_optimised.bin.vessel_xbt_realtime_nonqc:main" cloud_optimised_wave_buoy_realtime_nonqc = "aodn_cloud_optimised.bin.wave_buoy_realtime_nonqc:main" generic_cloud_optimised_creation = "aodn_cloud_optimised.bin.generic_cloud_optimised_creation:main" pydantic_precommit_hook = "aodn_cloud_optimised.bin.pydantic_precommit_hook:main" -cloud_optimised_update_all_metadata = "aodn_cloud_optimised.bin.update_metadata:main" #[tool.poetry.include] #data = ["aodn_cloud_optimised/config/*.json", "aodn_cloud_optimised/config/dataset/*.json"] From d7fc02daae7bfd2056e7affdd5e12ecf4929226a Mon Sep 17 00:00:00 2001 From: lbesnard Date: Wed, 20 Aug 2025 10:43:11 +1000 Subject: [PATCH 2/3] Update notebook --- notebooks/vessel_underway_csiro.ipynb | 92 +++++++++++++++++---------- 1 file changed, 60 insertions(+), 32 deletions(-) diff --git a/notebooks/vessel_underway_csiro.ipynb b/notebooks/vessel_underway_csiro.ipynb index ccd16b4e..79c05dd6 100644 --- a/notebooks/vessel_underway_csiro.ipynb +++ b/notebooks/vessel_underway_csiro.ipynb @@ -33,10 +33,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "5ea788c1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using CPython 3.12.11 interpreter at: \u001b[36m/home/lbesnard/miniforge3/envs/AodnCloudOptimised/bin/python\u001b[39m\n", + "Creating virtual environment at: \u001b[36m.venv\u001b[39m\n", + "Activate with: \u001b[32msource .venv/bin/activate\u001b[39m\n", + "\u001b[2mUsing Python 3.12.11 environment at: /home/lbesnard/miniforge3/envs/AodnCloudOptimised\u001b[0m\n", + "\u001b[2mAudited \u001b[1m256 packages\u001b[0m \u001b[2min 49ms\u001b[0m\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Local version 0.2.5 is up to date (remote: 0.2.5)\n" + ] + } + ], "source": [ "import os, requests, importlib.util\n", "\n", @@ -52,10 +71,19 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "8e48b8c7", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/lbesnard/github_repo/aodn_cloud_optimised/notebooks/DataQuery.py:3152: UserWarning: registration of accessor under name 'aodn' for type is overriding a preexisting attribute with the same name.\n", + " @pd.api.extensions.register_dataframe_accessor(\"aodn\")\n" + ] + } + ], "source": [ "from DataQuery import GetAodn" ] @@ -94,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "eec82f5a", "metadata": {}, "outputs": [ @@ -102,8 +130,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 25.1 ms, sys: 3.67 ms, total: 28.8 ms\n", - "Wall time: 8.05 s\n" + "CPU times: user 40.1 ms, sys: 5.76 ms, total: 45.9 ms\n", + "Wall time: 8.08 s\n" ] } ], @@ -131,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "8fef38d5", "metadata": {}, "outputs": [ @@ -139,9 +167,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "['in2023_v05', 'in2019_v01']\n", - "CPU times: user 470 µs, sys: 0 ns, total: 470 µs\n", - "Wall time: 397 µs\n" + "['in2020_v10', 'in2019_v01']\n", + "CPU times: user 849 µs, sys: 951 µs, total: 1.8 ms\n", + "Wall time: 1.2 ms\n" ] } ], @@ -162,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "fa1d18c5", "metadata": {}, "outputs": [ @@ -176,7 +204,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcEAAAK8CAYAAACX7wRqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAjvZJREFUeJzs3Xd4VGXexvHv1EwmyUwKqZRQQ0cUEbAhRbErYsOOZVdEFPvq7lpee1tsiGUVK+qioiB2BCxUQaT3XpKQ3qee9w+WrIEASUyYJHN/risX5JTn/M6TmbnndJNhGAYiIiJhyBzqAkREREJFISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISgiImFLISj14pRTTuGUU06p07wmk4kHH3ywXuuRmnnrrbcwmUxs2bIl1KU0mAcffBCTyVRlWNu2bbnmmmtCU5A0KgrBJmj58uVceOGFpKen43A4aNmyJaeeeiovvvhigy531apVPPjggyH5wNyyZQsmk+mgP0888USt23zsscf47LPP6r/YakyePJnnnnvuiCyrIS1dupQrrriC1q1bExERQXx8PEOHDmXSpEkEAoGQ1VVWVsaDDz7I7NmzQ1aDNE3WUBcgtTN37lwGDRpEmzZtuOGGG0hJSWH79u3Mnz+f559/nrFjxzbYsletWsVDDz3EKaecQtu2bauM+/bbbxtsuX80cuRIzjzzzAOGH3300bVu67HHHuPCCy/k/PPPr4fKDm3y5MmsWLGCcePGNfiyGsq///1vbrzxRpKTk7nyyivp1KkTxcXFzJw5k+uuu47du3dz3333haS2srIyHnroIYAa7ZFYu3YtZrO2AUQh2OQ8+uijuN1uFi1aRGxsbJVx2dnZoSkKsNvtR2Q5xxxzDFdcccURWZb8z/z587nxxhsZMGAAX375JTExMZXjxo0bx6+//sqKFStCWGHtREREhLoEaST0VaiJ2bhxI927dz8gAAGSkpKq/G4ymbj55pt5//336dy5Mw6Hgz59+vDjjz9WmW7r1q3cdNNNdO7cmcjISBISErjooouq7PZ86623uOiiiwAYNGhQ5W7Ifbuf9j8m6PV6uf/+++nTpw9ut5uoqChOOukkZs2aVS/9cDA//PADZrOZ+++/v8rwyZMnYzKZmDhxIrC3b0pLS3n77bcr1+WPx4h27tzJtddeS3JyMhEREXTv3p0333yzSpuzZ8/GZDLxn//8h0cffZRWrVrhcDgYMmQIGzZsqJzulFNOYcaMGWzdurVyWftvSe9v0qRJDB48mKSkJCIiIujWrVtl7X/Utm1bzj77bH7++WeOO+44HA4H7du355133jlg2pUrVzJ48GAiIyNp1aoVjzzyCMFg8HBdCsBDDz2EyWTi/fffrxKA+xx77LFV+q+0tJQ77rijcrdp586deeaZZ9j/oTU1Xc9ff/2VYcOG0aJFCyIjI2nXrh3XXnstsHdXeWJiYpU6D3ecef9jgvuOjf7yyy/cfvvtJCYmEhUVxfDhw9mzZ88B83/11VecdNJJREVFERMTw1lnncXKlSsP1YXSSGlLsIlJT09n3rx5rFixgh49ehx2+jlz5vDRRx9xyy23EBERwcsvv8zpp5/OwoULK+dftGgRc+fO5dJLL6VVq1Zs2bKFiRMncsopp7Bq1SqcTicnn3wyt9xyCy+88AL33XcfXbt2Baj8d39FRUX8+9//ZuTIkdxwww0UFxfzxhtvMGzYMBYuXEjv3r3rtP5lZWXk5OQcMDw2Nhar1crgwYO56aabePzxxzn//PM55phj2L17N2PHjmXo0KHceOONALz77rtcf/31HHfccfzlL38BoEOHDgBkZWXRv3//yi8RiYmJfPXVV1x33XUUFRUdsEvziSeewGw2c+edd1JYWMhTTz3F5ZdfzoIFCwD4+9//TmFhITt27GD8+PEAREdHH3I9J06cSPfu3Tn33HOxWq1Mnz6dm266iWAwyJgxY6pMu2HDBi688EKuu+46rr76at58802uueYa+vTpQ/fu3QHIzMxk0KBB+P1+/va3vxEVFcVrr71GZGRkjfp85syZnHzyybRp0+aw0xuGwbnnnsusWbO47rrr6N27N9988w133XUXO3furOyDmq5ndnY2p512GomJifztb38jNjaWLVu28OmnnwKQmJjIxIkTGT16NMOHD+eCCy4AoFevXoetdX9jx44lLi6OBx54gC1btvDcc89x880389FHH1VO8+6773L11VczbNgwnnzyScrKypg4cSInnngiv/3222G/4EgjY0iT8u233xoWi8WwWCzGgAEDjLvvvtv45ptvDK/Xe8C0gAEYv/76a+WwrVu3Gg6Hwxg+fHjlsLKysgPmnTdvngEY77zzTuWw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PklhYSERERGV13jt7+yzz+bTTz9l+PDhnHXWWWzevJlXXnmFbt26VfshWlNLlizhvffeO2B4hw4dGDBgABUVFVx99dV06tSJRx99tHJdp0+fzqhRo1i+fHllmPfp04fvv/+ef/3rX6SlpdGuXTv69evHE088waxZs+jXrx833HAD3bp1Iy8vjyVLlvD999+Tl5dX67r79OnDRx99xO23307fvn2Jjo7mnHPOqXba0047DbvdzjnnnMNf//pXSkpKeP3110lKSjpgS7+m7r77bt59911OP/10br311spLJNLT01m2bNlh5z/++OOZMGECN910E126dKlyx5jZs2czbdo0HnnkEQDOOeccBg0axN///ne2bNnCUUcdxbfffsvnn3/OuHHjKremarqeb7/9Ni+//DLDhw+nQ4cOFBcX8/rrr+NyuSrvHhQZGUm3bt346KOPyMjIID4+nh49etToMqLacLlcTJw4kSuvvJJjjjmGSy+9lMTERLZt28aMGTM44YQTDgh/aeRCcUqq1N1XX31lXHvttUaXLl2M6Ohow263Gx07djTGjh1rZGVlVZkWMMaMGWO89957RqdOnYyIiAjj6KOPPuASh/z8fGPUqFFGixYtjOjoaGPYsGHGmjVrDjiN3DAM4/XXXzfat29vWCyWKpdL7H+JRDAYNB577DEjPT29crlffPGFcfXVVx9wqQD1cInEvjr3ndL+x0sBDMMwfv31V8NqtRqjR4+uHLZmzRrj5JNPNiIjI6u0YRiGkZWVZYwZM8Zo3bq1YbPZjJSUFGPIkCHGa6+9VjnNvkskpkyZUm2tkyZNqhxWUlJiXHbZZUZsbKwBHPZyiWnTphm9evUyHA6H0bZtW+PJJ5803nzzzQMuZ0hPTzfOOuusA+bf/+9hGIaxbNkyY+DAgYbD4TBatmxpPPzww8Ybb7xx2Esk/mjx4sXGZZddZqSlpRk2m82Ii4szhgwZYrz99ttGIBConK64uNi47bbbKqfr1KmT8fTTT1e5/KCm67lkyRJj5MiRRps2bYyIiAgjKSnJOPvss6tc+mMYhjF37lyjT58+ht1ur/Kaqs0lEvtfhrHvb7z/e2bWrFnGsGHDDLfbbTgcDqNDhw7GNddcc0BN0viZDKOejp5Lo2MymRgzZoy+mYqIHISOCYqISNhSCIqISNhSCIqISNjS2aHNmA73iogcmrYERUQkbCkERUQkbCkERUQkbCkERUQkbDXpEPzxxx8555xzSEtLw2Qy8dlnn1WO8/l83HPPPfTs2ZOoqCjS0tK46qqr2LVrV5U28vLyuPzyy3G5XMTGxnLdddcdcFuv119/nfT0dI4++ujKp4UDzJ49G5PJVO1PZmZmg677n3WovgN48MEH6dKlC1FRUcTFxTF06NAq6w7qu4P13R/deOONmEwmnnvuuSrD1XfV990111xzwDqdfvrpVaZR3x38dbd69WrOPfdc3G43UVFR9O3bl23btlWOr6ioYMyYMSQkJBAdHc2IESPIysqq0sa0adPIyMigc+fOfPHFF5XDt2zZctC+mz9/foOtd0Nr0meHlpaWctRRR3HttddywQUXVBlXVlbGkiVL+Oc//8lRRx1Ffn4+t956K+eeey6//vpr5XSXX345u3fv5rvvvsPn8zFq1Cj+8pe/MHnyZAC2bdvGU089xYcffsjOnTsZNWoUq1atqrKstWvXHvAcserup9mYHKrvYO8zB1966SXat29PeXk548eP57TTTmPDhg2VT59Q31Xfd/tMnTqV+fPnk5aWdsA49d3B++7000+vchPt/Z8ZqL6rvu82btzIiSeeyHXXXcdDDz2Ey+Vi5cqVOByOymluu+02ZsyYwZQpU3C73dx8881ccMEF/PLLL8DeG5KPGTOGSZMmYRgG1157beU9Xvf5/vvv6d69e5Vl73+f4SYltHdtqz+AMXXq1ENOs3DhQgMwtm7dahiGYaxateqA+wV+9dVXhslkMnbu3GkYhmEsX77cOPbYY42SkhJj06ZNRtu2bSun3Xdfwfz8/HpfnyOpJn1XWFhoAMb3339vGIb6bp+D9d2OHTuMli1bGitWrDDS09ON8ePHV45T3+1VXd9dffXVxnnnnXfQedR3e1XXd5dccolxxRVXHHSegoICw2azVbnX7erVqw3AmDdvnmEYe9/n6enpxp49e4w9e/YYbdu2NYqKigzD+N89cX/77bd6X59QatK7Q2ursLAQk8lEbGwssPcxQ7GxsZXP4gMYOnQoZrO5chdKjx496NWrF263m+7du1feKT+ceL1eXnvtNdxuN0cddRSgvjuUYDDIlVdeyV133XXAN2ZQ3x3O7NmzSUpKonPnzowePZrc3NzKceq76gWDQWbMmEFGRgbDhg0jKSmJfv36VdllunjxYnw+X5XnIHbp0oU2bdpUPuLM5XIxatQoUlNTSUtLY/To0VWeCdkchU0IVlRUcM899zBy5MjK3SCZmZkH7AKxWq3Ex8dXOT7wxhtvkJWVRW5uLpdffvkBbbdq1Yro6OjKn+o++JqiL774gujoaBwOB+PHj+e7776jRYsWgPruUJ588kmsViu33HJLtePVdwd3+umn88477zBz5kyefPJJ5syZwxlnnFH5bEv1XfWys7MpKSnhiSee4PTTT+fbb79l+PDhXHDBBZXP0czMzMRut1duBOyTnJxcpe8eeOABcnJyyM3N5e677z5gWccff3yVvouOjm7QdWtoTfqYYE35fD4uvvhiDMNg4sSJdWrjUPu8f/rppyrflmw2W52W0dgMGjSIpUuXkpOTw+uvv87FF1/MggULan3sJJz6bvHixTz//PMsWbKkXp52Hk59B3DppZdW/r9nz5706tWLDh06MHv2bIYMGVKrtsKp74LBIADnnXcet912G7D3+Z9z587llVdeYeDAgbVqz+12H3TcRx99RNeuXetebCPT7ENwXwBu3bqVH374ocrB8JSUFLKzs6tM7/f7ycvLIyUlpcbLaNeu3QHfrpqDqKgoOnbsSMeOHenfvz+dOnXijTfe4N5771XfHcRPP/1EdnY2bdq0qRwWCAS44447eO6559iyZYv6rhbat29PixYt2LBhA0OGDFHfHUSLFi2wWq1069atyvCuXbvy888/A3s/77xeLwUFBVXWPSsrq1Z917p1azp27FgvdTcGzXp36L4AXL9+fbVPSh8wYAAFBQUsXry4ctgPP/xAMBikX79+R7rcRi8YDOLxeAD13cFceeWVLFu2jKVLl1b+pKWlcdddd/HNN98A6rva2LFjB7m5uaSmpgLqu4Ox2+307duXtWvXVhm+bt060tPTAejTpw82m42ZM2dWjl+7di3btm1jwIABR7TexqRJbwmWlJSwYcOGyt83b97M0qVLiY+PJzU1lQsvvJAlS5bwxRdfEAgEKvd7x8fHY7fb6dq1K6effjo33HADr7zyCj6fj5tvvplLL7202tPaDyY7O5uKiooqwxISEhr1LpZD9V1CQgKPPvoo5557LqmpqeTk5DBhwgR27tzJRRddBKC+O0jftWnT5oAvWzabjZSUFDp37gyo7w7Wd/Hx8Tz00EOMGDGClJQUNm7cyN13303H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KCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYUshKCIiYatWIfjggw9iMpmq/HTp0qVyfEVFBWPGjCEhIYHo6GhGjBhBVlZWlTamTZtGRkYGnTt35osvvqgyburUqfTv3x+3201MTAzdu3dn3LhxdV87EREJiaaSF9baztC9e3e+//77/zVg/V8Tt912GzNmzGDKlCm43W5uvvlmLrjgAn755RcAPB4PY8aMYdKkSRiGwbXXXstpp52G3W5n5syZXHLJJTz66KOce+65mEwmVq1axXfffVfrlRIRkdBrCnlR6xC0Wq2kpKQcMLywsJA33niDyZMnM3jwYAAmTZpE165dmT9/Pv3798fj8WCxWOjdu3dlWx6PB7vdzvTp0znhhBO46667KtvMyMjg/PPPr/VKiYhI6DWFvKj1McH169eTlpZG+/btufzyy9m2bRsAixcvxufzMXTo0Mppu3TpQps2bZg3bx4ALpeLUaNGkZqaSlpaGqNHjyYmJgaAlJQUVq5cyYoVK2q9EiIi0vg0hbyoVQj269ePt956i6+//pqJEyeyefNmTjrpJIqLi8nMzMRutxMbG1tlnuTkZDIzMyt/f+CBB8jJySE3N5e77767cvjYsWPp27cvPXv2pG3btlx66aW8+eabeDyeP7eGIiJyxDWVvKjV7tAzzjij8v+9evWiX79+pKen85///IfIyMgat+N2uw8YFhUVxYwZM9i4cSOzZs1i/vz53HHHHTz//PPMmzcPp9N52HZNRgCTEahxHX+cDyBotdR63nC3r8/8jogQV9I07eu3gN0e4kqann19Vpf3fLjb12d17buazNfY82KfWh8T/KPY2FgyMjLYsGEDp556Kl6vl4KCgirpnpWVVe0+4YPp0KEDHTp04Prrr+fvf/87GRkZ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lVd46KGHDjlfsm8lTp+zxsvZX9a5x9d53nA39+nHQl1Ck6b+qzu9b+su2b+yTvOV+coOO01jz4t9ahWCJ5xwAmvXrq0ybN26daSnpwN7D3qmpKQwc+bMypUoKipiwYIFjB49ujaLqhQXF0dqaiqlpaWHnTbL1p1IW0ytl2EyAiT7V5I8bS5mv85CrY2g1ULWucdz1JMvYtFlLLUWsNv5/Z6x6r862Nd3et/W3r73bZa1O4ap9lvS5bbiw07T2PNin1qF4G233cbxxx/PY489xsUXX8zChQt57bXXeO211wAwmUyMGzeORx55hE6dOtGuXTv++c9/kpaWxvnnn3/Y9l999VWWLl3K8OHD6dChAxUVFbzzzjusXLmyyr7ggzFMljr9Qfcx+wN6M9WRxevF4tGHeF2p/+pO79u6q+tnZk3maex5sU+tQrBv375MnTqVe++9l//7v/+jXbt2PPfcc1x++eWV09x9992Ulpbyl7/8hYKCAk488US+/vprHA7HYds/7rjj+Pnnn7nxxhvZtWsX0dHRdO/enc8++4yBAwfWplQREQmhppIXJsMwjDqtYSNSVFSE2+3mXx+vINJZt92hKb5lpH76k75R1lLQamH3BSdxzMPPakumDgIRdpb88w71Xx3s6zu9b2tv3/s209arbrtDy4q5/cIeFBYW4nK5GqDCI0f3DhURkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEBQRkbClEJRmL8/vwjBCXYWINEYKQWnWtnrTOGrNV4za9jQ7vCmhLkdEGhmFoDRrO7wpBLGwqKwXp6z/gJf3XIHPsIS6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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2sAAAJ8CAYAAABgETkHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA5tFJREFUeJzs3Xd4FNXXwPHv1mx6r0BCCCGh96p0pApSVEBUBGyICIrYFVCxK6IiviiioiiigPTeJfTee4f0nmyyZd4/IvkZaUlImE1yPs+TR5ly59zZzWbO3qZRFEVBCCGEEEIIIYRD0aodgBBCCCGEEEKIa0myJoQQQgghhBAOSJI1IYQQQgghhHBAkqwJIYQQQgghhAOSZE0IIYQQQgghHJAka0IIIYQQQgjhgCRZE0IIIYQQQggHJMmaEEIIIYQQQjggSdaEEEIIIYQQwgFJsiaEEA6oXbt2tGvXrljnajQaxo8fX6LxiML54Ycf0Gg0nDlzRu1QSs348ePRaDQFtlWtWpXHHntMnYCEEKIck2RNCFHh7d+/n/vvv5+wsDBMJhOVKlXinnvu4csvvyzV6x46dIjx48er8mB/5swZNBrNDX8++OCDIpf53nvvMX/+/JIP9jpmzZrF559/fkeuVZr27NnDww8/TJUqVXBycsLHx4dOnToxY8YMbDabanFlZWUxfvx41q1bp1oMQgghQK92AEIIoabNmzfTvn17QkNDeeKJJwgKCuL8+fNs2bKFyZMnM3LkyFK79qFDh5gwYQLt2rWjatWqBfatWLGi1K77bwMHDqR79+7XbG/YsGGRy3rvvfe4//776d27dwlEdnOzZs3iwIEDjB49utSvVVq+++47nn76aQIDA3nkkUeIjIwkPT2d1atXM2zYMC5fvsxrr72mSmxZWVlMmDABoFAtvEePHkWrle9/hRCipEmyJoSo0CZOnIinpyfbt2/Hy8urwL64uDh1ggKMRuMduU6jRo14+OGH78i1xP9s2bKFp59+mpYtW7JkyRLc3d3z940ePZodO3Zw4MABFSMsGicnJ7VDEEKIckm+BhNCVGgnT56kdu3a1yRqAAEBAQX+rdFoePbZZ/nll1+IiorCZDLRuHFjNmzYUOC4s2fP8swzzxAVFYWzszO+vr488MADBbo7/vDDDzzwwAMAtG/fPr/74dVuZ/8ds5abm8tbb71F48aN8fT0xNXVldatW7N27doSuQ83smbNGrRaLW+99VaB7bNmzUKj0TB16lQg795kZmby448/5tfl32OYLl68yNChQwkMDMTJyYnatWvz/fffFyhz3bp1aDQafv/9dyZOnEjlypUxmUx07NiREydO5B/Xrl07Fi9ezNmzZ/Ov9d+Wyf+aMWMGHTp0ICAgACcnJ2rVqpUf+79VrVqVe++9l02bNtGsWTNMJhPVqlXjp59+uubYgwcP0qFDB5ydnalcuTLvvvsudrv9VrcUgAkTJqDRaPjll18KJGpXNWnSpMD9y8zMZMyYMfndJaOiovjkk09QFKVY9dyxYwddunTBz88PZ2dnwsPDGTp0KJDXRdbf379AnLcaB/nfMWtXx+79/fffvPDCC/j7++Pq6kqfPn2Ij4+/5vylS5fSunVrXF1dcXd3p0ePHhw8ePBmt1AIISoEaVkTQlRoYWFhxMTEcODAAerUqXPL49evX8/s2bN57rnncHJy4uuvv6Zr165s27Yt//zt27ezefNmBgwYQOXKlTlz5gxTp06lXbt2HDp0CBcXF9q0acNzzz3HF198wWuvvUbNmjUB8v/7X2lpaXz33XcMHDiQJ554gvT0dKZPn06XLl3Ytm0bDRo0KFb9s7KySEhIuGa7l5cXer2eDh068Mwzz/D+++/Tu3dvGjVqxOXLlxk5ciSdOnXi6aefBmDmzJk8/vjjNGvWjCeffBKAiIgIAGJjY2nRokV+suvv78/SpUsZNmwYaWlp13Rl/OCDD9Bqtbz44oukpqby0UcfMWjQILZu3QrA66+/TmpqKhcuXGDSpEkAuLm53bSeU6dOpXbt2vTq1Qu9Xs/ChQt55plnsNvtjBgxosCxJ06c4P7772fYsGEMHjyY77//nscee4zGjRtTu3ZtAK5cuUL79u2xWq288soruLq6Mm3aNJydnQt1z1evXk2bNm0IDQ295fGKotCrVy/Wrl3LsGHDaNCgAcuXL2fs2LFcvHgx/x4Utp5xcXF07twZf39/XnnlFby8vDhz5gxz584FwN/fn6lTpzJ8+HD69OlD3759AahXr94tY/2vkSNH4u3tzbhx4zhz5gyff/45zz77LLNnz84/ZubMmQwePJguXbrw4YcfkpWVxdSpU7n77rvZvXv3LRNxIYQo1xQhhKjAVqxYoeh0OkWn0yktW7ZUXnrpJWX58uVKbm7uNccCCqDs2LEjf9vZs2cVk8mk9OnTJ39bVlbWNefGxMQogPLTTz/lb5szZ44CKGvXrr3m+LZt2ypt27bN/7fValVycnIKHJOcnKwEBgYqQ4cOvSbOcePG3bTep0+fzq/P9X5iYmLyj83MzFSqV6+u1K5dWzGbzUqPHj0UDw8P5ezZswXKdHV1VQYPHnzNtYYNG6YEBwcrCQkJBbYPGDBA8fT0zL9fa9euVQClZs2aBeo6efJkBVD279+fv61Hjx5KWFjYTev4b9d7Tbp06aJUq1atwLawsDAFUDZs2JC/LS4uTnFyclLGjBmTv2306NEKoGzdurXAcZ6engqgnD59+oax7N27VwGUUaNGFSr2+fPnK4Dy7rvvFth+//33KxqNRjlx4kSR6jlv3jwFULZv337Da8bHx9/wfTRu3Djlv48PYWFhBV77GTNmKIDSqVMnxW63529//vnnFZ1Op6SkpCiKoijp6emKl5eX8sQTTxQo78qVK4qnp+c124UQoqKRbpBCiArtnnvuISYmhl69erF3714++ugjunTpQqVKlViwYME1x7ds2ZLGjRvn/zs0NJT77ruP5cuX58/e9+/WFYvFQmJiItWrV8fLy4tdu3YVK06dTpc/js1ut5OUlITVaqVJkybFLhPgySefZOXKldf81KpVK/8YFxcXfvjhBw4fPkybNm1YvHgxkyZNKnSr0J9//knPnj1RFIWEhIT8ny5dupCamnpN/EOGDCkwZq9169YAnDp1qtj1/PdrkpqaSkJCAm3btuXUqVOkpqYWOLZWrVr514S8lqaoqKgC11+yZAktWrSgWbNmBY4bNGjQLWNJS0sDuG73x+tZsmQJOp2O5557rsD2MWPGoCgKS5cuLVI9r3b5XbRoERaLpVAxFNeTTz5ZYJr/1q1bY7PZOHv2LAArV64kJSWFgQMHFnhv6HQ6mjdvXurdfIUQwtFJN0ghRIXXtGlT5s6dS25uLnv37mXevHlMmjSJ+++/nz179hRIXCIjI685v0aNGmRlZREfH09QUBDZ2dm8//77zJgxg4sXLxYYV/TfxKAofvzxRz799FOOHDlS4CE7PDy82GVGRkbSqVOnWx531113MXz4cKZMmUKXLl3yxzfdSnx8PCkpKUybNo1p06Zd95j/TuTy3yTQ29sbgOTk5EJd83r+/vtvxo0bR0xMDFlZWQX2paam4unpecPrX43h39c/e/YszZs3v+a4qKioW8bi4eEBQHp6eqFiP3v2LCEhIdckd1e7zF5NfKBw9Wzbti39+vVjwoQJTJo0iXbt2tG7d28eeuihEp8o5Fav5fHjxwHo0KHDdc+/eq+EEKKikmRNCCH+YTQaadq0KU2bNqVGjRoMGTKEOXPmMG7cuCKVM3LkSGbMmMHo0aNp2bIlnp6eaDQaBgwYUOgJKP7r559/5rHHHqN3796MHTuWgIAAdDod77//PidPnixWmUWRk5OTP/nJyZMnycrKwsXF5ZbnXa3vww8/zODBg697zH/HQul0uusep/xnMo3COnnyJB07diQ6OprPPvuMKlWqYDQaWbJkCZMmTbrmNSnp6/9X9erV0ev17N+/v0TKu6qw9dRoNPzxxx9s2bKFhQsXsnz5coYOHcqnn37Kli1bbjn+ryhudS+vxjRz5kyCgoKuOU6vl8cUIUTFJp+CQghxHU2aNAHg8uXLBbZfbQn4t2PHjuHi4pI/g94ff/zB4MGD+fTTT/OPMZvNpKSkFDjv393DbuWPP/6gWrVqzJ07t8B5RU0ki2vcuHEcPnyYTz75hJdffplXXnmFL774osAx16uPv78/7u7u2Gy2QrXgFVZR7t3ChQvJyclhwYIFBVp6bqeLXVhY2HXfC0ePHr3luS4uLnTo0IE1a9Zw/vx5qlSpcstrrVq1ivT09AKta0eOHMnfD0WvZ4sWLWjRogUTJ05k1qxZDBo0iN9++43HH3+8SPf3dlydhCYgIKBE3x9CCFFeyJg1IUSFtnbt2uu2mCxZsgS4tltbTExMgTFW58+f56+//qJz5875rQg6ne6aMr/88sv8MW1Xubq6AlyTxF3P1bL/Xe7WrVuJiYm55bm3a+vWrXzyySeMHj2aMWPGMHbsWL766ivWr19f4DhXV9dr6qLT6ejXrx9//vnnddcNu9407oXh6upa6C6l17t3qampzJgxo1jXBujevTtbtmxh27Zt+dvi4+P55ZdfCnX+uHHjUBSFRx55hIyMjGv279y5kx9//DH/Wjabja+++qrAMZMmTUKj0dCtWzeg8PVMTk6+5v15dTbRnJwcgPxW08K8N29Hly5d8PDw4L333rvu+Lnivj+EEKK8kJY1IUSFNnLkSLKysujTpw/R0dHk5uayefNmZs+eTdWqVRkyZEiB4+vUqUOXLl0KTN0PeetRXXXvvfcyc+ZMPD09qVWrFjExMaxatQpfX98CZTVo0ACdTseHH35IamoqTk5O+Wtk/de9997L3Llz6dOnDz169OD06dN888031KpV67oP+4W1a9cufv7552u2R0RE0LJlS8xmM4MHDyYyMpKJEyfm13XhwoUMGTKE/fv35yedjRs3ZtWqVXz22WeEhIQQHh5O8+bN+eCDD1i7di3NmzfniSeeoFatWiQlJbFr1y5WrVpFUlJSkeNu3Lgxs2fP5oUXXqBp06a4ubnRs2fP6x7buXNnjEYjPXv25KmnniIjI4Nvv/2WgICAa1pOC+ull15i5syZdO3alVGjRuVP3R8WFsa+fftueX6rVq2YMmUKzzzzDNHR0TzyyCNERkaSnp7OunXrWLBgAe+++y4APXv2pH379rz++uucOXOG+vXrs2LFCv766y9Gjx6d3zpV2Hr++OOPfP311/Tp04eIiAjS09P59ttv8fDwoHv37kDeRCW1atVi9uzZ1KhRAx8fH+rUqVOo5S2KwsPDg6lTp/LII4/QqFEjBgwYgL+/P+fOnWPx4sXcdddd1ySpQghRoagxBaUQQjiKpUuXKkOHDlWio6MVNzc3xWg0KtWrV1dGjhypxMbGFjgWUEaMGKH8/PPPSmRkpOLk5KQ0bNjwmqn3k5OTlSFDhih+fn6Km5ub0qVLF+XIkSPXTG+uKIry7bffKtWqVVN0Ol2Bafz/O3W/3W5X3nvvPSUsLCz/uosWLVIGDx58zRT2lMDU/VfjvDrV+r+nqFcURdmxY4ei1+uV4cOH5287cuSI0qZNG8XZ2blAGYqiKLGxscqIESOUKlWqKAaDQQkKClI6duyoTJs2Lf+Yq1P3z5kz57qxzpgxI39bRkaG8tBDDyleXl4KcMtp/BcsWKDUq1dPMZlMStWqVZUPP/xQ+f7776+ZZj8sLEzp0aPHNef/9/VQFEXZt2+f0rZtW8VkMimVKlVS3nnnHWX69Om3nLr/33bu3Kk89NBDSkhIiGIwGBRvb2+lY8eOyo8//qjYbLb849LT05Xnn38+/7jIyEjl448/LjAtfmHruWvXLmXgwIFKaGio4uTkpAQEBCj33ntvgSUpFEVRNm/erDRu3FgxGo0F3lNFmbr/v8sDXH2N//s7s3btWqVLly6Kp6enYjKZlIiICOWxxx67JiYhhKhoNIpSQiOmhRCinNNoNIwYMUK+6RdCCCHEHSFj1oQQQgghhBDCAUmyJoQQQgghhBAOSJI1IYQQQgghhHBAMhukEEIUkgzxFUIIIcSdJC1rQgghhBBCCOGAJFkTQgghhBBCCAckyZoQQgghhBBCOCBJ1oQQQgghhBDCAUmydgPjx49Ho9EU+ImOjs7fbzabGTFiBL6+vri5udGvXz9iY2MLlLFgwQJq1KhBVFQUixYtyt9+5syZa8q++rNly5Y7VsdbuXjxIg8//DC+vr44OztTt25dduzYkb9fURTeeustgoODcXZ2plOnThw/frxAGTExMTRo0ICqVasyffr0AvtudA9+++23O1K/m6latep1YxsxYgRQ/l9/m83Gm2++SXh4OM7OzkRERPDOO+8UmGCjPL/+AOnp6YwePZqwsDCcnZ1p1aoV27dvz99fnuq/YcMGevbsSUhICBqNhvnz5xfYX5i6JiUlMWjQIDw8PPDy8mLYsGFkZGQUOObbb78lLCyMhg0bsnXr1vzt69atu+H9uHLlSqnV+6pb1X/u3Ll07twZX19fNBoNe/bsuaaMsvyZcLP6WywWXn75ZerWrYurqyshISE8+uijXLp0qUAZ5fn1Hz9+PNHR0bi6uuLt7U2nTp0KxA/lu/7/9vTTT6PRaPj8888LbC/L9Ydb34PHHnvsmti6du1a4JiyfA8K8x44fPgwvXr1wtPTE1dXV5o2bcq5c+fy95flz0CHp4jrGjdunFK7dm3l8uXL+T/x8fH5+59++mmlSpUqyurVq5UdO3YoLVq0UFq1apW/32w2K5UrV1ZWrlyprFixQqlcubKSk5OjKIqinD59WgGUVatWFSj/8uXLSm5u7h2v6/UkJSUpYWFhymOPPaZs3bpVOXXqlLJ8+XLlxIkT+cd88MEHiqenpzJ//nxl7969Sq9evZTw8HAlOzs7/5iaNWsqf/zxh/L3338rERERyrlz5/L3AcqMGTOuuQf/Pl8tcXFxBWJauXKlAihr165VFKX8v/4TJ05UfH19lUWLFimnT59W5syZo7i5uSmTJ0/OP6Y8v/6KoigPPvigUqtWLWX9+vXK8ePHlXHjxikeHh7KhQsXFEUpX/VfsmSJ8vrrrytz585VAGXevHkF9hemrl27dlXq16+vbNmyRdm4caNSvXp1ZeDAgfn7z549q1SvXl3ZvHmzMmfOHKVmzZr5+9auXasAytGjR6+5HzabTfX6//TTT8qECROUb7/9VgGU3bt3X1NGWf5MuFn9U1JSlE6dOimzZ89Wjhw5osTExCjNmjVTGjduXKCM8vz6//LLL8rKlSuVkydPKgcOHFCGDRumeHh4KHFxcRWi/lfNnTtXqV+/vhISEqJMmjSpwL6yXH9FufU9GDx4sNK1a9cCsSUlJRU4pizfg1vV/8SJE4qPj48yduxYZdeuXcqJEyeUv/76S4mNjc0/pix/Bjo6SdZuYNy4cUr9+vWvuy8lJUUxGAzKnDlz8rcdPnxYAZSYmBhFURQlNTVVCQsLU+Lj45X4+HilatWqSlpamqIo/3tTXu8PvqN4+eWXlbvvvvuG++12uxIUFKR8/PHH+dtSUlIUJycn5ddff83fFhoaqpw6dUrJyMhQmjRpohw8eDB/383+KDiaUaNGKREREYrdbq8Qr3+PHj2UoUOHFtjWt29fZdCgQYqilP/XPysrS9HpdMqiRYsKbG/UqJHy+uuvl+v6/zeuwtT10KFDCqBs3749/5ilS5cqGo1GuXjxoqIoirJ//36lSZMmSkZGhnLq1CmlatWq+cdefVBJTk4u3coVws1elxv97panz4TCvC+3bdumAMrZs2cVRak4r/9Vqamp+Q+WilIx6n/hwgWlUqVKyoEDB5SwsLACyVp5qr+iXP8eDB48WLnvvvtueE55ugfXq3///v2Vhx9++IbnlKfPQEck3SBv4vjx44SEhFCtWjUGDRqU39y7c+dOLBYLnTp1yj82Ojqa0NBQYmJiAPDw8GDIkCEEBwcTEhLC8OHDcXd3V6UexbFgwQKaNGnCAw88QEBAAA0bNuTbb7/N33/69GmuXLlS4B54enrSvHnz/HsA8NZbb1GzZk08PT1p0aIFtWrVuqP1KAm5ubn8/PPPDB06FI1GUyFe/1atWrF69WqOHTsGwN69e9m0aRPdunUDyv/rb7VasdlsmEymAtudnZ3ZtGlTua//vxWmrjExMXh5edGkSZP8Yzp16oRWq83v6lOnTh3q1auHp6cntWvX5t13372zFSlFFeEz4d9SU1PRaDR4eXkBFev1z83NZdq0aXh6elK/fn2g/NffbrfzyCOPMHbsWGrXrn3N/vJe/6vWrVtHQEAAUVFRDB8+nMTExPx95fke2O12Fi9eTI0aNejSpQsBAQE0b968QFfJivYZeKfJotg30Lx5c3744QeioqK4fPkyEyZMoHXr1hw4cIArV65gNBrz/1BdFRgYWKBv8bhx4xg9ejRarfa6b8hWrVqh1RbMl//bv1ktp06dYurUqbzwwgu89tprbN++neeeew6j0cjgwYPz6xkYGFjgvP/eg2HDhjFgwAByc3Px9va+5joDBw5Ep9MV2Hbo0CFCQ0NLoVbFM3/+fFJSUnjssccAKsTr/8orr5CWlkZ0dDQ6nQ6bzcbEiRMZNGgQQLl//d3d3WnZsiXvvPMONWvWJDAwkF9//ZWYmBiqV69e7uv/b4Wp65UrVwgICCiwX6/X4+PjU+B+TJ8+nY8++ggXFxecnZ2vuVblypUL/DssLIyDBw+WSD1KU0X4TLjKbDbz8ssvM3DgQDw8PICK8fovWrSIAQMGkJWVRXBwMCtXrsTPzw8o//X/8MMP0ev1PPfcc9fdX97rD9C1a1f69u1LeHg4J0+e5LXXXqNbt27ExMSg0+nK9T2Ii4sjIyODDz74gHfffZcPP/yQZcuW0bdvX9auXUvbtm0r1GegGiRZu4GrLQgA9erVo3nz5oSFhfH7779f9xfsRjw9PW+4b/bs2dSsWfO24iwtdrudJk2a8N577wHQsGFDDhw4wDfffMPgwYOLVJarqyuurq7X3Tdp0qQC38QAhISEFC/oUjJ9+nS6detWrLjK6uv/+++/88svvzBr1ixq167Nnj17GD16NCEhIRXm9Z85cyZDhw6lUqVK6HQ6GjVqxMCBA9m5c2eRyimr9S8tvr6+N9y3cePGAn/ADQbDnQjpjiqrnwmQN9nIgw8+iKIoTJ06tVhllNXXv3379uzZs4eEhAS+/fZbHnzwQbZu3XrNA/qtlLX679y5k8mTJ7Nr1y40Gs1tl1fW6n/VgAED8v+/bt261KtXj4iICNatW0fHjh2LVFZZuwd2ux2A++67j+effx6ABg0asHnzZr755hvatm1bpPLK8megWiRZKyQvLy9q1KjBiRMnuOeee8jNzSUlJaXAtwixsbEEBQUVuswqVapQvXr1Uoj29gUHB1/TZatmzZr8+eefAPn1jI2NJTg4OP+Y2NhYGjRoUOjrBAUFOew9ADh79iyrVq1i7ty5+duCgoLK/es/duxYXnnllfw/UHXr1uXs2bO8//77DB48uEK8/hEREaxfv57MzEzS0tIIDg6mf//+VKtWrULU/6rC1DUoKIi4uLgC51mtVpKSkor0OxEeHn7NN7NlQUX4TLiaqJ09e5Y1a9bkt6pBxXj9XV1dqV69OtWrV6dFixZERkYyffp0Xn311XJd/40bNxIXF1egtd9mszFmzBg+//xzzpw5U67rfyPVqlXDz8+PEydO0LFjx3J9D/z8/NDr9dd9Jty0aRNQMT4D1SRj1gopIyODkydPEhwcTOPGjTEYDKxevTp//9GjRzl37hwtW7ZUMcqSc9ddd3H06NEC244dO0ZYWBiQ94ESFBRU4B6kpaWxdevWcnMPAGbMmEFAQAA9evTI31YRXv+srKxruiLodLr8b9gqyusPeQ9pwcHBJCcns3z5cu67774KVf/C1LVly5akpKQUaHVcs2YNdrud5s2b3/GY77Ty/plwNVE7fvw4q1atuqZloCK+/na7nZycHKB81/+RRx5h37597NmzJ/8nJCSEsWPHsnz5cqB81/9GLly4QGJiYv4XWOX5HhiNRpo2bXrTZ8Ly/hmoNmlZu4EXX3yRnj17EhYWxqVLlxg3bhw6nY6BAwfi6enJsGHDeOGFF/Dx8cHDw4ORI0fSsmVLWrRoUehrJCYmXrN+hpeX1zWTGqjh+eefp1WrVrz33ns8+OCDbNu2jWnTpjFt2jQgb42o0aNH8+677xIZGUl4eDhvvvkmISEh9O7du9DXSUlJueYeuLu737Db2J1kt9uZMWMGgwcPRq//369KRXj9e/bsycSJEwkNDaV27drs3r2bzz77jKFDhwIV4/Vfvnw5iqIQFRXFiRMnGDt2LNHR0QwZMqTc1T8jI4MTJ07k//v06dPs2bMHHx8fQkNDb1nXmjVr0rVrV5544gm++eYbLBYLzz77LAMGDChSt864uDjMZnOBbb6+vqXeFehW9U9KSuLcuXP5a4tdfWgJCgoiKCiozH8m3Kz+wcHB3H///ezatYtFixZhs9nyY/Tx8cFoNJbr19/X15eJEyfSq1cvgoODSUhIYMqUKVy8eJEHHngAKP/v//8m5waDgaCgIKKiooCyX3+4+T3w8fFhwoQJ9OvXj6CgIE6ePMlLL71E9erV6dKlC1D278Gt3gNjx46lf//+tGnThvbt27Ns2TIWLlzIunXrgIrxXKQqtaejdFT9+/dXgoODFaPRqFSqVEnp379/gTXGsrOzlWeeeUbx9vZWXFxclD59+iiXL18uVNlXpyi93s+/p/1W28KFC5U6deooTk5OSnR0tDJt2rQC++12u/Lmm28qgYGBipOTk9KxY0fl6NGjhS7/Rvfg/fffL+mqFMvy5cvz1z35r/L++qelpSmjRo1SQkNDFZPJpFSrVk15/fXX89dEUZTy//rPnj1bqVatmmI0GpWgoCBlxIgRSkpKSv7+8lT/q9NG//dn8ODBiqIUrq6JiYnKwIEDFTc3N8XDw0MZMmSIkp6eflvX51/TPpemW9V/xowZ190/bty4/DLK8mfCzep/s9iurjupKOX39c/Ozlb69OmjhISEKEajUQkODlZ69eqlbNu2rUAZ5bX+1/PfqfsVpWzX/2YxDB48WMnKylI6d+6s+Pv7KwaDQQkLC1OeeOIJ5cqVKwXKKMv3oDDvgenTpyvVq1dXTCaTUr9+fWX+/PkFyijLn4GOTqMoioIQQgghhBBCCIciY9aEEEIIIYQQwgFJsiaEEEIIIYQQDkiSNSGEEEIIIYRwQJKsCSGEEEIIIYQDkmRNCCGEEEIIIRyQJGtCCCGEEEII4YAkWRNCCCGEEEIIByTJmhBCCCGEEEI4IL3aAZQUs9lMbm6u2mEIIYQQQgghVGY0GjGZTGqHcdvKRbJmNpsJDAklLTle7VCEEEIIIYQQKgsKCuL06dNlPmErF8labm4uacnxvPfTFkwubmqHg0axEWg5SKyhNopGp3Y4d5zUX+ov9Zf6O2r9k+J0vPtMCEOHrmTcuGolXr7NZmfLlmO0aFEDna54Iw2GDz/BkiX38Nb/XcHL11bCEZYuR3/9S1t5rv+y2R6snmvnxIkktDd4a9/o/Z+VZWbLln00bBiNt7fHHYq4cFaujOXxx1vx1BvxRDUw31ZZZen1t1lhypu+nDtlpmmTnWzbdhfV68DjryViMBSvTEeqvzkrg9cebUFubq4ka47E5OKGs4u72mGgUWy4WFxwNrir/mZVg9Rf6i/1l/o7av0rVYWQMAPz5oXSp082d98dUKLlW602XFxccHd3Q68vXv0/+SSKZcsMbFsTzH2DU0s0vtLm6K9/aSuv9VcU0Ok8sNk8uXQpgVq1PK973I3e/x4e7vTu3fFOhVskffq48fTTFs4c9aNBq9v7fStrr//wCVZ+/CSArVv7odef5fj+MOZ848awl5Pyj4m7qGfONC9a3pNJo7uzb1peWat/WSETjAghhKhQOvXNIjWtET17tiI4WE+HDieYOvU0WVkWtUMDIDjYhdq1/2b9ImdyczRqhyMquLPHjHw8xo+lv3kSHPw3lSs7F7kMu91OdrYZm83xWoq1Wg2VKu1n41JnLpwqZpNSGeXhZefZdxIY9FwiGl0IAOkpGhQlb7/dBp+M9ePAdh3fvufP9x/5kJkun0l3miRrQgghKpSW92Ty6exLPPl6PI3a+HHsZHtee+0eqoRWpk6dSzz//DGOH0+77rnnz2dityulHuM777iRnaln3gwvDu92IiVBl/8AJcSdkJuj4adJ3nwwOogrZy/xzjsrOXQoEA8PY5HLSkvLZNq0P7l0qXTmFsjNtbFtW2Kxz//zTw9QTvHpS76cOVb0+pVlGg3c3TWTd6bH8tY3lxj9fiKaf/IxrQ5qNcpFo9FQo8Yqdm5UmPBUAEf2OKkbdAVTrrpBCiGEEIVhclFoeFc2De/KZpAdzp8wsn+7iX1bmvDDDy788IMdd/eDNGp0noEDndmwIYuFC8NIT6+PVpeBm+spQkJiqVUrl3vvdaNPn0olGl/btgHUqbOa9QvbsW5BXvd+o5OFwMoWQqraCa5iJbCyhaBQC/7BVnTS40iUsL+Xu7JllTN9+y5mypQITKbwYpfl6urMvfe2wdfXq+QCJO/Lk5dfvsCq1Q2x5Ebh7n6Ahx46x1tvhePiUvhWsogID2I2Z3L33UeZ9HI0I99NonrtnBKN1dF5+tjx9LFfs33QqCQSYv04eaQJ776zhY8+9mXyaw3p2j+Nex9Olc+eO0CSNSGEEBWaVgthNXIJq5HLvYMgNUnLwR3O7N9Wjc1bolm/3gAo1GqUTeM2iaQl67h4JoILJ6szf76JuXO1jBq1n4EDz/PGG6ElFtfGjeGYzSeJiUlk06Z09u2zceqUMwe3BbJ9XRh2mxcAeoOVLg9m0OXBtGJPDCDEvykKrF/kTHDwFqZPj7rt8gwGPRERVUogsjwbNsTx+usZHDp0N1CHJm2zqdkokZiV1fi//6vD99/H0qbNDj7+OITw8MLNZRAa6sr27dm0aHGAya/V5ZnxidRsWLEStusxGGD4W0l8ONqPt8bV4/++OczPPy9l2e9dOLrXwLCXk/ENdLzureWJJGtCCCHEv3j62GnVOZNWnTOxWODMESd8AqzXfSCxWuDgDmdWz49g2rS6/PrbJWb+dJLjx9OoWdP7tmMxmfS0bx9I+/aBBbbb7Zc5cCCFjRtTmDfPxpJZndi+1sTDo1OJrCMPmOL2nDpsJPaCM2+9lVki5eXmWjh69AxVq1bC3d2l2OWcPZtB794pnDnTBmdXK50fyKbtvcn5s6a26JjJhdMG1v7lzro1XWncxEKNyE28/baJzp2Dbll+YKAzO3fm0Kz5LqaMa8xTbyRSt9ntzRBZHri623nho0S+esuHJ55oyiuvbKJnz3W8/HIt3n0mgEdfSKHhXTeffEQUn4xZE0IIIW7AYIDIujk3/OZYb4D6LbN54cME3phymaZt8x5EO3WqRePG55gz50KpjHHTajXUq+fNiBHhrFpVnZ9+2kx2+gk+eymQX770Jivj9iYBUBQ4f9Kg2jg5qwVOHjLKOD2VbFrmhtF4kZEjr9/1MTfXxjffnObcucIlc2ZzLmvWbCMpqfizLU6ZcpomTYO5EnsXA0ek8MHPsdw3OPWa5S0qh1t4ZHQS7/10mR4Pmbl4uTX9+99N9cgktmxJuOV1fHyc2LXTDX+/LXzzth+Hd8v4LAAvXxsvfpJArSbw3nud2LjRzPbtsXh7b2XaRH92bSr6xDOicCRZE0IIIUpApXALDz6dDECPQVkkptzFk0+2IyjYgwYNzjNixFE2b44vleTt3ntDOHHCQJ8+i9m8XMu4JwLYudG52MnO2gVuvDcymD++9bqthElRwJxd+MTRbodta10Y93gAn7wYRFKcDIi50zLTNWxfZ+Kuu/ai11//MbFPn1O8+uo91K9fh8pVLHTqdILPPjtJQsL1W6E8PFwZNWoQYWHBRY4nLS2Xjh1P8MYbHQmPcufNb+Jo0yMDo9PN35geXnZ6PJTGezNjGTwmkRxLA554IrdQ1/TwMLJzpw9ubvuZ972HfGnwD5OzwvA3E2l/Xybz5vWgd+8Uli9zp0qVbcyc5EVmuqQVpUG6QQohhBAlrGPvDNr2yubQThNH9zpzdE9zZs1yZtYsDQbjFUKCj1CpUjZBQXaqVNFStaqRGjVciIpyx9fXhNlsJTExh+RkCykpuaSkWKld2/2m42+MRh3ffx/F7t0HeeghK9+934o6TTMZOCIFn4DCjynJSNWy8Cd3TM6HWDO/FlkZWu7uksHl8wYunTESd1HHvQ+nUTXqxg++sRf1bFvvzvZ1TsRddKblPRn0HZaCm8e1ExhAXlJ3cIeJud+7c/msMxpNAnqDHi+/0hsLY7XktSDt2mSifoscWt6TgYubPJVvW+uKzQZvv339NQjnzr1ATMw9dOydRnCYhaN7Qzm8qxo733Hi00+zmDXrDJ9/fooXX4wskXjuv/8ce/bcQ5+hqXTqm37DBblvxGDI6x5pztIwe+pdxMRsp2VLv1ue5+JiYPToc7z9dn2O7HGS8Wv/0OrgwadSqFojl1lf3kXjJvE8M3wvX36Vw/LfPXjm0f8de2yfExdO5c2uWaO+mcrhjrE8SlkjyZoQQghRCnQ6qNvMnD/mJTNdw8lDJo7tc+H4/mbsP6glZosRxf6fp0+NFZRr/zxrNDnUqrWezz/3pEkT3xtet2FDHw4eVGjXbgX7t3fmg1FGPvj5MtobNFKZszWcOOCE1aLBZoNdG13IzTWz+e9svvhiMbNm9WDLKjfAhsl0AYvFGZvNnVHvFZwq3ZILGxe7MagHfDAqiJycXKpU2Uq7dllsWNOavTEBPPhUGs06ZKHR5CVoGWlazp80suRXN04edMHDcy+ffZbApEl69C5NS2SmuawMDcf2mTh9xImsTA3ZGVqyMjRcPKMjLdmAh8de/jxQh79+dGfYK8nUb1Gxx95sWuoMShb33adgtWVitxux2YzY7U7Y7Uas1uYEhVroPSQFvQHu6pKJosCV83pOHsh7306a1Ibg4K0MGpQ34U52tpnlyzfTokV9goJu/N69HotFg7dfLp3vT7+terW8J5MFP7nx8stpbNhw62QNYNSoanzy6RGWzQ6VZO0/mrXPIqJWDt9/5M3kyV0ALRuXWgoka3P+z4MLp42AQuVwE69PKZ2lG8o7SdaEEEKIO8DVXaFe82zqNf9fMmC3Q1a6ltRkHWnJWtKSdZiztBidlH9+7Bj++f9Du0ysnteOzp01VKu2kY8/drpm4pGUlFzeeOM0c+fVIDurM4GVs+nxUOYNEzWAud95sXHpv1vsbDzwwDKioqKYMsWTwYNXcO6ckU6dAvDyMvLiiweZPr07F0+nUelf35Qf2WNi0c9eDOoBw4evZOTIqnh5VQbgwIGjPPRQJj982pZfvrQTHGom9qKenOy8b92dnY/zyisnGTs2Aq02jFdfc6JV5+K3qpmzNezb4syODc4c3GHCbgOdPgOT6RJGQyYmUxaVg7N5Y4ozzZv70LjJPtLTG+Didv2Wv4qkVhMLvkF6DIZaGIxgMCrojQoGg4LBqGB0yqFpu0z0/5p5VKOB4FArIVVywAJVIuyMHl2XWrVO07ChDxqNBoNBj1Zb9LGU4eFW9u1zwm7jpu/jW3EyKbTvlc2y2a05e/YoYWFutzxHq9Xw2ODTfP11NGeOGalao3DdKCsK30AbYz5KYPkfHiz40eua/dVqWYm/lMDjj+9nypTuxF7QE1jZeucDLeMkWRNCCCFUotWCm6cdN087lare/NhqNXPp1CedTcvcWD7nLvr21VO58t+8845CtWouvPJKAtu2t8BmrUWdppl06B1LdIOc/AVuryctWcvmlS60bLmUyZMDMZl0uLrq8fH533TtzZpVo1mz/53z9tvh/PRTLKvnu/Po80n52xXlfxd69dUI9Pr/PVnXqePFvn1efPrpcn76KR2dzYeWzc3UqaOhaVNXuncPwm4P588/LzJvXiY55h6ERhZ9kePsLA2zvvRmz2YTVosed/cDdOt6ljFj/GnY0Ie8xx7Pf35g795kmjTJISOjPiMmJMhMmkC/YSm3Xcawl5OY+FwQPXu6s3evGV9fEz16tClWWTVr6pk3T0tygu62p4hve286y+cE8/zzl5g7t0ahzhk3rhrfTT/P8t99eOqN4i+8XV5pddCtfxo16ppZv6DgTJ81G5rZsLgKbdqcZerULHZucKH7Q2kqRVp2SbImhBBClBEmF4VOfdNpe286MSvdWDa7GUOGmEBjxWCA1t2zad/zEgGVCvft9fpF7ij2XKZODb5hS4PdrrBxYzzz5qUQE2Pk/IWqWCz+HNxR8Boazf/Gex05kkatWl7XtKSMGRPBmDF5/282W5k79zK//JLOiy8aSUyqg90WhU5vpUa9TGo1Knp3xM0r3Ni5wYmOHZfzwgu+/4xNunadsIsXM3n88Uts3dYeZxctz01MlEStBHl42xkxIYmPXoikbdsY9u4NxG63o9Np0RZx0FmjRnnvy8RY/W0nax7edlrek8XGlc1IS4vDw8N4y3OMRh19eu9j9uzuXLmQSpC0DF1XRK1cqtfMhn8NS4usa0ajsTN/fipVqmxj69rmdBvITb9AEteSZE0IIYQoYwxGaNMjg7u6ZrBzgwtZGVqatc8s0gQZOWYNaxc4U7v2OsLCquVvz821MW/eJebPz2L3Hm8SE6KxWvMmiwiolE2j1jaq1UwmukHBmf88vG35CVvnzg0wm+04OcXi4hKLj08alSrlEB4O587B3r1+JCfXxm6PRm+wElErlxZdc4msG0vVqJxiLe6dGKtj/SIToaF/M2fO9Rdyzsqy8Oyzp1iwsCVQm873Z9LlgTScXWVikZJWJcLC0JeSmTaxNQ8+uIA2bXbTs2dbqlWrXKRymjb1BuwkXNFTo97tJ9Qd+6SzaWkwr766lSlTCrfg90cfhfPn3ARW/uHBI6OTbn2CAPK6flepbmbDRncGPZTFRx85c/GMQSYaKSJJ1oQQQogySqfLG+hfHDErXcnOzGtZGDz4KFlZsG+fDwmJdbHbotAbrIRH59KonYVqNeMIj87B1f3GSU1YpIV3ZlwCYOjYBOKumEiK8yIxzo+EK7Btp471650wOFmoXsvC3ffmEln3CmGRuQXGPxVVapKWZb97smGRC4MG/UTt2magYEJgtyuMH3+CadNqk5PTnRadMuj1aCzepTjbpICGd2XT69EUlszqTv36qfj7+xS5jD//vIxGU43E2JJ5ZA2qbKV+iyx+n9OEkSMvEB3tectzPDyMtG+3jdWrutLzYR0ePjayM7VYcjXXrPMmCmrQKpeFP7UkOnozOl0aO9a5UDm8+OvtVUSSrAkhhBAVkNWiwdkll6PH2nPosAatFsKjc2neOZca9WOpWiOnyEmUq5sCFqjb3Iyiufbb8xyzBr1BKZFZHjPTNaz804PV81yx27Np1245Q4dWJiDgf905c3NtvP32SX78MYyMjG7UbJhJ38evyDf7d1DX/mlcPqvn88kP8NNP+3BySsVksuDqasXV1Ya7u51q1TSMHRuKr68p/7xt2xIZNiyHCxc6UrlaNo3bFO9LiesZ8EwKE5/1p1u3Sxw+bMVkuvXj8KRJlalXP4u3Hg/EatGiKHndOcd+eoVqNWXikRvp2DudmBUmRo3ypWrVHWxd24qej4BOMpBCk1slhBBCVECd+qbTqe/tTYdeVE6m2+9uaLPCij89WP67K5YcK02brmTatBBCQ/83YcTly1m8/PJ5li9vQG5ud6rXzqL7wDhqNrr+os2i9Gg08PDoZDz9PEm8UofsTMjOhNgkMF/QkpOtY+VKA99+l0GNyBieekrL77/nsmVLB1w94JHRibTolFnk9dVuxsvPxpNvJDPplXp07bqKdesibnlOpUquvPbqZjZtsuHvr5CRAUuX9kCRCUQ5edDI3yvcqNs0g+7NCu4zOikMfiGFT8bWxs8vjpQEA6vmetDlQZlopLCK/NbfsGEDPXv2JCQkBI1Gw/z58wvsVxSFt956i+DgYJydnenUqRPHjx8vcExMTAwNGjSgatWqTJ8+vcC+9evX06FDB3x8fHBxcSEyMpLBgweTmyvfWgghhBCOJjdHw6FdJv741os507xK/Xor/vRgwU/uREasZePGQyxbFkloqCsAsbFpDBu2mSZNg1i0qBv1W3ryyuTLjPk4QRI1FRmdFPoNS+HJ1xMY9V4Cr0xOYMK3CXz4Sxyfz73M29Mv0vl+GxevtOH55zuybXtnujxo5p3pcbTqXLKJ2lWRdXK4/4lU9u7twtixxwp1zpgxEcybV4Np06Lo2DGvFdDFXbK17etdiVlpYuakvDX0pr7ty6Zlrtj/6SEaUTuX9r0yOHO2FYGBW1j4sxtxlxyjvags5DVFfvtnZmZSv359pkyZct39H330EV988QXffPMNW7duxdXVlS5dumA2/+9DctiwYbz55pvMmjWL999/n/PnzwNw6NAhunbtSpMmTdiwYQP79+/nyy+/xGg0YrNJn2AhhBDCEVw6a2DVXHcmv+7HCw8E8+UbAaxflMPW1XkPrqeP3MYgtJvISNWyfLYrdeusZuPGatSqVXC80eDBl9i5szWtu+l494fLDH05ibBI6fLo6PyDbdw3OJX3Z8Yy+v1YJnx7hfsGp2JyKd2JX9r3yqBZ+wymf9+BP/64UKRzL1/Oe19lZ5ZCJlnGJMbq8Pffwbx5OwCIO3+UX77wZuo7vpiz8qZ+vO+xFLx9ISPDC602jl++8EJxgHl9ykJeU+S0tlu3bnTr1u26+xRF4fPPP+eNN97gvvvuA+Cnn34iMDCQ+fPnM2DAACDvxjRq1IiAgAC8vb1JT8/rhrFixQqCgoL46KOP8suMiIiga9euRQ1TCCGEEKVg/1YTX08IAMDHdzud74lj0CAPunULYteuBDIz4cu3/Og2MJuOfdJLdJruZbM9sOTm8u23vtfsmznzHFu3due+wWl07S9drMoinQ6i6t+5JRQ0Ghg0MpnL5/x4eng9vL0P07Fj4K1PBMLCjGg0OXw8JgifADP1Wlio1zSdoLqlHLQDSrgCfn7pNG4cyt9/x7FvrweffbaSDz+8m4/G+DH2kwScXRUeeT6Vya/VJihoE8f23c3Z4+ovNF4W8poS/Trg9OnTXLlyhU6dOuVv8/T0pHnz5sTExORve+utt6hZsyaenp60aNGCWrVqARAUFMTly5fZsGFDSYYlhBBCiBISVT+Hu7rkPYzotDZeey2QHj2C0Wo1NGiQN9tfvbpr+fM7b+bP8Cqx6ybG6li70JXWrdcTFVWwRS0lJZexL1UjtHoO99wviZooPKNJ4bl3E/ENcGHgwGrs2FG4ha8feSSUw4ePMWbMMgJ8NvL3sky+fc+/lKN1TE7OcOJkbf7+Oz5/20svRTBjxk6unNOydoE7ANENcri7awaxsXkD2+wO3oPUUfKaEk3Wrly5AkBgYMFvJQIDA/P3QV5zYWJiIvHx8Xz55Zf52x944AEGDhxI27ZtCQ4Opk+fPnz11VekpckHrxBCCOEIjCaFh0clM3xcPFnmRrRrV5033yw4hmPhwmp0776YFX94sG7h9RfbLqoFP3mi1aTw7bdVrtnXr985LJYqPPZiconMNCkqFjdPO6M/SMTV04d77w3k6NHCTS0fGOjMG29UZ8GCIFxdLqPVVswhO0++noynjw8DBzYFoE2bCzzxxFH27ctCo7GxcKYXuea8Jva+w5Lx8Fao0zST8CjHno/CUfIa1Ub3ubq64urqWmCbTqdjxowZvPvuu6xZs4atW7fy3nvv8eGHH7Jt2zaCg4NvWqZGsaFR1P9FuRqDI8SiBqm/1P/f/61opP5S/3//tzyr3yyDCdOymPN/Xkyf3okVKzbx668eAFitNn78sTrduy9jwQ8dqBSWTY26xX8wS0/Vsn+Lkd691+HtHYnV+r/7+8sv5zl8uD39hiYRUiUHVBwHU5Fe/+spy/X38bUx5oM4vnjNnx73ZrJ6VTqVKrkU6tzdu5PJyW2Cl3fee9xqsd3W2oFlja+fjVcnx3Jk5z9phaERS5a4oChanJwgqEoqRqMVjQIuLjB+2mWMBiWvxaiUfl/v9HuwNPKaqzSKUvzhfRqNhnnz5tG7d28ATp06RUREBLt376ZBgwb5x7Vt25YGDRowefLkIl8jOTmZGjVq8MwzzzBhwoTrHpOWloanpyezZs3CxaVwv1hCCCGEEEKI8icrK4uHHnqI1NRUPDw8CnWOo+Q1/1WiLWvh4eEEBQWxevXq/EqlpaWxdetWhg8fXqwyvb29CQ4OJjMz85bHxhpq42xwL9Z1SpJGsRFoPUisvjaKpuL1x5D6S/2l/lJ/qX/Fq39yvI4/v3XjjbEbeecdL7p1y+HyZQuzZnVm6NgE6jYv/tT5y+e4s/IPDSdPxpOaauGbb86zYIELly83Rqs18OKn8QRWspZgbYqnIr/+8L/6By7YjNZa9lrXrjqQEMrYDUPItplw0mRS2XiESPdT1A+6RPOwJJpUzcJkvHbmHKtWx/omrfnmOdgQ35VAlyQeq72WTqF70GsdfIBWCbDrdcT2anXD97/FAgtnelGnadZttbQXRrbh9teQVDuvuarIyVpGRgYnTpzI//fp06fZs2cPPj4+hIaGMnr0aN59910iIyMJDw/nzTffJCQkJD9LvZn/+7//Y8+ePfTp04eIiAjMZjM//fQTBw8eLNAH9EYUjc6hPhwdLZ47Teov9Zf6S/0rqopYf68AGPpKKtjg5OkmvPtuXpcgg5OVStXtt3U/sjINZGUZaNIklosXm2K31yU4NJuO/XJo0jYN/2AFBce53xXx9f83rdVWppO1el6n+aPrexxOqsLRpMocSa7MjsQOzDsfBNtBRy5BhpNUdT5BlPdF6gfH0yI8hVrheXWe8/A6Nh/czBurOzBuw0OsCKnH5+2m3+Kq5ceN3v92RcP6Je6s+NObGvWy6DM0rdRmgyzs758j5zVXFTlZ27FjB+3bt8//9wsvvADA4MGD+eGHH3jppZfIzMzkySefJCUlhbvvvptly5ZhMpluWXazZs3YtGkTTz/9NJcuXcLNzY3atWszf/582rZtW9RQhRBCCHEHabWADd75Po7UZCPOrnZMzgra28xbujyYxt4tflhoRo9BOTRqnUJQZfVb0kT55W400yzoOM2C/jd5TobFiePJlTieHMKp1CBOpNTk94vt+f6sG2yBMXW/oHXeRIe0ic5mQ/Riak0KQH+7vwDlhNFJod29mSyf48nJQ+l8ODqIOk2zaNYhiyZtskp0mY/CKgt5zW2NWXMUV8esffbHAZxdHKMbZJBlH1cM9SrkN2tSf6m/1F/qL/WX+kv9K279g+duLNMta0WhKBCf7cn3B+5h+cUG/PzrKkLm/c2hcyYOx3ry0aHRvNZsDr2rb1U71FJn1+u43Lf1Td//aclaXhscRIvmK6leXeHPuWFkpNemfa90Hnw6ucRiyc5K54X76xRpzJqjUm02SCGEEEIIIa7662RzYjO9eLLecrVDKTSNBgJcUnmh8TyOZYQA0Pb3iWRnG9Bio4pbPG0qH1Q5Ssfh4W3n7q7ZbFrakhkzzvP55048/PBiFi/oTrP2mVR18On81SDJmhBCCCGEUNXO2Aje2/oAChq6he+kinuC2iEViVFn48M2P5JLQz5oPYNKxgRCXJMw6CpGC2NR3NMvjQ2Lg2nTJpWwsAvkLfucy8zPPXn9q/jb7jZd3pToothCCCGEEEIURUK2O69tephIp224apKZfbS12iEVi68pA4AWQccI84iXRO0GfANt3PtwGjm2xhw90Y7Dx9rj5qlgt2uwWlUYuObgpGVNCCGEEEKoZnzMQKyWHP589HfeX1WbP08+zFP1luJuLP5yD8KxdR+YRveBakdRNkjLmhBCCCGESlISdaya687EZ/34YJQfu/92xl7+l+TKZ7Nr2HqlJk/UmEVEoI1XOx3EYtOy4GRztUMTwiFIy5oQQgghxB2mKPD1eF8ObHdBo7EQFLyNjCwXpk1sRFCVbLo/lEnju7PK/fiddIszAJU88xYJjgi0Ud1pJ4eTqqgZlhAOQ1rWhBBCCCHuMEUBg1EBNLi6HeO9iTZOn/bgk09WY8nez/cf+vHus/6kJJbvbC020xuAEI/s/G3exiSSzG5qhSSEQ5FkTQghhBDiDtNq4cnXkxj5ThzO7tUZMuRu7rrrNB06+HDiuA9ffbWGhEupfPayL6lJ5fdxbUdsdQyY6VgrPX+brymNJLOLilEJ4TjK72+/EEIIIYSDq9XYzFtT4+j3eBonTrajRQt/rFY7gwaF8scfp0iOT+Ozl/zKbcK29UokNZy342b63zY/53SSze7qBSWEAymfv/lCCCGEEGWE3gCd+qYz8Nk0cnMrk5qatzBwmzYB/DHnBEn/JGwXThlUjrRkWWw6dsVGcFfQvgLbA1wzSMlxJ9dWvruAClEYkqwJIYQQQjgAo1PeNJAZGdb8bW3bBvD77OMkJyQx8dlg3h/lz6Zlrpiz/7ceVY5Zg816TXHXdeG0gUmv+HPxjPqJ376EquTYTdxb+0KB7W0i4tBg46ElYziWHKJSdEI4BknWboPdlvehJ4QQQghxu/T/PFKkpxfMvNq3D+TM6VRGjVpKVvJ+fvnCm5ceCmLWl9789rU3L/YP5s2hARze7VTgPLsdNi515eVBgXw61o/lv3sw+VVfju1z5rv3vbDk3qmaXd/a8/Xw0MbSLiqjwPZOtbNY1ucNMjJzmXGwk0rRCeEYJFm7Dct+92DiiGAObDfd+mAhhBBCVGiWXLDZrt2uKHDxtIGDO/KeJ/7dsnaVi4uB8eMjOX7ch6VLt9G08SpiVmWzaZmVZk1XolgP88Xrgfw0yYfMdA1XLuj57GU/Zn3pi4frFlLi9vPXjy5Ycy/yzjsrib2gY94Mr1Ku8Y1Z7VpWnK1He7+VGPSaa/bfXcNMtNs+ksyuKkQnhOOQddaKKSVRx9Lf3IBMZn3pwfhpORhNitphCSGEEMIB7VjvwszPvdDq7NRrbqFus2yMJoUD20zs22ogNcmEVptNpcobqVXL96ZltWjhx+LFflitKQDo9ZHY7QrPPLOYOX+0Zd+WQMzZOnS6S0yYsInnnqsGQFLScTw8DOj14WzdupJFf/WgdmMztZuYS7v619gZV53kHC8GNz54w2O8nDK4LMmaqOCkZa2Y/vrRA0VJ55tvtpGSqGXxrx5qhySEEEIIB2OxwG9fezP9Qz8C/DfTsP5qDmy7yPQP/Zg6wZ+ta1KpErKBN99czunTpzmwPxgPD2Ohytbrtej1eY9yWq2Gb76JYtXKQ/h6x9Co4UoOHUzNT9QAfHyc8o+fMSMSX9/t/PCJFxZLydf7VpafaYS/7gxd6mTc8Bg/53Tisz2xyEQjogKTlrViOH/SwJZVbvTtu4T+/aP49deVrJrblVb3ZBJYuZAjfIUQQghRriXG6vi/d324cEpP376L+fbbGmi1eV3+tm3bSmamlbZtA9Bqq92ipMJr2NCHvXtvfZxer6VOnXj+3qzFbtOA4c72DtofX4Xa7lvz78f1PNz4JD/Nc2beiZY8GLXpDkYnhOOQlrViOLbfhEaTy5QpEQDMnBmOVpvEol+kdU0IIYQQeePTPnvZl9jzSUyduonp06MKJCbNmvnSvn3gTZOV0mS3K8RsqUvjNmacVBjG0SLkOLvSWpF7k++4766RTXvv+Uzbfw8ZFqcbHyhEOSbJWjHYLKDVmTGZ8hom3d2N9Lx3Gzs3uBB3SRorhRBCiIpu1VwPkuL1/PLLafr3r6J2ONf49tsz5OZUoVXnTFWu363qTtLsgfy+3fumx316799kWQzMPNThDkUmhGORZK0YrFYNGk3Br4I++ywcnS6ZFXOkdU0IIYSoyFISdSz51Y0G9VfTqVOQ2uFc17RpOnwDzETWyVHl+um5zgAkZN68xSw6xEq/4F/55XBbErLd70RoQjgUSdaKwWbVoNUUHI3r5WWkXbstxKxyJitTnS4NQgghhFDfwpkeKEoaP/3kmInaokWXOH36bu7qZkajwiNLttXIW5sHUtt5IyM7XLnl8S93PECO3YnDSY7XQilEaZNkrRisFg0a7bWdrMeM8cVu03F8n/SrFkIIISqqXZtcGdA/hipVHG/a+aSkHJ54MoTASjY69k5XJYZTKUEk5Xgxsf0SdIV4Eo0IsKDBRny2Z+kHJ4SDkWStiCy5sHODEU+PC9fsa9HCD5PzKQ7vdlYhMiGEEEI4BisvvVRZ7SCuq2fPS1gs4Tz+agpGJ3XWh72YkbeOXIPQrEIdb9Br8NDGk5AlQ01ExSPJWhGt+MODpHgdX355/emLoqOOc3CH4Q5HJYQQQghHodVpeP75i2qHkW/27PPUq3eB0DAzhw7dw/1PpFIpXIXF1f5xMdMXV20SgZ6FTxa99bHSsiYqJEnWiiD+sp6lv7nTpMlqOne+fj/0fv20ZKQVbjFLIYQQQpQ/eoPCvn0+aoeR79dfszl/vh01G4fTf3gSbe+98ULUd8KFdF8C9OeKdI6XPkEmGBEVkiRrhaQoMHuqJ1pNHL/8UumGxz32WCW02uw7GJkQQggh1GazweJZed303F33smSJ43xx27q1DoDuA1Np1zNDlUlF/u1Chg9BTkVrebQqBow6WylFJITjkmTtJtYvcmP2VG/OHDWyN8aZgztcefbZvfj733hMmpubETe343cwSiGEEEKobelvHqya6wbA9u2eREY6zviqBx7I6w106ohjTIB2Md2HUPfYIp2TbvPC00mdNeGEUJOs4HwTh3c7sTfGlXUL3dFo7fgHbOGNNyJueZ6HR9odiE4IIYQQt8NugyN7TWiAmo3MxS4nx6xhzXwXatVaC4Be71jfhfv4GNBqM0m84hiPfVlWJ1wNuUU6J9PmhashoZQiEsJxOcZvrYOKrJPLvi1GXnhhNcuXa5k0yROt9tZ9B3x9i/+BL4QQQojSdfmcns0r3Ni62on01LzWpna90rn/8WR0xXgy2rzClexMHW+/7Y7F4njPAK+/fhq7vRaN21xSOxQAwtzjOZkSBBwq9DnhzofZeSW69IISwkFJsnYTkXXNKIo3AQF6Nm6sWujzgoLy+lQrCiDrYwshhBCqs9th3xZn1vzlyvH9Luj0yURHrefZDwysXJnFvHlduHhax5OvJeHmaS90uTYbrPzDhSpVNtGsWRB//x1firUoOrtdYc6cKGo3ySQ49PozWd9pYZ4JHL4YWqRz+tfcwYvbu3A2zZ8wD8e6x0KUJsdqp3cwfkF5H2rbtuUU6bxKlfJua3aWZGpCCCGEI9i6xpX/e9efK2dO8vjjSzhz+jKbNlVjwIAqTJ8exfvvr+XUYTPvjfTjwqnCL8Gze5MLyQkm3npLnTXLbmXy5FNkZ1enU191Z4D8t6oecVy2VMduL/w9e6RFHCZNGivONiqw/WRKEKvO1S/pEIVwGJKs3cTmFW6gsTJ8uF+RzqtWLW8GqLRkXWmEJYQQQohCOLzbiTEPBvP9Rz7s/tsZgzGOc+ec+fjjGri5FZyt8amnwlmy+Dg5WWf58Hl/Dmw33bJ8RYHlc1zx9tnJ/fc73iLYdrvCF18EUCk8m6j6RfviuTRV9YglW/HgdHzhO3h5uCi09FzN0tMN8nouAQtPNeXRZaN5ddNj7I0PL6VohVCXJGs3YLPCqrkuVA3bSOPGvkU6Nyoqb7bI1ERJ1oQQQgi1xF4wkJWhZf/WOPZvdcGgT7np8c2a+bJvnwVvrx1M/8CbpLib/x0/ts+JC6ecGfGMY0588eGHJ0lJach9j6arPl3/v1mVvPuqK+JT6KB6ezifEcTe+HDe3fogb295iNaeCwkz7OXDbX2w2uWxVpQ/8q6+gR0bXEhNcmLChKInXNHRedP1pkrLmhBCCKEKc5aG00ec0OkzuHzJzsyZG/jxx7hbnufra2LlShM2ayLff+SN/SZLe509bgSNhaeeqlKCkZcMs9nKF19EEVk3izrNHGvSk6NJlfDUXqGqf9HWTXugaTIe2jhGrBnOkpMNeaPuxyx6cgOf3zObE6mVmHu8VSlFLIR6JFm7jtQkLQtnuuHnt41evUKKfL6n5z/dIJMkWRNCCCHupNQkLX9+58UrDwexfZ0TjRvHAHDvvSF06hRUqDLCwtx4990DnDxkYtnvN14vLaq+GRQDM2cWbYHnO+G5505iNofT7/FUh2pVA7ic6YO//kKRzzPqoVfIX/hqT/FXr3G83v08AF3rZnCPzx9M2dvtn1kmhSg/JFn7j5REHZ++5EdqUhrTplluq6xUSdaEEEKIO0ZR4Ks3fVnzl4Y6tVezcuVOli+rXqyynnyyKi1aLGfRzx6cOmK87jFVIiy4eeYwZ07RWojuhPl/NaJJ2wzCIm/vWaY0RHhd4YKlBrbCT7qZ7/8G7uPUmCm0r5ldYPu0BzfjwxlGrH6SCxlFG74ihCOTqfv/JSlex2cv+ZKWlMIfc07Rtm3gbZV3aKeB3sNAKymxEEIIUeoO7zJx4bQz77yzkmefLV6S9m9//lmV6OhD/N87Nahe24JWBzodGJzsBFexUiUil6j6Vg5uiwYcY1r8q7RaC26ejjlDZV2/M5iVHsScMHF3jaJ10bzRereBnnZWPPod7X58lmdWPcV3nacQ4JJaEuEKoSpJI/6RGKvj0xd9SUtOYv7807RtG3DbZSbFO3Fo561nkxJCCCHE7Vv2uxuubod45pmqJVKei4uB2bMzcDVt4/Shw5zYe5TDO0+we8Nl/vjWlc9eDmTnBlfM5qrs3p1UItcsKX6+Zzh5UI+9GK1Xpa2mz3m02Fh7/Paftf4t3N/KkgFTMJtzeXbNE9gVB+v/KUQxSLIGxF/W88mLfmSkxbNo4XlatfIvkXJdXY+x9i+3EilLCCGEEDd2YLuJ4/tdGPLY2Ru2vhRHy5Z+HDoUxKmTXpw+7cHZM65cuKDlwoWTzJixnkcfXUzHjouJjHSsv/f335/J+ZNO/PipDzbHavTD1ZCDjymVIwklm6wB1K5s4fGo2ZxJCybXJh3IRNlX4d/FKQk6PnnRl5ysKyxbGkvDhiXXz7lXr9N8/31t4i/r8Q92sE9KIYQQopy4eMbAt+954x+whXHjIu7INV1cDPTuXYnevf+3zWp1nLFr48dHYjYvY9q0e8hI9ePJNxJxMjlGt8iLGT4kmH1oVeV8qZR/LDGASq5xmPSON15PiKKq0C1rNitMe8+b7IwUVqyIo2FDn9suMz7+fwNe777bFYD0lAp9m4UQQohSk5qk5as3fdDpTrNxgyt6vfzNveqDD2owbtxajuyBz172IyPVMe7N3xdroSOXB5vceimF4jiWFk6kT2yplC3EneYYv7Uqmf+DF2eOGvnoowPUq+d92+Xt3JlIVFQ1XnvtBAA7dmQBEFhZvtkRQgghSlpujoavJ/iSkZbGgr+SCQx0VjskhzNqVDW+/norF09n89EYPxJj1Z+petOlmtQwbcffo3Ra+i7lRhDuIcmaKB8qbLK2+29nVs31oEeP5Tz2WFiJlDlqVCqK4sqff+bNQHXokAZXjxxc3R2j24EQQghRnvzxrRcXTsJXXx6gSROZrv1G+vevwpzfD5OakMh7z/mzYbGbauPYsq1GdsRWp32l3aV2DS9dHHHZnqVWvhB3UoVL1ux2uHxOz4+fehESsokff6xRIuUePZrKoUNtqdkom+zsagCcO+dGSKjj9F8XQgghypOje/RER2+if/8qaofi8Nq3D2Tt2isE+G7m1yleTHgqgN1/O6Pc4e+Tt1+JxGI30r/h2VK7RqT7MY4mBpda+ULcSRVigpHkBB2zp3pxYLsTNmtelZ2czrFihXuJzRh16lQWiuJElwdiWfiDCwCxsQ1p1zu3RMoXQgghxP8oCiTFG2jSQP7OFlatWp7s3u3JvHkbGTvWhWkTm1I1KosHnkyjWs07cx83X6qJv+4MTcLNQOlMrV8/4Dzrjt6HxabDoJMvzUXZVq5b1iwWWLvAjfFPBHBwezbt2y1n4MDFPP74EtasiadSJdcSu1b79v5otGYunDLS7r68sWoarZ6292aU2DWEEEIIkSczTYvVoiciolw/ypSKPn0qceKEN+PHryDu/Hk+eTGATctK7pnoZvbEhdHQc1uJLq/wX81CE7AqBk6lBpXaNYS4U8ply1qOWcOmpW4sn+NCeoqBGjXWMGeOP6GhUaV2TZNJj5vrSc6dqMqjo1IAuKuzGXdPB1yNUgghhCiD7Da4dNZA5WoWEmPzHmFq1zapHFXZNWpUNZ56ykr79mv45YtOJMbq6fVoKppSyqOsdi1n0wPpHXWxdC7wj7sjM9CssHM0uRJRPqV7LSFKW7lK1uZN9yIz3YsjewxkZegID9/Ad/9noHPnqnfk+pUrX+LM0WroDYAFej2aAqg/65IQQghRHiyf48GCn7xo0DKTqAY5ADRpIhNJ3A6TSc/ff4cxYMBils3uQWKsjkefT8p7lilhZ9MCsCoGGlZKKvnC/8XHTSFAf4pjyZVK9TpC3Anlqu/A9rWJnD54hOrV1rJkyXZ27apC5853rgm8YcNc4i6ZMJvzvpLSlatUWAghhFBPdpaGFX+44OW1nQPbzcye6oNWm014uLvaoZV5Wq2G33+P4umnl7JjvRM/fuqDvRSGep38p1tiy4j0ki/8P6o5H+VwkiRrouwrV8na0aM2Tp3yZP36CFq29Lvj1+/Y0RXQcPmMZGlCCCHE7di1yZnfvvbK//f6he7kZGv44w87O3acJ7LGasLDt5Tq2KeK5v33IxkxYhU7Nrjw29feJT5T5NHkynhqrxDiXfpDRBoHnuJIUmUsNunhJMo2ySpKUHR03rd76SnywSCEEEIUV0qijp8+8yLHbKB190x8A62s+MOFqKh1NG4cDsC2rW4qR1k+vfNOJElJS5k1qwcubnZ6D0ktkXIVBdacrUNjz79LpLxb6RB5ia9OOHEkuTJ1/UpvmQAhSlu5allT26ZNyQD4hcg0sUIIIURx/f6NF1ZrOjpdKltWu3L6iJHsTCMDB97hRcEqqClToujefTHL53iyYk7JdDM9lFSFC5mBDKq3p0TKu5X20RkYNNnsiQ+/I9cTorRIslaCduzIQaOx4x9sUTsUIYQQokzat9WZ3X+7MmzoFqKjt7JlpRMRNXPxCzLz+WRf7HZJ2O6EX36JomXLpcyb4c3v33izdLYHJw46Fbu85Wca466N44EmySUY5Y2ZjBqqO+1m/YU6mK2lMFuKEHeIJGslxG5X2LzZHZ+AHAzymSCEEEIUmTlbw6wvPfD128b770cyapSRjDQnju134sGn0khOasy7755UO8wKY9Gi6jRpsowNS2ws/lnHp2MD+XmyD5npRRsnqCiw6mxd2vquwqC/c2MMh9Vdy8H4yjy4aCzn0u78XAZClARJ1kpInz7HuXixDd0HZqkdihBCCFEmLZzpSXqKnZ9+tKHVaujXrxLOzieIWelKnWZmajbMZMqUOqSl5aodaoWg1WpYubI6CfEJXLlymX79FhOzCsY/GcDeGOdCl3MqNYh4sw/31TxaitFea0SHWNY88Abp2Vr+OtXijl5biJIiyVoJmDr1NBs2dKfX4BRadc5UOxwhhBCizDl7zMjav9zo1GkNrVr5A3nJQrt2R9kTY+LsMSO5OVpycyuzdGmsytFWPHq9lu++i2LVykM4G3fzfxN9SU0q3GNkzOVoDJjpVT+ldIO8jqbVcqjrtoVdsTJ2TZRNkqyVgB07ctFo7XR9ME3tUIQQQogy6ZcvPXF2PsGPP0YU2P7GG0HYbfDh80GcO5HM2LHL6N+/ikpRioYNfVi50gSKla1rXAt1TsylKKKdt+Lhos54w1aVjnE4KZRsq1GV6wtxOyRZKwGpqeBksqKRpV6EEEKIIrPb4PxJZ3r2PI7JVHBVoVq1PGndejmtWi3l8KEkXnutukpRiqvCwtyoVGkL6xa4cHSv003XYzuSVJnd8dVoW3nvnQvwP7rWvIxN0bM/IUy1GIQoLllnrQSkpekwOct0/UIIIURx5Obmfdvp6Xn9bz0XLKhxJ8MRhfDRRxqGPX6Oz1+NJLR6Nl0ezKBhi4z8/Rabju8P3sP3BzpRyXCYkW1PqRZry+pmXDVJ7I6LoFnQcdXiEKI4pGWtBGRm6nB2lamEhRBCiOLIzclL0lxd5bGkrOjWLZgL5+G115aTlnCEb9/z571ReWMNjyRV4rHlz/H9gQ4MqvI9+579P0J97arFqtNCTZcd7IytploMQhSXfCqWgMxMAy5uakchhBBClE2Wf5I1NzcZT1CWaLUaxo6N4PRpd774Yg0GdgPw9OpnycjI4q9732TaQ/sxGdV/XVsEH+VAYhi5Np3aoQhRJJKslYDsbCPOkqwJIYQQxXK1Zc3DQx6ky6pHHgll27YAAF6vN4l9I76mU23HWc4o0i8Fi91Iak7hJkURwlHImLUSYM5xxVmlGY6EEEKIsi49NS9Jq1rVpHIkoiSM6ngZvYMN5T+e4IWTNgdf53S1QxGiSKRl7TZlZVnISK9BpaoWtUMRQgghyqT0lLzHkchI6aYiSsfJFH8qu8Wj1ciX66JskWTtNs2efQm73Zmo+ma1QxFCCCHKpMvnDGg0FqpUkS5qonSczwyhikei2mEIUWSSrN2mv/7KwclkoUr1XLVDEUIIIcqcQztNLPnVnejo9Wi16k9EIcqnZKs/HsZstcMQosgkWbtNe/cGU6N+LjoZEy2EEEIUybkTBr55xwc/3+2sWVNZ7XBEOdbEeycbL0Zjtcujryhb5B17G5KSckhNrU10fWlVE0IIIYoiMVbHl2/4YjQc5++/XTGZZM4zUXqeaH6A5Bwvtl6RBdZF2SLJ2m34+eeLKIpRxqsJIYQQRWDO0jD5dV9yzXGsWpWFv7+z2iGJcq59dCYh+qMsOdVU7VCEKBJJ1m7D4sV2XNxyCA6TmSCFEEKIwtqxwYX4SwZ++eUM0dGeaocjKgCtVsO9VVax7kJtMnJliQhRdkiydhsOHa5CzUZWtHIXhRBCiEKLWemMr+8uOnUKUjsUUYGMaH0Si93A4tPSuibKDkkziun8+Uwy0qOlC6QQQghRBPGXdZw67ELv3vFqhyIqmBrBVu7yXMwnO/vy9pb+pOa4qB2SELckyVox/fjjZUBHVP0ctUMRQgghyoxta13RarN49dVQtUMRFdCyJ1cytuZnrDpdkwcWvsSyM41QZJ1s4cAkWSumpUt1ePuZ8Q+2qh2KEEIIUSbEX9az9i8Xqlbdgq+vjBsSd55OC2/3OsO2wROIcvqbNzc/wsi1T3Ihw1ft0IS4riIla++//z5NmzbF3d2dgIAAevfuzdGjRwscYzabGTFiBL6+vri5udGvXz9iY2MLHLNgwQJq1KhBVFQUixYtKrBv3rx5tGjRAk9PT9zd3alduzajR48uXu1K0clTNajT1IJG1u8UQgghbiklQcekl32w5l7ml19kUhGhruqBVtY+s4wprSZwPM6dAYvG8uOhDrIOWwVSVvKaIr0j169fz4gRI9iyZQsrV67EYrHQuXNnMjMz8495/vnnWbhwIXPmzGH9+vVcunSJvn375u/PyclhxIgRfP3113z11VcMHz6c3Ny8dcpWr15N//796devH9u2bWPnzp1MnDgRi8WxZluMiUkgxxxGzUYyXk0IIYS4lYxULZNe9SUjLZlFi67IDJDCYQxtncj+4R/T1X8OU/Z0Z8Tqp0nLlaUkKoKyktcUaQXKZcuWFfj3Dz/8QEBAADt37qRNmzakpqYyffp0Zs2aRYcOHQCYMWMGNWvWZMuWLbRo0YKcnBx0Oh0NGjTIC0CvJycnB6PRyMKFC7nrrrsYO3Zs/jVq1KhB7969i1Sp0vbjj4loNHaZXEQIIYS4hdgLer77wJvE2Cxm/3aKJk0C1Q5JiAJ83BR+e2wbc3ce4cnVY3h8xbNMbv8dwa7JaocmSlFZyWtuq603NTUVAB8fHwB27tyJxWKhU6dO+cdER0cTGhpKTEwMAB4eHgwZMoTg4GBCQkIYPnw47u7uAAQFBXHw4EEOHDhwO2GVug0bPAmrYcbFTUakCiGEEP+VmaZl3UI33h/lx/gnQ7h8Lptvp+2nY0dJ1ITj6ts4jSX93iMt08Jjy57jaFIltUMSd5Cj5jXFTtbsdjujR4/mrrvuok6dOgBcuXIFo9GIl5dXgWMDAwO5cuVK/r/HjRtHQkICiYmJvPTSS/nbR44cSdOmTalbty5Vq1ZlwIABfP/99+TkOM6Mi2azlbi4+tRukqt2KEIIIYRqcs0aYi/oSU3SkmvWYMmFPTF5k4a89XgQs7/xwJy6lxEjlnDi+BX69JEHX+H4mkXksHHwZNztZ3li5Qg2X4pWOyRxBzhyXlOkbpD/NmLECA4cOMCmTZuKdb6n57X91V1dXVm8eDEnT55k7dq1bNmyhTFjxjB58mRiYmJwcbn5ehg2mx2r1VaseAprzpwLGI0R1G0ci0a5/rWubr/R/vJO6i/1//d/Kxqpv9T/3/8tjywWWPmHB5uWmsjOMhbY5+xsoev30KvXCkaODCIy0gfI+5a6tP8+O4KrdawIdb2e/PprdSpHcnuqBClseuZH7v+5O69tHczoRgvpFbH1lufZ9boC/61ortbbET7/ihqDI+Y1V2kUpeirSzz77LP89ddfbNiwgfDw8Pzta9asoWPHjiQnJxfIQsPCwhg9ejTPP/98US/F6dOnqVGjBtOmTWPIkCHXPSYtLQ1PT09mzZpV6IoLIYQQQgghyp+srCweeughUlNT8fDwuOmxjpbX/FeRWtYURWHkyJHMmzePdevWFagQQOPGjTEYDKxevZp+/foBcPToUc6dO0fLli2Lcql8VatWxcXFpcDMLDfSokUN3N3dinWdwqpdO5vwWuEMGZt0w2M0io1A60Fi9bVRNBXv2xWpv9Rf6i/1D1ywGW0FbF2w63XE9mpF/Q+/RJdbfrrLKwqcyw1hR3ZdJl4eQW+X2XxR9+drjrMajawZ/hwdpn6BvhzVv7Ck/nn17/TGq+gdaAjL7ZqSeD9vZU+gg3EDU9xexE2bdd3jrCYnNn/8Xrn7/S8sm9HI3pdHlvrfv9++9mbrGgO1am3i4kUfUlMb0PmBNLo8kIb2nwFe2Yb0W5bj6HnNVUVK1kaMGMGsWbP466+/cHd3z++v6enpibOzM56engwbNowXXngBHx8fPDw8GDlyJC1btqRFixa3LH/8+PFkZWXRvXt3wsLCSElJ4YsvvsBisXDPPffc8nydTou+FJuez5/PJC6uLp0eTC3Um1DR6Crkw9pVUn+pv9S/4tZfa7VVyGTtKl1uLrqcsv+wdiInlM/jhvJ3RiPibAFosFNHt4O3omZjuMnDqD4396b7y7sKX/+cHAzm8jNj9mjXn6lmPcUjqdPplvErC70G4qe98Zf25eX3v7hK++9frSa5rFvsxYsvutCpkycPPLCSv37qyolDJoaMTcLVXSnU9R09r7mqSBOMTJ06ldTUVNq1a0dwcHD+z+zZs/OPmTRpEvfeey/9+vWjTZs2BAUFMXfu3EKV37ZtW06dOsWjjz5KdHQ03bp148qVK6xYsYKoqKiihFoqpk+/BOio2Shb7VCEEEKIUmO2G/kk9nE6Hf+ZrWlR3Of8OzMrP8nFxh3Y1WIkwS6F/1ZYiPKgl+dmvnR9noO22hyyyqQjaopqkIPBaGXixGz0ei3z5tXgjTdWcmS3jQ9H+5OSULhEsazkNUXuBnkrJpOJKVOmMGXKlKIUDUD79u1p3759kc+7U1au1OPjb8YvqOJ+WyyEEKL8SLR6sTOrLgfMNbjbdQfNXPeyPr0Zr14ay0VLIE+5T+Hdmn/iZijaIq5ClEdLze0J057lbkOM2qFUaEYnhV6PpvPnd52ZNGk5zz8fwZgxETRteoD7Hwjn05d8GfF24bpB3ooj5DXFng2yIjp9uhoNW1vVDkMIIYS4LbuyavPGpRfYa64NgAvpfMoT1DEd4YA5mia6DfxRcwQNfGJVjlQIx5Gg+GHQWDDjhAvlp5tnWdShdzoHdzjx3nuN6d79LFFRnrRpE8DcP0/Tt6+Gr970UTvEEnNbi2JXJEePppKdHUGNevLLKYQQomxKs7ny+qUx9Dr1LTm5uXwVOJqDdbqR1LITnwa8hMkSx+TAMfzd7EVJ1IT4j8983uWCrRJvZbyudigVnlYLj72YhNHkQc+eFuz2vFayu+8O4I8/TpGSmKZyhCVHkrVC+vnnOAAi65af2Y2EEEJUDIoCi1Pb0+7Yr8xO6sYb3u+wq/kzPFU9hhqeSei08FzkemJajOWZ6pvQajVqhyyEw6nrfJoJzm8xzTyEVblt1Q6nwvP0sfPYmBTi41swdOix/O1t2gTw3bcnVYysZEmyVkhr1ujxCTDj4y/j1YQQQpQdNkXLcxfG8eT594nW7mRn3ft5q9YSDFq72qEJUeY87/MrbTUreSbtUxLtXmqHU+HVbW6mXa90Fiy4hwULLuVv79AhQMWoSpYka4V0+nQ1ohvIeDUhhBBlyztXRjI/tTNfBL7AiibjiPRIVjskIcosnVbhB/8XMSsGRqV/SCHmqBClrO/QZIKq2HjiyXAOHEhRO5wSJ8laIch4NSGEEGXRdwkP8m3iQMb7jmd49b+le6MQJSDUKYFJri+xILcH262N1A6nwjMY4ZnxSTg5B9C5sydnz2aoHVKJkmStEGS8mhBCiLJmcWp7xl8ZzeOuU3g1eoXa4QhRrjzktQJPklktY9ccgl+QjdHvJ4E2jNatdSQmlp8GFknWCmHtWh0+AdkyXk0IIYTDO5lThSfPTeTJ8+/T2fgXX9X7Se2QhCh39Fo7bbRrJVlzICFhFp57NwlzbjQdO0qyVqGcOl2N6AaSqAkhhHAcFkVX4N+xFl9evvgS7Y//yo70GnwWMJb5jT9EJ3/phSgVnUzr2GFtSIrdQ+1QxD+qRuXyzLgkUtMaqB1KiZGP8Fs4fjyN7KzqMl5NCCGEw9iQ0ZSah1aRZPVAUeCzuGHcdWwOC5Lb84r3+xxrNoCRkRvQa2X2AyFKSzfXzdjRsd5yt9qhiH+JbpDD0LFJaodRYvRqB+DoZs7MWxRUxqsJIYRwFFPiHyFbceaSJZBd2XX4NO4JhrpOZWL0b/iZ5MtFIe6ECNNlIjjKmtw23Oe0RO1wxL/UalJ+PgclWbuFNWtkvJoQQgjHcchcnU2ZzQBItnnyVfyj1NVtY2q9GTLboxB3WEfDapbm9pQp/EWpkW6QtyDj1YQQQjiS6QkP4k08AMvT2rI9qwEvBn0viZoQKujsvIHz9ioct0UwLXswAJvSG6sclShPJFm7CRmvJoQQwpEkWL2Zm9KFJ7y+RYeFmUl9CNcepn/obrVDE6JC6uS6HQO59Ez9jQmZrwDw0qWXSbB6qxyZKC8kWbsJGa8mhBDCkfyU1BctVp6rthIvTSJW9Iz2/05mfBRCJe56M621a7DZ4Vf3RwCw2RSev/AGKTZ33r48krO5ISpHKcoyGbN2E5s2afD0Mct4NSGEEA7hz+QudDfNJ9A5C09NEkZyGFb1b7XDEqJC+yNwJFrsmNxgGQP5uNI7PHzia+46OocUuxd++mSe8f9Z7TBFGSXJ2k2cOhVERF1J1IQQQjgGN10mOk3e36Xn/KcT7JSMk15mNhBCTZ76LAAsmADoW2U/T135knVZrXHWeHPeEqxmeKKMk2TtBsxmK2npUVSNkvFqQgghHEO48SJnMqsCMKL6JnWDEULc0Ff1fwZ+5p5t4zifK8maKD7p5X4DK1bEodidqVojV+1QhBBCCADCjBc4b6+qdhhCiEKqYrjI+dwgtcMQZZgkazewbFk6Go2dKtUlWRNCCOEYwp0uEKtUJssqHWOEKAvCnC5x0RIk67CJYpNk7QZ27nQisLIZk7P8dgkhhHAM/vpEFLRcyPRQOxQhRCFUc4klW3EhyealdiiijJJk7QYuXAylWk272mEIIYQQ+Y6Zq+FMBtXck9UORQhRCNVc8hawl3FrorgkWbuOxEQzWZkRVI2S9dWEEEI4jt3Ztail241eK70+hCgLqrsnAMiMkKLYJFm7jvnzYwGdTC4ihBDCoezOqkkD0361wxBCFJK/UyaupHEgO0rtUEQZJcnadaxZY0ZvsBISZlE7FCGEEAKA4+aqXLKG0NzzsNqhCCEKSavVMMD1Z75OeJgVaa3VDkeUQZKsXce+fW5UichFJ5NtCSGEcAB2RcNLl16miuYED1TerXY4Qogi+KreT3Q0Lmb4+bfZmVVb7XBEGSPJ2n/Y7QqxcVFUi7aqHYoQQggBwOK09mzLasjk0HdwM0ivDyHKEr1W4fcGHxGt3cNjZz/mVE4VtUMSZYgka/+xZMllLLlB1GpiVjsUIYQQAoC92bUI0ZyhZ+UjaocihCgGN4OFRfVfw8Mez6Azn5Fg9VY7JFFGSLL2H99/n4HBaCWyriRrQgghHMOpnMqE6U6qHYYQ4jYEOmexqPbzZFoNPHLmUzJsLmqHJMoASdb+Y8fOKtRqnIPBoHYkQgghRJ7TOZUJN55ROwwhxG2K8kxkbvVnOWmuzLBzH2C2G9UOSTg4Sdb+5ejRVNLTalOvubSqCSGEcAx2RcNZS2UinC6oHYoQogS0CjjPr+Ej2J5Zl2fOv41V0akdknBgkqz9y9SpsYCGOk2z1Q5FCCGEACDN7kaOYsKkk4lFhCgvuoUcY3rlUaxKv4uxF19FkXXuxQ1IsvYvK1d6EBaZjYe3Xe1QhBBCCAC8dOl0cV/H5MSnSc2VLlNClBf9w/byeeBL/J5yLz8m9VM7HOGgJFn7R0ZGLleuNKRei1y1QxFCCCEKGB88mVT8ePPw/WqHIoQoQU9X38wgl+mMvzyKA9mRaocjHJAka//4/vsL2O2u1GsuXSCFEEI4llDjZR7yXsj8zN5qhyKEKGFf1/2ecO1hhp9/h0ybs9rhCAcjyRqQkpLL998b8PDOoVK4jAkQQgjheFq57uSyEsapdE+1QxFClCAXvZVfo9/gcq4fr1x6ScaviQIqbLJmtyv89tt5WrU6TUT1Kpw92552PbPRaNSOTAghhLhWU9d9ACy+Ul/lSIQQJa2edxwfBb7J3NRu/J7SQ+1whAPRqx1ASbIXYl6QrCwLI0acYvnyKLKz2+PulcM9fc20uOcSQZWtpR+kEEIIUQz++iTauW3m64TBPBOxAV2F/bpViPLp6eqbWZM6i9cvjaGR80EiTWfUDkk4gHL1Ud+gQQYLFly64f5Zs85TPVLHX391I7pRMCMmxPH+zFh6D0mVRE0IIYTDG+X/IyfsdZh9rqHaoQghSsF3db8miHMMP/82dkW6e4lylqzpnaMYPPguWrU6w8mTafnbL1/Ook2bU4wY0RafwCq8/HksT76eSJ2mZnSyDqEQQogyopnrXpq77OKjy09gt8vAFiHKGw+jhY9DP+RwTg0OmWV2SFHOkrWXJ8XT7/E0Tp1uS/Pm1Rk8+Chvv32C+vUDOHykA/0eT+XVL+IJi5RJRIQQQpRNo/x/4KC9MX9drKN2KEKIUtA56CgmMtmQ0UztUIQDKFdj1vQG6NQ3nWYdMln4kxcLFnQHNNRqlMXAZ2PxC7KpHaIQQghRZF/EDUavsfG03y+0cdtGPdMhPrw4lD5VxqgdmhCihDnrbTTWx7AxoynP+P+sdjhCZeUqWbvKw8vOoOeSaNsznfRkHdENzTLLoxBCiDJrnzmapWnt+TuzEV9WnsCogB8Ydu4jll+KpEvIcbXDE0KUsPbum/k45SXMdiMmba7a4QgVlatukP9VOdxCzUaSqAkhhCjb2rptBSAmoyGdT/xIgD6RIH0s8+NaqhyZEKI0dAvYQ45iYluWLNVR0ZXrZE0IIYQoD9r9k6y94vMhPvYLDDn7IXqNFbPipHJkQojS0MTnAj6aWDZlNFU7FKEySdaEEEIIB3YiJ4yFqR2pZjzDoexq/FnnddJtLlywVCJXMaodnhCiFGi1GloaN7A5U5bpqOgkWRNCCCEc2O6sWkyMfZY4qz8bzO0Jd01mhOdXAOTay+XQcyEEEKSPJ8XqoXYYQmWSrAkhhBAOrLnrHgAy7K7EKlXYmxLMuOi/CNGcxqC1qhucEKLUOGtzpKuzKJ+zQQohhBDlRRXDZSrpL3HRGgLAwiuNaOizhE31n8ColSVphCivTNoczHZJ1io6aVkTQgghHJhGAy3dduNOMr5cYXtmXQCquKYT6JylcnRCiNIiLWsCJFkTQgghHN5Q3zmk480A91+ZWH2G2uEIIe4AvdaGVZFOcBWdJGtCCCGEg6vvfITensv5LWMgYa4paocjhLgDkiweeOlS1Q5DqEySNSGEEKIMeCXwG9IVb94+2lvtUIQQd0C81Qc/fbLaYQiVSbImhBBClAFVjJd53O93pqU9zdkMmc5biPIu3uoryZqQZE0IIYQoK571/xFnbS6vHH1U7VCEEKUsyeaLnz5F7TCEyiRZE0IIIcoIT10GzwfOYK75IbYnhKgdjhCiFKUrHug1spZiRSfJmhBCCFGGPOI9Fy9tKrMutVY7FCFEKWrvsp6laW3ItDmrHYpQkSRrQgghRBli1FoJd7rAuVxpWROiPBsVvphsuzNzUrqrHYpQkSRrQgghRBlTxXiZi9ZKaochhChFkR7JdDAuZkbi/dgVjdrhCJVIsiaEEEKUMZUNV7hsD1U7DCFEKXuu0hxO5IazMaOp2qEIlUiyJoQQQpQxlYxXiFVCsNjlz7gQ5VnnoGPU0O5letKDaociVCKf8kIIIUQZU9lwBRsGzmR4qh2KEKIUabUanvT7hdXpd3Mqp4ra4QgVSLImhBBClDFVDJcB+DuxusqRCCFK27Cqm/Egid9TeqgdilCBJGtCCCFEGRPhdJa2rlt44dK77EkKVDscIUQpcjNY8NPGkm13UjsUoQJJ1oQQQogyRqtR+Cb0dYKMifQ+8jmXs1zVDkkIUYoyFTdctdlqhyFUIMmaEEIIUQZ56DKZWfVFzFpPeu17F5td7YiEEKUlW3HDTZuldhhCBZKsCSGEEGVUFeNl3g/5hD22VhxL91U7HCFEKbDbFTJxw1WStQpJkjUhhBCiDAs1XgIgMcdN5UiEEKXBbDdgwyDJWgUlyZoQQghRhvnokgE4khGkciRCiNKQkps3sYibTpK1ikiSNSGEEKIMq2SMo6nLHr6Oexi7XVE7HCFECUuzmACkZa2CkmRNCCGEKONG+M1kv60Zy69EqR2KEKKE7UmpDECIIVblSIQaJFkTQgghyriO7puJcjrBR+cfVTsUIUQJW5rUgiqGC1Qznlc7FKECSdaEEEKIMk6rURjh/zObrPewNaGy2uEIIUqI3a6wLrs9Hdy3oNGoHY1QQ5GStalTp1KvXj08PDzw8PCgZcuWLF26NH+/2WxmxIgR+Pr64ubmRr9+/YiNLdhku2DBAmrUqEFUVBSLFi0qsG/evHm0aNECT09P3N3dqV27NqNHjy5+7YQQQogKopfnSirrL/Hhmf5qhyKEKCH7U4K4pITTwX2z2qGUO2UlrylSsla5cmU++OADdu7cyY4dO+jQoQP33XcfBw8eBOD5559n4cKFzJkzh/Xr13Pp0iX69u2bf35OTg4jRozg66+/5quvvmL48OHk5uYCsHr1avr370+/fv3Ytm0bO3fuZOLEiVgsliJXSgghhKhoDBobrd13cMISqXYoQogSsiK+DjqstHTZrXYo5U5ZyWv0RTm4Z8+eBf49ceJEpk6dypYtW6hcuTLTp09n1qxZdOjQAYAZM2ZQs2ZNtmzZQosWLcjJyUGn09GgQYO8i+v15OTkYDQaWbhwIXfddRdjx47NL79GjRr07t27yJUSQgghKqIMmwvumjS1wxBClJAt6fWpbTqKqy5b7VDKnbKS1xR7zJrNZuO3334jMzOTli1bsnPnTiwWC506dco/Jjo6mtDQUGJiYgDw8PBgyJAhBAcHExISwvDhw3F3dwcgKCiIgwcPcuDAgeKGJIQQQlRoaXZX3LWSrAlRXuzIbUZT1/1qh1HuOXJeU+Rkbf/+/bi5ueHk5MTTTz/NvHnzqFWrFleuXMFoNOLl5VXg+MDAQK5cuZL/73HjxpGQkEBiYiIvvfRS/vaRI0fStGlT6tatS9WqVRkwYADff/89OTk5xa+dEEIIUYFk2Fxx16arHYYQogSczfDgkhJOU5d9aodSbpWFvKZI3SABoqKi2LNnD6mpqfzxxx8MHjyY9evXF6kMT0/Pa7a5urqyePFiTp48ydq1a9myZQtjxoxh8uTJxMTE4OLicstyNYoNjWIrUiyl4WoMjhCLGqT+Uv9//7eikfrn1duu16kciTqu1ttmNKpy/VyjE556MxaVrm/957pWla6vNqn/P/V3clI5EnVcrXdJvf7r0mvh7GyhsfdhbAbHf09d/dxzhL9/hY3BkfOaqzSKoihFiug/OnXqREREBP3796djx44kJycXyELDwsIYPXo0zz//fJHLPn36NDVq1GDatGkMGTLkhselpaXh6enJrFmzilR5IYQQQgghRPmSlZXFQw89RGpqKh4eHoU+zxHymv8qcsvaf9ntdnJycmjcuDEGg4HVq1fTr18/AI4ePcq5c+do2bJlscquWrUqLi4uZGZmFur4WENtnA3uxbpWSdIoNgKtB4nV10bRVLxvl6X+Un+p/0ECF2xGa1X/28U7za7XEdurFa3GvobeXPG6sVtNTmz++D3V6v951tP8X9ZgToW0RKe9re9ii8Xq5MSqd9+n0xuvoq+Awxjy6//cSAxms9rh3HEWk4lVX3xZ4V//tjs2orff/ud/k68eJSrYwuvNfy+B6Erf1c9/R/j7n20oXndwR8prripSsvbqq6/SrVs3QkNDSU9PZ9asWaxbt47ly5fj6enJsGHDeOGFF/Dx8cHDw4ORI0fSsmVLWrRoccuyx48fT1ZWFt27dycsLIyUlBS++OILLBYL99xzT6HiUzQ61d8c/+Zo8dxpUn+pf0Wuv9Zqq5DJ2lV6cw76CviwepVa9W9s3UFs9oucSA2kjvOZO379q/Q5ORUyWbnKYDZjMFfc2fsq+uuvt9vQ227/8/9EWm16VF9c5v6WOMLf/8Jc39HzmquKlKzFxcXx6KOPcvnyZTw9PalXrx7Lly/Pv+ikSZPQarX069ePnJwcunTpwtdff12ostu2bcuUKVN49NFHiY2Nxdvbm4YNG7JixQqioqKKVCkhhBCiImqs34MGO5uyGqiarAkhbp8GBa3mzreQVxRlJa8pUrI2ffr0m+43mUxMmTKFKVOmFCkIgPbt29O+ffsinyeEEEKIPB7aDGrqjrA25y6eZr7a4QghboNek4PFXnF7qJS2spLXFHudNSGEEEI4nvudFrDI1odEq/pjuIUQxafX5GKx3/b0EqKMk2RNCCGEKEcecZ6NFT0zUnqqHYoQ4jbosZBrk2StopNkTQghhChHArXxdDOuYIZ5MHa72tEIIYrDblfIUVwx6qxqhyJUJsmaEEIIUc4Mdf6FI0odNmbVVzsUIUQx7DprIlvxINr7vNqhCJVJsiaEEEKUM+0NGwnTnuX/0gaqHYoQohjWHvMDoJavJGsVnSRrQgghRDmj1Sg85jyLv2z3y0QjQpRB2y5WobLrFTydstQORahMRi0KIYQQ5dDDpt+ZmPkiM1J68qLfLLXDKffsdki3mgDYa4kmJceFJMWbJLsXSYo3KYoXSXgD8JLTZGoYzqoZrnBwh1KjqRNyQe0whAOQZE0IIYQohwK18XT/Z6KRF5FkraQlW135NbULv2X346hSk1S80Ttr+JUltDWvJjvHkH+sF8l4a5LxJoUrSiC/Zg9iQu5bjHb+Fr1WZoERBWXnwrnc2vTxXax2KMIBSLImhBBClFM9nZbxRO6XJFtd8dZnqh1OmZdj17Mg7W5mZfVlua0HuRhpa9jEU4af8NEm4+2cAXRkuVMPfJU4vDXJeJKKTvO/hCxDceVNy3hesn7Cnxl9mO48glqGk+pVSjicOTt8sOJEA//TaociHIAka0IIIUQ5FanLSwIOm0Np5XZY5WjKJrsd/s6qy4/pfZhv7UcyftTWHeRN14+53+kvQnRX8o+1mkxsoCONdHvQa83XLc9Nk8kk41j66ubxVO4UmmTH8FbuBF50niqtbAKAn/Y2Jsz9MlHe0g1SSLImhBBClFsRurxv5o/lVqUVkqwVxdkcf75P7cPPOYM4Q3WCNZd51HkO/U1zqaO//XvZWreZHaZWjLe8yevW95iT0Y822g24azLwIB0PTToN9QdoatxXArURZUVsqoZtaffwVIOVaDRqRyMcgSRrQgghRDnlqU3HTxPPcWtVtUMpE8x2A3NT2zEjawDr7PfgRA73OS3hC9PrtDbEFOjOWBJcNNl8ZHyNPrr5jLO8xRKlJ2l2DzJwIxM3sMLgnO/5yGU8/rrkEr22cEz/tzEUGwa6Vd2pdijCQUiyJoQQQpRjEboznLBWUzsM1S1ObcH27FqkarwI1CYQqEsgWJ9AkD6BHMXIj+l9+N0ygGT8aKLfyecur9LHaSGe2vRSj62lbhsrdPcW2GZVdMywDuYNy3gWZvbiA/2rDDX9hlYWXSrX5pxoQ9OgYwS4pKodinAQkqwJIYQQ5ZiCBg2K2mGo5lKuD88lvME8W38AwrRnibf7kYVrgeP8NAk87PwHD5t+p6b+mBqhFqDX2HjC8D299At5Ofc9nrR+yw8Zj/C18wvUMxxVOzxRCnadMXIipymDq81UOxThQCRZE0IIIcqxM7ZQ2huXqx3GHWe3w/8l9+H1rLfRaRS+cR/FQKc/88cBZSguxNoDiLf7kasYaWnYhkFjVTfo6wjUxPOD0xM8avuZUbmf0iQ7htE5kxjn8gmu2my1wxMl6Ou/o3HRZdGu8n61QxEORBrThRBCiHIqQ3EhTgmgmv682qHcUQezw2h7aRbPZn1Fd6fV7PRpx0OmPwtM2OCmySJCd4YWhh20MW52yETt3zro1rPD1IrXDB/ypf05amdsZZG5vdphiRJy+JKBRZd6cE/VvZj0FrXDEQ5EkjUhhBCinDprCwUg0nhO5UjujDiLJ6/HDadJwloua0L5y3MA/+fxPL7a8jE5h5Mml9cMH7HL1AI0Wobmfqd2SKIErDnkQvtfXsTkZOSxWqvVDkc4GOkGKYQQQpRTp21hAFQ3lt+WtVSrC3+kdWB2dm/W2zsBMMr5G15ynYyz5vprnZV1qXhwQanMO7o31A5F3KYZm3x5fvMYqnkl8lm7qfg5l/6ENqJskWRNCCGEKKfO2KpgIotgfZLaoZS4LZk1+TB1OCts3TDjQnP9dt53mUAfp0UEaBPUDq9Urba1x46OStpLJV623Q6PZX5FpPY4b7pOLvHyxf+8taAqnxweRetKh3j3rp9x1ueqHZJwQJKsCSGEEOWUXmNDKacjHh5OmgpaPa+6fk5fpwWE6S6oHdIdM1r/JQfstRlimUGm4spwl5KbPXCy+XF+VgbT0bYCkGSttDw/J4pvTo2gf40NPN9oPjptxZ2xVdycJGtCCCFEOeWjSSYHExl2ZzzK0cyBR7IrcZpIfnUbSg+nFWqHc8cZNFZmGJ/Ax5LMCOvXJGZ684brF7dd7s7cOrxq/QAT2cTjXwKRiuvJzoWZpx+iX+QmXmwyT+1whIOTZE0IIYQop0yaHAASbR546MtPsrYksw16LLQx/K12KKrRahQ+M4zFm2Tesk4kPPscg5znF7u8DLsLD5lnEK05yj261fxqfaDkghUFzIzxJ1Px5v7Iivv+FYVXPvtGCCGEEBWcosBXWU8QzQGqGOLVDqdErchpT0vDdty1mWqHoiqNBt4yvkdf3TxGWz4j1uZb7LJGZH7IRarws9NjVNJcIgF/7PYSDFbk++VAUyK9zlPd64raoYgyQJI1IYQQohxJsXvwU/YAuqfOYYu1GR95jEOvLT9P3WdyAthob08n4zq1Q3EYnxvHABpGZH1UrPNnZvdhpvIYk4wvUkN7An9NPLk4kY5byQYqiE3VsiujPd3Dd6kdiigjJFkTQgghyol5OT2ITNzFyIyP0Fmz+MF1KD08t6gdVomx2TU8Fv8pPtoUBptmqR2OwwjQJDDJOJa5yoP8br63SOces4TxrOUrHtTN4VHdLwB4a/LWpbudljpxfd9sqIIdPV3CJFkThSNj1oQQQohyYpelAV4ksiWgO6FOjjd9/aVcH1JsbkQ7nUNbjK+LP00axEalA/M9BuKjTSnx+MqyB3R/8oeuLyNzP6edYTMBulsv13DGWokHsn/GT5PAV8bRaDR523+0PoI/sYToylf3WUcw7+RdNAk8jr9LmtqhiDJCkjUhhBCinMjBiLcmWfVE7aQ5iPgMNy5aAtibW5M91nrsszfkCpUACOQSbXRr6WTaSFe3zVQ2JgJgthvYmx3BHnMUsXY/su0mshRnshUTZsWZP2wDeNp5Oh2MG9WsnkPSaOAL4/M0zN7Gc1kf8Jv7kzc9/pfs3jxr+RJ3TTp/Og3AQ5O3GPMaW1vm2O7nO8Mw3LRZdyL0CmPDEWeO5rRgQrVf1A5FlCGSrAkhhBDlRI7ihJEcVa79QfyjTNL8f3v3HR9Fnf9x/LU1PZsCaZRQQ2+KEIoiVbALKiAqIqcnIgoq552eoh72u58VCx6HZ8GuHE2qdGkiHaSEXpJAes+W+f2BRCMgCYTsJnk/H499JJmZ/e7ns7uZ3ffO7Mxf+DfL6HhiCQUFNgAiTGm0t25hmN83tLNtJZB8ljm78X3x5XyZNwzyoLlpKwB7jGa4sGHCg8OURQAFBJgKCTCd/Hmj32yeCXrBK/1VBTGmVJ63P8mo4kk87XyB5rZ9py2T7QlmdN5LfGLcyc2Wr3nTPo5wUyYARYadscX/oivLuMvvi0quvvp7YmFv4oJS6addIKUcFNZERESqiSLD7pWw9lH6VTxR+AJ3h38KBPJp6N3U9k8mynyCKNPxkt3rTunntxiAVE8tlhR3Z5mzG1Zc/Nn6Ma2t22ll/Zlgk7bqnI8mpiQAPGc4LIHbY6J77lz204j37fdxu2VaqcfmLdcokoxGfBZw+3ntpipnN29LED/m9ePpxE+q1QF/5OJTWBMREakmDEzsNFoxIfVeHoz4lEhrzkW/zeW5bfhz3tvc7PctrwQ9yXL+xRX2VVg9hee8bpT5BLf6T+dW/+kXvc6aIp8gAEJMp5/W4HtnN7bSjvl+A7jCcvo5vr523chA05e0t+246HXWNE8tvor4kGP0b7De26VIFaPPTURERKqJJ4Ne5lb///FK0WM0OPYjDyQ/RpYr8KLd3p7COG7O+C8drJt5O+TR07agSeXLM04+3mf6vtmHxUNpYtrN5ebTg1qxYWOr0ZpEy9qSaUUeG2/n30mxR5/tX4hlPwewueBK7m07H4vZ8HY5UsUorImIiFQTdS3HeDXkcbZFJnJ/4BQ+dN5N52Mz2FYQX2G38V12JxIPf8FNR9/g6uMfE2wuYJrjT/ibvPNdOSkt95ctaxkeR6npOZ4gphsDGWb97IyhepvRkmL8uMyyoWTa6wV/4gHXJGYW97moNVd3326pj5+5iCvrbvF2KVIFKayJiIhUM1HmEzwV9ApLwq/FZLHS9cRcPsvodUFjOj0Wxqc8xHVZX2NYAjhhrkOAxcVXjuHUMp/7MPFSOS43rySOI1ya/wP/LRiE55evR31VdDV5BDPU8vkZr7fe0wELLjrYtgOQ4QnlJfdjACx1dauU2qurH461ol3tfdgtbm+XIlWQwpqIiEg11cy6h8Vh19LLvpxhuR/xSMo4XJ7yv/QfLKrFFUen8Xrxw/w98BUWhN3I3LCb+SHiKhKsSRehcjlfDc0HWB/QhQGWeYxwfsDNeVNJdUfwkXMYV5iX0cB88IzXW+HuRnO2E2QuAOCF/Icowp8+5kUs91xRmS1UKwXF8HNhJzrH7vZ2KVJFKayJiIhUYyHmPD4K/TPPBj3HG8Xj6Ht0KinFYWW+/o95CXRJnc1hUyPmhN3C+KA3sZh0NDtfFm7K5AO/e/jEfifLjJ60yVvLUnoyzPrpGZdf4O7NZ+7BDLd8CMBBVyxvecbwoHUSt1i/YjPtyfCEVmYL1caczQ6KjUAui9nl7VKkilJYExERqeZMJhgb+A7THbexjfZ0SpnN3OxObC+oX3LZUVCPY8XhFHssJdebkdWVXukziLJksDjsOrrY1nmxCymvQdbprA9IpKN5AxFkMNDyv9OWSTFqM7LoPfowj3EBkwGYUPBXgsjjYdvrXGFegYGZJcWJlV1+tTB3Z31CbLkkhB3xdilSRenwPiIiIjXElfaVLAu/mtuzJ3NN1rdnXS6YbMLI4Bh16GtfzH9CR+u8Z1VUrCmFb/1vpdiwYTc5S83zGCbuKXoHA4N/B45hubMT85y9+MgYzsu2xwk15RBCDvU4yBJXd25ivpe6qLpWH2/PZTF7dBRIOW8KayIiIjVIPctRFoTdxAZXW9zGr1vR3FjINkLIMMLI8ISRYYQRaUrjvoCp2u2xGvh9UAN403U/8z39iOMwrfPXk0sIEaRxu2Ua91inlCwXbspkv6dBJVZbPew7bmVvUXsGxUz3dilShSmsiYiI1DB2k5PONp2ct6b7P+dY7BTR1JxEb8tiepsX0968qVQ4/87Tn81GW563P+7FSqumB77tTpCtkD71N3q7FKnCFNZEREREaqAf/K8gzJRF0Fl2cfUYJp4u/jvdWEp/+9JKrq5qm7UxmO8zBvLXy74kzE+7EMv5U1gTERERqYHqmI/94fxv3Dey2WjLfL/+mHVIujJzugwe/X4ICWEHubHxKm+XI1WcwpqIiIiInGaeuy8AVxfNpHHRbpqzgxbmn2lp2UkP2yrqWZO9XKFveu37ehxwtuXfl72uA4vIBVNYExEREZHTvG5/hDs8n/Czpzk7jObs8DRjqmckKZ4YwpzpfB/Qn/a2Hd4u0+fM2XspnaJ/pl3t/d4uRaoBhTUREREROU2gqYArLCu5wrKy1PRkI4rrC79hQMH/WG7qQxPrQS9V6Jt2F17CnfX1HT+pGNoDWURERETKLMaUykz/mwg25dEvfwZHXFHeLsmnFBsBdIze7e0ypJpQWBMRERGRcok2HWe2340U48+1+V/i9pi8XZLPCLbm0Sz8sLfLkGpCYU1EREREyq2B+SBT/P7MJi5hpbOjt8vxGe2j9+vAIlJhFNZERERE5Lz0MC+nDoeZ5rzF26V4XZ7LD4BLau/1ciVSnSisiYiIiMh5MZsMBlu/4mvPzTgNi7fL8apNhU0AaF1rv3cLkWpFYU1EREREzttg65ekUZuFxd29XYpX7XbWB6Be8AkvVyLVicKaiIiIiJy3tqYt1OUQy11dvF2KV+39JawF2Iq9XIlUJwprIiIiInLeTCboYNnENk9rb5fiVXvdDbxdglRDCmsiIiIickHamrawlZod1vZ7Gnq7BKmGFNZERERE5IK0M28mjdreLsOrDhgKa1LxFNZERERE5IK0NW/xdgki1ZLCmoiIiIhckHjTQULJ8nYZXlXHdMjbJUg1pLAmIiIiIhfEZIJLzT8BkOUK8HI1le/ngjpkGuHeLkOqIYU1EREREblgL9ifAmBk6vO4PSYvV1N5pmd1p+uJefibnd4uRaohhTURERERuWCNzXsB+N5zFX8/fr+Xq7k4ij0W0l3BHCyqxY6CejyROoqbsz+li/1H5oTd6u3ypBqyersAEREREak+xge+wTNpj9Mhczu3hi2utNt1eix4MOFndlXIeCnFYTyR9hBzXQPIJ5h8gnBiP225vwX+i8cCX8Nj9quQ2xX5LYU1EREREakwDwa8xwZ7S/6U8w7N/QbQNmDfRb29LFcg72UOZFLBKBxksrneNRc0XrHHwuvpQ3ih4G8YJjN3BXxKLXMagaZ8gkz5BJryCaSAQFMBseZkmlhP9uepiGZEfkdhTUREREQqjMkE74aOo3fGDLqdmMuNlq/5U+jnXB64CXMFfgHH7THx5IlRvFM0mnyCsOKiiWnXBY05OyuRR7P/wW6ac5f/NJ4Mepla5vQKqlik/PSdNRERERGpUMGmfGaH3crDgW+zwuhJr4w5tDyykBeODye5+MKPmujxwAOpj/Ny0d8YHvAZmyK64WcqItG+9rzGO1wcyTVH3uX67K+pZctmWdgAXg/5q4KaeJ22rImIiIhIhatlTucvQW/waOCbLHV247+FQ3m2cALPFD7NleYFtLVupaVtN639kmgTsLdc3zV78sQoJjvv57Xgx7g74BN+djUlywiju//6ctd53BlKv5RPyTTVYmrIKAb6zcRUcw5mKT5OYU1ERERELhqzyaCnfQU97StI84TzWeFA5hb34RPncJKLYyAPwjnBjdavGR7yLd0Ct/zh7pL/PHEbLxb9nacCX+TugE8A+NHVAYBdxQ243LWZYGthmWrLdflzbcoUjptimB82kARr0gX3K1KRtBukiIiIiFSKSHMGowOnMDNsKLtqdeRgZEvmh93I8IAvmOe+jisz5tLsyGImHh9BSnHYadf/T/o1PFbwCmMC3uWRwLdKpl9m/Ynuth94uOBV6hzbwJ1Hn2N1Xos/rMXpsXBzyhtsN9rxpeMuBTXxSQprIiIiIuIVYeZsEm0/8mzw82yLTOR/jiF09NvKc4VP0iDlJ249+k+W5LTH44Fvsy7nvry3ud3/MyYGTSy1q2Iz6x7mhN3KpoiuPBD4b5YbveiePp+HUx6myHP6jmQFHjsDj73JYk8/PnL8mctsGyqxa5GyU1gTEREREa+zmDz0tK/g36EPsjOyI08GvcJPRiK9M2fT5sg8bs+eygD7At4Ifuys3ylraDnI40H/x6aI7kwIeom3i8dw2dH/sTG/UckyWa5A+h/9D997+vFJ6J/oa19SOQ2KnAeFNRERERHxKZHmDB4KfJcNEVfwreM2mtgP0s/+Pf8JfQCryX3O61tMHh4OnMT3YdfhNgfQNW0BLx6/k+TicHolT2OTcSnfOm5ngN+iSuhG5PzpACMiIiIi4pPMJoPe9mX0ti87r+u3s21jafg1PJP3GE8UvMDEwr8TbMpnTtgttLNtq+BqRSqetqyJiIiISLUVYCrkxeBn+J9jCH3sy5gbNlBBTaoMbVkTERERkWrv1OkDRKqSC9qy9uKLL2IymRg7dmzJtMLCQkaPHk1kZCTBwcEMGjSIlJSUUtebMWMGCQkJNGvWjFmzZpWa9+2335KYmIjD4SAkJIRWrVqVGl9ERERERKQi+WquOe+wtm7dOt577z3atm1bavq4ceOYOXMmX375JUuXLuXo0aMMHDiwZH5RURGjR4/m7bff5q233mLUqFEUFxcDsGjRIgYPHsygQYNYu3Yt69ev57nnnsPpdJ5vmSIiIiIiImfly7nmvHaDzM3NZdiwYbz//vtMnDixZHpWVhZTpkxh2rRp9OrVC4CpU6fSokULVq9eTWJiIkVFRVgsFtq3b3+yAKuVoqIi7HY7M2fOpFu3bowfP75kzISEBG688cbzKVNEREREROSsfD3XnNeWtdGjR3PNNdfQp0+fUtPXr1+P0+ksNb158+bUr1+fVatWARAaGsqIESOIjY0lLi6OUaNGERISAkBMTAzbtm1j69at51OWiIiIiIhImfl6rin3lrXPPvuMn376iXXr1p02Lzk5GbvdTlhYWKnp0dHRJCcnl/w9YcIExo4di9lsLmkIYMyYMSxfvpw2bdoQHx9PYmIi/fr1Y9iwYfj5+ZW3VBERERERkTOqCrmmXGHt0KFDPPTQQyxYsAB/f//yXPU0DofjtGlBQUHMnj2bpKQkFi9ezOrVq3nkkUd4/fXXWbVqFYGBgX84pslwYzLOfaLEi+1UDb5Qizeof/X/2581zam+PVaLlyvxjlN9u/xr5gdsp/pW/zW9/wt7j1RVneq7pj/+NX397wuv/2WpwddzzSkmwzCMshYyffp0brrpJiyWX5+Ebrcbk8mE2Wxm3rx59OnTh4yMjFIpND4+nrFjxzJu3Liy3lSJffv2kZCQwOTJkxkxYsQZl8nOzsbhcDBt2rQyNy4iIiIiItVPfn4+t912G1lZWYSGhp5xGV/NNb9Xri1rvXv3ZsuWLaWmjRgxgubNm/PYY49Rr149bDYbixYtYtCgQQDs3LmTgwcP0qVLl/LcVIkGDRoQGBhIXl7eOZdNsbUiwBZyzuUuNpPhJtq1jRRrKwxTzft0Rf2f7D96xg+YXd7/dKmyeawWUq7vSruX3sTyyxGRahK33c6mx8bQdfzjWAuLvF1OpXP5+/HDK8/X+P5r+v9/Te+/pj//a/r6v6a///GF/gtsOedcxtdzzSnlCmshISG0bt261LSgoCAiIyNLpo8cOZKHH36YiIgIQkNDGTNmDF26dCExMfGc4z/99NPk5+dz9dVXEx8fT2ZmJm+88QZOp5O+ffue8/qGyeL1J8dv+Vo9la2m9292uWvkm5VTLMXFWIpq3ov1KdbCIqyFhd4uw2tqev81/f+/pvdf05//NX39X9Pf//hC/2W5fV/PNaec16H7/8irr76K2Wxm0KBBFBUVcdVVV/H222+X6bo9evRg0qRJ3HnnnaSkpBAeHk6HDh2YP38+zZo1q+hSRUREREREzsgXcs0Fh7UlS5aU+tvf359JkyYxadKkco/Vs2dPevbseaEliYiIiIiIlIsv5poK37ImIiIiIlJZUpyR/DP1XurYkmnhv4cW/nuoa0vGbCrzMfREfJbCmoiIiIhUWavzOzAt4waCySSXMACCzTkMDp/DvZGfUtee/McDAE7Dwg+5lzIn+0qy3UH4m500tB+ikd9BOgVuIsqWfpG7EDkzhTURERERqbIKPCfPkXW8S38O5YXyU2Z9lqa34ZO0O/ggbRA3OBZwf+2PaeGf9Lvr+bEstxOzs3uyILsb2R4HdUz7qG1JxeWxMNfTjWzC6RL4I181esAbrYkorImIiIhI1ZXvCcCPAqxmg4YhWTQM2cKgelv4R/FXvJnUm3czRvJN1if0DlnBnyOnkeF2MDu7Fwuzu5FvBNLIvJ07g6Zwa+xKOkcewmw2lYw9fMO9rHdf4cXupKZTWBMRERGRKqvA448VJx6PUSpoOezF/L3Fd4x3zeXf+7vxxvGR3Jpz8kh+CeZNjAp9g6FxP9AuIuU3o5lKje0w55JXHFgZbYickcKaiIiIiFRZHQM3k0conxzsyB0N1p82389qMLrJCu5rtIL5yQnUC8igdfjxMo0dZCkg3xNQ0SWLlJnZ2wWIiIiIiJyvzkGb6Ba0jheOjcLtOftyFjMMiNtV5qAGEGwpIN9QWBPvUVgTERERkSrt0ah/s9vTho8OXFah4wZbCyg0AnAbesss3qFnnoiIiIhUaZ2CNtEjaDXPJ4/G5TGd+wplFGwpBCD/lyNOilQ2hTURERERqfIeiX6ffZ4WTN3XucLG/DWsaVdI8Q6FNRERERGp8i4N3Eav4JW8lFJxW9dCbCfDWp5HR4QU71BYExEREZFq4dHo9zlgJPD+3q4VMl6oVVvWxLsU1kRERESkWmgX8DOXBW5kZkaPChnv+xOtAPA3F1XIeCLlpbAmIiIiItVGS/897HU1ueBxFqc05IWMv/GnyE9p4negAioTKT+FNRERERGpNpr4HeCgpwlOz/m/zU0pCOSOpFdoG7CTJ6InVWB1IuWjsCYiIiIi1UYTv/048WNnVuR5j/HF4Y6kGPV4t97fsZtdFVidSPkorImIiIhItdHEbz8AW7LqnPcYR4pqEW7OoI49pYKqEjk/CmsiIiIiUm3EWo8TbM7hh6xW5z3GMWctom0nKrAqkfOjsCYiIiIi1YbJBLeFz+TD3BEcygs5rzFSnLWJtqZVcGUi5aewJiIiIiLVyoO1P8BqNvjbztvLfJ2vD7Wh7g9fMfNwc457oomyKayJ9ymsiYiIiEi1Em7N5qGoD/iq4HY2pkefc/nd2eHce/BlcojktgNvk+RuTrRVu0GK9ymsiYiIiEi1MyLiS2JtKYzfc98fLlfoMnPLtomEWgtZljCYS4O2k4dDW9bEJyisiYiIiEi142d28nj0OyxxXs2co83OutyoLSPZ5WnLe/WfINZ2nA/ixzMy8jN6Bq+qxGpFzkxhTURERESqpesdC2nnv42/HRiL23P6/Cl7O/Nx/p94OvZ12gfuACDQXMizsa/RyO9QJVcrcjqrtwsQEREREbkYTCZ4KvZNBu17l2ZrPiLcdAKHOYswcyYdgn7m5fRHucExn+ERX3u7VJEzUlgTERERkWorMWgjb9R9mk0FLch0h5DtDmGfM54Z6YNpZD/Iy3EvYjJ5u0qRM1NYExEREZFqbVDYXAaFzS01LcUZiZ+5mGBLvpeqEjk3hTURERERqXGidbRHqQJ0gBEREREREREfpLAmIiIiIiLigxTWREREREREfJDCmoiIiIiIiA9SWBMREREREfFBCmsiIiIiIiI+SGFNRERERETEBymsiYiIiIiI+CCFNRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiIiIiPkhhTURERERExAcprImIiIiIiPgghTUREREREREfpLAmIiIiIiLigxTWREREREREfJDCmoiIiIiIiA9SWBMREREREfFBCmsiIiIiIiI+SGFNRERERETEBymsiYiIiIiI+CCF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NRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiIiIiPkhhTURERERExAcprImIiIiIiPgghTUREREREREfpLAmIiIiIiLigxTWREREREREfJDCmoiIiIiIiA9SWBMREREREfFBCmsiIiIiIiI+SGFNRERERETEBymsiYiIiIiI+CCFNRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiIiIiPkhhTURERERExAcprImIiIiIiPgghTUREREREREfpLAmIiIiIiLigxTWREREREREfJDCmoiIiIiIiA9SWBMREREREfFBCmsiIiIiIiI+SGFNRERERETEBymsiYiIiIiI+CCFNRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiIiIiPkhhTURERERExAcprImIiIiIiPgghTUREREREREfpLAmIiIiIiLig8od1o4cOcLtt99OZGQkAQEBtGnThh9//LFkvmEYPPXUU8TGxhIQEECfPn3YvXt3qTFWrVpF+/btadCgAVOmTCk1b+nSpfTq1YuIiAgCAwNp2rQpw4cPp7i4+DxbFBERERERKa0q5JpyhbWMjAy6deuGzWbju+++Y/v27fzrX/8iPDy8ZJmXX36ZN954g3fffZc1a9YQFBTEVVddRWFhYckyI0eO5Mknn2TatGm88MILHDp0CIDt27fTv39/OnbsyLJly9iyZQtvvvkmdrsdt9tdnlJFRERERETOqKrkGmt5mnrppZeoV68eU6dOLZnWsGHDkt8Nw+C1117j73//OzfccAMAH374IdHR0UyfPp0hQ4YAkJeXxyWXXEJUVBTh4eHk5OQAMH/+fGJiYnj55ZdLxmzcuDH9+/cvT5kiIiIiIiJnVVVyTbm2rM2YMYOOHTtyyy23EBUVRYcOHXj//fdL5u/bt4/k5GT69OlTMs3hcNC5c2dWrVpVMu2pp56iRYsWOBwOEhMTadmyJQAxMTEcO3aMZcuWlasJERERERGRsqoquaZcYW3v3r288847NG3alHnz5jFq1CgefPBB/vvf/wKQnJwMQHR0dKnrRUdHl8yDk5sL09LSOH78OG+++WbJ9FtuuYWhQ4fSo0cPYmNjuemmm3jrrbfIzs4+7wZFRERERER+q6rkmnLtBunxeOjYsSPPP/88AB06dGDr1q28++67DB8+vFw3HBQURFBQUKlpFouFqVOnMnHiRL7//nvWrFnD888/z0svvcTatWuJjY39wzFNhhuT4f3vtp2qwWO1eLkS7zjVt9tu93Il3nGqb5e/n5cr8Y5Tfdf0/mv687+mr/984bXIG/T6d7Lvmr7+q+n91/Tnvy+s/8pSg6/nml97MQyjrIXEx8fTt29f/v3vf5dMe+edd5g4cSJHjhxh7969NG7cmA0bNtC+ffuSZXr06EH79u15/fXXy3pTJTIyMkhISOD+++/nmWeeOeMy2dnZOBwOpk2bRmBgYLlvQ0REREREqof8/Hxuu+02srKyCA0NPeMyvpprfq9cW9a6devGzp07S03btWsX8fHxwMkv5cXExLBo0aKSprKzs1mzZg2jRo0qz02VCA8PJzY2lry8vHMum2JrRYAt5LxupyKZDDfRrm1Ez/gBs8v7ny5UNo/VQsr1XWn30ptYauApF9x2O5seG1Pj+6/pz/8UaysMU837dPXU+k/91+z+a/r/f01f/9f0/mv6898X1n8FtpxzLuPrueaUcoW1cePG0bVrV55//nluvfVW1q5dy+TJk5k8eTIAJpOJsWPHMnHiRJo2bUrDhg158skniYuL48Ybbzzn+O+99x4bN27kpptuonHjxhQWFvLhhx+ybdu2UvuAno1hsnj9yfFbZpe7Rv6znmIpLsZSVPNW1qfU9P5r+vPf19ZHlU391+z+a/r/f01f/9f0/mv6898X1n9luX1fzzWnlCusXXbZZXz77bf87W9/49lnn6Vhw4a89tprDBs2rGSZv/zlL+Tl5XHvvfeSmZlJ9+7dmTt3Lv7+/uccv1OnTqxYsYL77ruPo0ePEhwcTKtWrZg+fTo9evQoT6kiIiIiIiJnVFVyTbnCGsC1117Ltddee9b5JpOJZ599lmeffba8Q9OhQwc++uijcl9PRERERESkPKpCrinXoftFRERERESkciisiYiIiIiI+CCFNRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiIiIiPkhhTURERERExAcprImIiIiIiPgghTUREREREREfpLAmIiIiIiLigxTWREREREREfJDCmoiIiIiIiA9SWBMREREREfFBCmsiIiIiIiI+SGFNRERERETEBymsiYiIiIiI+CCFNRERERERER+ksCYiIiIiIuKDFNZERERERER8kMKaiIiIiIiID1JYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIU1ERERERERH6SwJiIiIiIi4oMU1kRERERERHyQwpqIiIiIiIgPUlgTERERERHxQQprIiIiItXA3qJ69Nj1Ke+fGEyxx+rtckSkAiisiYiIiFQD2wqbsqe4Ic8kP0TvPR+zMKcrhuHtqkTkQiisiYiITynMN/HJG+G880wkS2cFc/yYthCIlEWmOxQzbpYm3EItz36GH/g/7jzwL4o8Nm+XJiLnSa+AIiLiM44dtPLOsxGkJbsJDtnD5rWtwIggIqqQSy8vptcNOYTVcnu7TBGflOFyEGrKoEvtwyyP/AtT9ydy37E3WJbbib6hK71dnoicB4W1KsbptpBa4CAlP4zU/LCSn2kFIQTZConwzyHcP5cI/1zC/XOpHZBFXFA6/lant0sXEflD65YG8tGrYVgsB/j882P06RPDkSPbmDLlGHPmWFk0vTOLvo0hsU8BfW/OJqauy9slV6qcLDNms0FQiPZrkzNbnd+eePMeAMxmEyMarOa55CQW5HRXWBOpohTWfJjLYyYpM5Zt6fXZkVaPbWl12JsVh9v49WELMGURYT1GmOU4BZ5gst1xZHtqUWwElhor0i+duiG/XIJPkBB+lK5xO7CaPZXdlohIKS4nfDMlnMUzQqhf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psKHr0bidqcREZFEYqcsunWzcOut0cTHx3upExERERGpShTWRMrI39/Ku+82++WvdLKzk9m6NYutW/PYtauYAwcMkpNtxMaePFn2okUbadEiHIj+5SIiIiIiUnYKayLnKTTUTteutenatXap6S6Xm5Urf6Zp01AvVSYiIiIi1YEOMCIiIiIiIuKDFNZERERERER8kMKaiIiIiIiID6pW31nLycn1dgkAuN0e8vPzycnJxWKpeXlY/at/9a/+1b/6V//qv6ZR/77Tv69kgopQLcKa3W4nJiaG1q2v8HYpIiIiIiLiZTExMdjtdm+XccFMhnHqFL5VW2FhIcXFxd4uQ0REREREvMxut+Pv7+/tMi5YtQlrIiIiIiIi1UnN26FWRERERESkClBYExERERER8UEKayIiIiIiIj5IYU1ERERERMQHKayJiIiIiIj4IIW1s3j66acxmUylLs2bNy+ZX1hYyOjRo4mMjCQ4OJhBgwaRkpJSaowZM2aQkJBAs2bNmDVrVsn0/fv3nzb2qcvq1asrrcdzOXLkCLfffjuRkZEEBATQpk0bfvzxx5L5hmHw1FNPERsbS0BAAH369GH37t2lxli1ahXt27enQYMGTJkypdS8s90Hn332WaX090caNGhwxtpGjx4NVP/H3+128+STT9KwYUMCAgJo3Lgx//jHP/jtwWOr8+MPkJOTw9ixY4mPjycgIICuXbuybt26kvnVqf9ly5Zx3XXXERcXh8lkYvr06aXml6XX9PR0hg0bRmhoKGFhYYwcOZLc3NInJX3//feJj4+nQ4cOrFmzpmT6kiVLznp/JCcnX7S+TzlX/9988w39+vUjMjISk8nExo0bTxujKq8T/qh/p9PJY489Rps2bQgKCiIuLo4777yTo0ePlhqjOj/+Tz/9NM2bNycoKIjw8HD69OlTqn6o3v3/1n333YfJZOK1114rNb0q9w/nvg/uuuuu02rr379/qWWq8n1QlufAjh07uP7663E4HAQFBXHZZZdx8ODBkvlVeR3o8ww5owkTJhitWrUyjh07VnI5fvx4yfz77rvPqFevnrFo0SLjxx9/NBITE42uXbuWzC8sLDTq1q1rLFiwwJg/f75Rt25do6ioyDAMw9i3b58BGAsXLiw1/rFjx4zi4uJK7/VM0tPTjfj4eOOuu+4y1qxZY+zdu9eYN2+esWfPnpJl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\n", "text/plain": [ "
" ] @@ -207,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "c8c6e7b4", "metadata": {}, "outputs": [ @@ -215,8 +243,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 119 ms, sys: 85.2 ms, total: 204 ms\n", - "Wall time: 106 ms\n" + "CPU times: user 72.1 ms, sys: 63.6 ms, total: 136 ms\n", + "Wall time: 52.2 ms\n" ] }, { @@ -225,7 +253,7 @@ "(Timestamp('2017-03-16 21:11:45'), Timestamp('2023-07-29 21:41:20'))" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -248,7 +276,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "5811e040", "metadata": {}, "outputs": [ @@ -256,7 +284,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:02:49,771 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-19 16:18:29,438 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -666,7 +694,7 @@ " 'title': 'CSIRO Underway'}}" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -696,7 +724,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "8794e0bc", "metadata": {}, "outputs": [ @@ -704,7 +732,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:02:49,893 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-19 16:18:29,522 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -716,8 +744,8 @@ "Columns: 194 entries, rawLatitude to polygon\n", "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", "memory usage: 23.0+ MB\n", - "CPU times: user 140 ms, sys: 51.5 ms, total: 192 ms\n", - "Wall time: 120 ms\n" + "CPU times: user 113 ms, sys: 51.2 ms, total: 164 ms\n", + "Wall time: 79.9 ms\n" ] } ], @@ -736,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "ecfad1d7", "metadata": {}, "outputs": [ @@ -749,7 +777,7 @@ "/home/lbesnard/github_repo/aodn_cloud_optimised/notebooks/aodn_metadata-uuid_unknown_vessel_underway_csiro_data-hash_a55e502d.csv.zip" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -766,7 +794,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "a3abac4d-a474-4550-bca4-77db4ba11991", "metadata": {}, "outputs": [ @@ -782,7 +810,7 @@ " dtype='object', length=194)" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -804,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "ff46edb3", "metadata": {}, "outputs": [ @@ -812,7 +840,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:02:53,960 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-19 16:18:33,274 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -824,8 +852,8 @@ "Columns: 194 entries, rawLatitude to polygon\n", "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", "memory usage: 23.0+ MB\n", - "CPU times: user 134 ms, sys: 49 ms, total: 183 ms\n", - "Wall time: 96 ms\n" + "CPU times: user 108 ms, sys: 69.9 ms, total: 178 ms\n", + "Wall time: 92.4 ms\n" ] } ], From 954230350e8cb7b006033dd0ba4f387f43356546 Mon Sep 17 00:00:00 2001 From: lbesnard Date: Wed, 20 Aug 2025 11:57:06 +1000 Subject: [PATCH 3/3] Update notebook --- notebooks/vessel_underway_csiro.ipynb | 79 ++++++++++++++------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/notebooks/vessel_underway_csiro.ipynb b/notebooks/vessel_underway_csiro.ipynb index 79c05dd6..171dc39b 100644 --- a/notebooks/vessel_underway_csiro.ipynb +++ b/notebooks/vessel_underway_csiro.ipynb @@ -71,19 +71,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "8e48b8c7", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/lbesnard/github_repo/aodn_cloud_optimised/notebooks/DataQuery.py:3152: UserWarning: registration of accessor under name 'aodn' for type is overriding a preexisting attribute with the same name.\n", - " @pd.api.extensions.register_dataframe_accessor(\"aodn\")\n" - ] - } - ], + "outputs": [], "source": [ "from DataQuery import GetAodn" ] @@ -122,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "eec82f5a", "metadata": {}, "outputs": [ @@ -130,13 +121,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 40.1 ms, sys: 5.76 ms, total: 45.9 ms\n", - "Wall time: 8.08 s\n" + "CPU times: user 38 ms, sys: 6.43 ms, total: 44.4 ms\n", + "Wall time: 8.07 s\n" ] } ], "source": [ - "aodn = GetAodn(bucket_name=\"aodn-cloud-optimised\", prefix=\"\", s3_fs_opts={ \"client_kwargs\": {\"endpoint_url\": \"http://127.0.0.1:9000\"}, \"key\": \"minioadmin\", \"secret\":\"minioadmin\"})\n", + "aodn = GetAodn(\n", + " bucket_name=\"aodn-cloud-optimised\",\n", + " prefix=\"\",\n", + " s3_fs_opts={\n", + " \"key\": \"minioadmin\",\n", + " \"secret\": \"minioadmin\",\n", + " \"client_kwargs\": {\n", + " \"endpoint_url\": \"http://127.0.0.1:9000\"\n", + " }\n", + " }\n", + ")\n", "dname = f'{dataset_name}.parquet'\n", "%time aodn_dataset = aodn.get_dataset(dname)" ] @@ -159,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "8fef38d5", "metadata": {}, "outputs": [ @@ -167,9 +168,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "['in2020_v10', 'in2019_v01']\n", - "CPU times: user 849 µs, sys: 951 µs, total: 1.8 ms\n", - "Wall time: 1.2 ms\n" + "['in2019_v02', 'in2022_v03']\n", + "CPU times: user 1.11 ms, sys: 0 ns, total: 1.11 ms\n", + "Wall time: 937 µs\n" ] } ], @@ -190,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "fa1d18c5", "metadata": {}, "outputs": [ @@ -235,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "c8c6e7b4", "metadata": {}, "outputs": [ @@ -243,8 +244,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 72.1 ms, sys: 63.6 ms, total: 136 ms\n", - "Wall time: 52.2 ms\n" + "CPU times: user 107 ms, sys: 36.4 ms, total: 144 ms\n", + "Wall time: 64.2 ms\n" ] }, { @@ -253,7 +254,7 @@ "(Timestamp('2017-03-16 21:11:45'), Timestamp('2023-07-29 21:41:20'))" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -276,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "5811e040", "metadata": {}, "outputs": [ @@ -284,7 +285,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:18:29,438 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-20 11:19:33,782 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -694,7 +695,7 @@ " 'title': 'CSIRO Underway'}}" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -724,7 +725,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "8794e0bc", "metadata": {}, "outputs": [ @@ -732,7 +733,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:18:29,522 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-20 11:19:34,569 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -744,8 +745,8 @@ "Columns: 194 entries, rawLatitude to polygon\n", "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", "memory usage: 23.0+ MB\n", - "CPU times: user 113 ms, sys: 51.2 ms, total: 164 ms\n", - "Wall time: 79.9 ms\n" + "CPU times: user 123 ms, sys: 44.3 ms, total: 167 ms\n", + "Wall time: 87.2 ms\n" ] } ], @@ -764,7 +765,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "ecfad1d7", "metadata": {}, "outputs": [ @@ -777,7 +778,7 @@ "/home/lbesnard/github_repo/aodn_cloud_optimised/notebooks/aodn_metadata-uuid_unknown_vessel_underway_csiro_data-hash_a55e502d.csv.zip" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -794,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "a3abac4d-a474-4550-bca4-77db4ba11991", "metadata": {}, "outputs": [ @@ -810,7 +811,7 @@ " dtype='object', length=194)" ] }, - "execution_count": 11, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -832,7 +833,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "ff46edb3", "metadata": {}, "outputs": [ @@ -840,7 +841,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "2025-08-19 16:18:33,274 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" + "2025-08-20 11:19:37,838 - aodn.GetAodn - INFO - Retrieving metadata for aodn-cloud-optimised/vessel_underway_csiro.parquet\n" ] }, { @@ -852,8 +853,8 @@ "Columns: 194 entries, rawLatitude to polygon\n", "dtypes: datetime64[ns](1), float32(75), float64(113), int32(1), object(4)\n", "memory usage: 23.0+ MB\n", - "CPU times: user 108 ms, sys: 69.9 ms, total: 178 ms\n", - "Wall time: 92.4 ms\n" + "CPU times: user 113 ms, sys: 63.7 ms, total: 177 ms\n", + "Wall time: 84.9 ms\n" ] } ],