diff --git a/.gitignore b/.gitignore index 29028c1..3017b76 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ /.quarto/ **/*.quarto_ipynb -<<<<<<< Updated upstream -======= .claude ->>>>>>> Stashed changes + +_site/ diff --git a/Jupyterhub/convert_to_geotiff.qmd b/Jupyterhub/convert_to_geotiff.qmd deleted file mode 100644 index a192f87..0000000 --- a/Jupyterhub/convert_to_geotiff.qmd +++ /dev/null @@ -1,217 +0,0 @@ -# Jupyter Notebook Guide for Disaster COG Processing - -This guide helps you get started with converting disaster satellite imagery to Cloud Optimized GeoTIFFs (COGs). - -## Quick Start - -### πŸš€ Option 1: Simple Template (Recommended for Most Users) - -Use `templates/simple_disaster_template.ipynb` for a streamlined experience with just 5 cells: - -1. **Open the notebook** - ```bash - jupyter notebook templates/simple_disaster_template.ipynb - ``` - -2. **Configure your event** (Cell 1) - - Set `EVENT_NAME` (e.g., '202408_TropicalStorm_Debby') - - Set `PRODUCT_NAME` (e.g., 'landsat8') - - Modify filename functions to control output names - -3. **Run the cells in order** - - Cell 2: Imports and initializes - - Cell 3: Discovers files and shows preview - - Cell 4: Processes all files - - Cell 5: Reviews results - -### πŸŽ›οΈ Option 2: Advanced Template (For Power Users) - -Use `templates/disaster_processing_template.ipynb` for full control over: -- Memory management -- Chunk configurations -- Processing parameters -- Verification options -- Detailed error handling - -## Configuration Examples - -### Basic Configuration - -```python -EVENT_NAME = '202408_TropicalStorm_Debby' -PRODUCT_NAME = 'landsat8' -BUCKET = 'nasa-disasters' -SOURCE_PATH = f'drcs_activations/{EVENT_NAME}/{PRODUCT_NAME}' -DESTINATION_BASE = 'drcs_activations_new' -OVERWRITE = False # Set True to replace existing files -``` - -### Custom Filename Functions - -Define how your files are renamed: - -```python -def create_truecolor_filename(original_path, event_name): - """Create filename for trueColor products.""" - filename = os.path.basename(original_path) - stem = os.path.splitext(filename)[0] - date = extract_date_from_filename(stem) - - if date: - stem_clean = re.sub(r'_\d{8}', '', stem) - return f"{event_name}_{stem_clean}_{date}_day.tif" - return f"{event_name}_{stem}_day.tif" -``` - -### Map Products to Filename Functions - -```python -FILENAME_CREATORS = { - 'trueColor': create_truecolor_filename, - 'colorInfrared': create_colorinfrared_filename, - 'naturalColor': create_naturalcolor_filename, -} -``` - -## File Organization - -The system automatically: -- **Discovers** files in your S3 source path -- **Categorizes** them by product type (trueColor, NDVI, etc.) -- **Applies** the appropriate filename function -- **Saves** to organized output directories - -### Default Output Structure -``` -drcs_activations_new/ -β”œβ”€β”€ imagery/ -β”‚ β”œβ”€β”€ trueColor/ -β”‚ β”œβ”€β”€ colorIR/ -β”‚ └── naturalColor/ -β”œβ”€β”€ indices/ -β”‚ β”œβ”€β”€ NDVI/ -β”‚ └── MNDWI/ -└── SAR/ - └── processed/ -``` - -## Common Patterns - -### Process Multiple Product Types - -The system automatically detects and processes different product types: - -```python -# Files are auto-categorized by these patterns: -- 'trueColor' β†’ imagery/trueColor/ -- 'colorInfrared' β†’ imagery/colorIR/ -- 'NDVI' β†’ indices/NDVI/ -- 'MNDWI' β†’ indices/MNDWI/ -- 'SAR' β†’ SAR/processed/ -``` - -### Custom No-Data Values - -```python -NODATA_VALUES = { - 'NDVI': -9999, # Specific value for NDVI - 'MNDWI': -9999, # Specific value for MNDWI - 'trueColor': None, # Auto-detect for imagery -} -``` - -### Override Output Directories - -```python -OUTPUT_DIRS = { - 'trueColor': 'Landsat/trueColor', - 'colorInfrared': 'Landsat/colorIR', - 'naturalColor': 'Landsat/naturalColor', -} -``` - -## Troubleshooting - -### Issue: "No files found" -- Check `SOURCE_PATH` is correct -- Verify files exist: `aws s3 ls s3://bucket/path/` - -### Issue: "Failed to connect to S3" -- Check AWS credentials: `aws configure list` -- Ensure bucket access permissions - -### Issue: Files being skipped -- Files already exist in destination -- Set `OVERWRITE = True` to reprocess - -### Issue: Wrong filenames -- Modify filename creator functions -- Re-run from discovery step to preview - -### Issue: Processing is slow -- Large files take time (normal) -- System automatically uses GDAL optimization -- Files >1.5GB use optimized chunking - -## Performance Tips - -1. **File Size Optimization** - - Files <1.5GB: Processed whole (fastest) - - Files >1.5GB: Smart chunking - - Files >7GB: Ultra-large file handling - -2. **Compression** - - Uses ZSTD level 22 (maximum compression) - - Automatic predictor selection - - Intelligent resampling based on data type - -3. **Parallel Processing** - - For batch processing multiple events, use: - ```python - from batch_processor_parallel import process_files_parallel - ``` - -## Advanced Features - -### Using the Helper Module Directly - -```python -from notebooks.notebook_helpers import quick_process - -results = quick_process({ - 'event_name': '202408_TropicalStorm_Debby', - 'bucket': 'nasa-disasters', - 'source_path': 'drcs_activations/202408_TropicalStorm_Debby/landsat8', - 'destination_base': 'drcs_activations_new', - 'overwrite': False, - 'filename_creators': FILENAME_CREATORS -}) -``` - -### Batch Processing Multiple Events - -```python -events = [ - '202408_TropicalStorm_Debby', - '202409_Hurricane_Example', - '202410_Wildfire_Sample' -] - -for event in events: - config['event_name'] = event - config['source_path'] = f'drcs_activations/{event}/landsat8' - processor = SimpleProcessor(config) - processor.connect_to_s3() - processor.discover_files() - processor.process_all() -``` - -## Next Steps - -1. Start with the simple template -2. Run a small test batch -3. Verify output filenames are correct -4. Process full dataset -5. Check results in S3 - -For more details, see the main [README.md](README.md) or review the [RESAMPLING_GUIDE.md](RESAMPLING_GUIDE.md) for data type handling. \ No newline at end of file diff --git a/Jupyterhub/jupyterhub-training-guide.qmd b/Jupyterhub/jupyterhub-training-guide.qmd index 676e39a..0e312a5 100644 --- a/Jupyterhub/jupyterhub-training-guide.qmd +++ b/Jupyterhub/jupyterhub-training-guide.qmd @@ -7,13 +7,7 @@ 4. [Working with Jupyter Notebooks](#working-with-jupyter-notebooks) 5. [Data Management](#data-management) 6. [Environment and Package Management](#environment-and-package-management) -7. [Terminal and Command Line Access](#terminal-and-command-line-access) -8. [Collaboration and Sharing](#collaboration-and-sharing) -9. [Resource Management](#resource-management) -10. [Best Practices](#best-practices) -11. [Troubleshooting](#troubleshooting) -12. [Keyboard Shortcuts](#keyboard-shortcuts) -13. [Resources and Links](#resources-and-links) +7. [Shutting Down](#shutting-down-properly) --- @@ -45,8 +39,6 @@ The **Disasters Hub** (https://hub.disasters.2i2c.cloud/) is a specialized Jupyt βœ… **Pre-configured Environments** - Common packages already installed βœ… **Persistent Storage** - Your work is saved between sessions βœ… **Collaboration Ready** - Share notebooks with team members -βœ… **Scalable Resources** - Access to GPU and high-memory instances when needed - --- ## Getting Started @@ -58,7 +50,11 @@ The **Disasters Hub** (https://hub.disasters.2i2c.cloud/) is a specialized Jupyt - Go to: [https://hub.disasters.2i2c.cloud/](https://hub.disasters.2i2c.cloud/) - Bookmark this URL for easy access -2. **Authentication** +2. **First-Time Login** + - Must sign in through [Keycloak - CI Logon](https://cilogon.org/) + - After Keycloak has been completed, request to be added to the Disasters Jupyterhub account + +3. **Authentication** - You'll see a login screen with authentication options - Common authentication methods: - **GitHub**: Use your GitHub credentials @@ -66,10 +62,6 @@ The **Disasters Hub** (https://hub.disasters.2i2c.cloud/) is a specialized Jupyt - **Institutional Login**: Use your organization's credentials - Select your authentication method and follow the prompts -3. **First-Time Login** - - Accept terms of service if prompted - - Your home directory will be created automatically - - Initial setup may take 30-60 seconds ### Server Selection @@ -78,19 +70,12 @@ After login, you may be presented with server options: ``` Server Options: β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ β€’ Small (2 CPU, 4GB RAM) β”‚ -β”‚ β€’ Medium (4 CPU, 8GB RAM) β”‚ -β”‚ β€’ Large (8 CPU, 16GB RAM) β”‚ -β”‚ β€’ GPU Instance (if available) β”‚ +β”‚ β€’ Small (4 CPU, 4GB RAM) β”‚ +β”‚ β€’ Medium (4 CPU, 7GB RAM) β”‚ +β”‚ β€’ Large (4 CPU, 15GB RAM) β”‚ +β”‚ β€’ Additional resources if needed β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` - -**Tips for Server Selection:** -- Start with **Small** for basic notebook work -- Use **Medium** for data processing tasks -- Choose **Large** for machine learning or big data -- Select **GPU** only when needed (limited availability) - --- ## JupyterHub Interface Overview @@ -136,13 +121,6 @@ Once logged in, you'll see the JupyterLab interface: - Line/column position - File encoding and type -### Creating Your First Notebook - -1. Click the **Python 3** icon in the Launcher -2. Or: File β†’ New β†’ Notebook -3. Select kernel (usually Python 3) -4. Rename your notebook: Right-click on "Untitled.ipynb" β†’ Rename - --- ## Working with Jupyter Notebooks @@ -150,6 +128,7 @@ Once logged in, you'll see the JupyterLab interface: ### Notebook Basics A Jupyter notebook consists of **cells** that can contain: + - **Code**: Executable Python (or other language) code - **Markdown**: Formatted text, equations, and images - **Raw**: Unformatted text @@ -204,27 +183,6 @@ The **kernel** is the computational engine that executes your code. - **[*]**: Cell currently executing - **[1]**: Cell execution number -### Notebook Best Practices - -1. **Use meaningful cell divisions** - - One concept or operation per cell - - Separate imports, data loading, processing, visualization - -2. **Document your work** - ```python - # Good practice: Add comments and markdown cells - # Load disaster response data - df = pd.read_csv('disaster_data.csv') - - # Data preprocessing - df['date'] = pd.to_datetime(df['date']) - df = df.dropna() - ``` - -3. **Clear output before sharing** - - Kernel β†’ Restart & Clear Output - - Reduces file size and removes sensitive output - --- ## Data Management @@ -234,22 +192,14 @@ The **kernel** is the computational engine that executes your code. #### Uploading Files 1. **Drag and drop** files directly into the file browser 2. **Upload button**: Click the ⬆ button in the file browser toolbar -3. **Terminal upload**: Use `wget` or `curl` in terminal - ```bash - wget https://example.com/data.csv - curl -O https://example.com/data.zip - ``` #### Downloading Files 1. **Right-click** file in browser β†’ Download -2. **From notebook**: - ```python - from IPython.display import FileLink - FileLink('results.csv') # Creates downloadable link - ``` ### Working with Cloud Storage +Credentials for reading from S3 are already integrated within the Disasters Hub! + #### AWS S3 Integration ```python import boto3 @@ -262,38 +212,11 @@ df = pd.read_csv('s3://bucket-name/path/to/file.csv') df.to_csv('s3://bucket-name/output/results.csv', index=False) ``` -#### Google Cloud Storage -```python -# Read from GCS -df = pd.read_csv('gs://bucket-name/path/to/file.csv') - -# Using gsutil in terminal -!gsutil cp gs://bucket/file.csv ./data/ -``` - -### Data Organization - -Recommended directory structure: -``` -home/ -β”œβ”€β”€ data/ -β”‚ β”œβ”€β”€ raw/ # Original, immutable data -β”‚ β”œβ”€β”€ processed/ # Cleaned, transformed data -β”‚ └── external/ # Data from external sources -β”œβ”€β”€ notebooks/ -β”‚ β”œβ”€β”€ exploratory/ # Initial explorations -β”‚ β”œβ”€β”€ analysis/ # Detailed analysis -β”‚ └── reports/ # Final reports -β”œβ”€β”€ scripts/ # Reusable Python scripts -β”œβ”€β”€ results/ # Output files, figures -└── requirements.txt # Package dependencies -``` - ### Data Persistence ⚠️ **Important**: Your home directory is persistent, but understand the storage limits: -- **Home directory**: Usually 10-100 GB (persistent) +- **Home directory**: 100 GB/user (persistent) - **Shared data**: Read-only datasets available to all users - **Temporary storage**: `/tmp` cleared on restart - **Best practice**: Store large datasets in cloud storage, not home directory @@ -372,205 +295,6 @@ pip install -r requirements.txt --- -## Terminal and Command Line Access - -### Opening Terminal - -1. **From Launcher**: Click "Terminal" icon -2. **From menu**: File β†’ New β†’ Terminal -3. **Keyboard shortcut**: (varies by setup) - -### Common Terminal Commands - -```bash -# Navigation -pwd # Print working directory -ls -la # List files with details -cd ~/notebooks # Change directory - -# File operations -mkdir project # Create directory -cp file1.txt file2.txt # Copy file -mv oldname newname # Move/rename -rm file.txt # Delete file (careful!) - -# File viewing -cat file.txt # Display file contents -head -n 10 data.csv # First 10 lines -tail -n 10 log.txt # Last 10 lines -less large_file.txt # Page through file - -# Process management -ps aux # List processes -top # Monitor resources -kill -9 PID # Kill process - -# Git operations -git status -git add . -git commit -m "message" -git push -``` - -### Working with Data Files - -```bash -# Count lines in file -wc -l data.csv - -# View CSV structure -head -1 data.csv | tr ',' '\n' | nl - -# Search in files -grep "pattern" file.txt -grep -r "pattern" ./directory - -# Compress/decompress -zip archive.zip file1 file2 -unzip archive.zip -tar -czf archive.tar.gz directory/ -tar -xzf archive.tar.gz -``` - ---- - -## Collaboration and Sharing - -### Sharing Notebooks - -#### Method 1: Direct File Sharing -1. Download notebook: File β†’ Download as β†’ Notebook (.ipynb) -2. Share via email, Slack, or file sharing service -3. Recipient uploads to their JupyterHub - -#### Method 2: Using Git -```bash -# Initialize repository -git init -git add notebook.ipynb -git commit -m "Add analysis notebook" -git remote add origin https://github.com/user/repo.git -git push -u origin main -``` - -#### Method 3: Export Formats -- **HTML**: File β†’ Export Notebook As β†’ HTML -- **PDF**: File β†’ Export Notebook As β†’ PDF (requires LaTeX) -- **Python script**: File β†’ Export Notebook As β†’ Python -- **Markdown**: File β†’ Export Notebook As β†’ Markdown - -### Real-time Collaboration - -Some JupyterHub deployments support real-time collaboration: - -1. **Share workspace link**: Get shareable link from hub admin -2. **Collaborative editing**: Multiple users can edit simultaneously -3. **See collaborator cursors**: Real-time cursor positions -4. **Chat integration**: Built-in chat for discussion - -### Version Control Best Practices - -1. **Clear outputs before committing**: - ```bash - jupyter nbconvert --clear-output notebook.ipynb - ``` - -2. **Use .gitignore**: - ``` - .ipynb_checkpoints/ - __pycache__/ - *.pyc - .DS_Store - data/ # Don't commit large data files - ``` - -3. **Notebook diff tools**: - ```bash - # Install nbdime for better notebook diffs - pip install nbdime - nbdime config-git --enable - ``` - ---- - -## Resource Management - -### Understanding Resource Limits - -Your JupyterHub instance has resource limits: - -```python -# Check available resources -import psutil - -# Memory -memory = psutil.virtual_memory() -print(f"Total RAM: {memory.total / 1e9:.2f} GB") -print(f"Available: {memory.available / 1e9:.2f} GB") -print(f"Used: {memory.percent}%") - -# CPU -print(f"CPU cores: {psutil.cpu_count()}") -print(f"CPU usage: {psutil.cpu_percent()}%") - -# Disk -disk = psutil.disk_usage('/') -print(f"Disk space: {disk.total / 1e9:.2f} GB") -print(f"Disk used: {disk.percent}%") -``` - -### Monitoring Resource Usage - -#### JupyterLab Extension -- Install Resource Usage extension -- Shows real-time memory and CPU usage in status bar - -#### Command line monitoring -```bash -# Real-time resource monitoring -top -htop # If installed - -# Memory usage -free -h - -# Disk usage -df -h -du -sh * # Directory sizes -``` - -### Optimizing Resource Usage - -1. **Clear variables when done**: - ```python - # Clear specific variable - del large_dataframe - - # Clear all variables - %reset -f - - # Garbage collection - import gc - gc.collect() - ``` - -2. **Use efficient data types**: - ```python - # Use categories for strings with few unique values - df['category'] = df['category'].astype('category') - - # Use smaller numeric types when possible - df['count'] = df['count'].astype('int32') # Instead of int64 - ``` - -3. **Process data in chunks**: - ```python - # Read large CSV in chunks - chunk_size = 10000 - for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size): - process_chunk(chunk) - ``` - ### Shutting Down Properly Always shut down kernels and terminals when done: @@ -580,369 +304,11 @@ Always shut down kernels and terminals when done: 3. **Hub Control Panel**: File β†’ Hub Control Panel β†’ Stop My Server 4. **Logout**: File β†’ Log Out -⚠️ **Important**: Idle servers may be automatically culled after a period of inactivity (usually 1-2 hours). - ---- - -## Best Practices - -### Project Organization - -1. **Use consistent naming**: - ``` - 2024-01-15_earthquake_analysis.ipynb # Good - untitled1.ipynb # Bad - ``` - -2. **Create project templates**: - ```python - # notebook_template.ipynb - - # 1. Imports - import pandas as pd - import numpy as np - import matplotlib.pyplot as plt - - # 2. Configuration - pd.set_option('display.max_columns', None) - plt.style.use('seaborn') - - # 3. Data Loading - - # 4. Data Exploration - - # 5. Analysis - - # 6. Results - ``` - -3. **Document dependencies**: - ```python - # Generate requirements.txt - !pip freeze > requirements.txt - ``` - -### Security Considerations - -1. **Never commit credentials**: - ```python - # Bad - api_key = "sk-abc123def456" - - # Good - Use environment variables - import os - api_key = os.environ.get('API_KEY') - ``` - -2. **Use secrets management**: - ```python - # Store secrets in .env file - from dotenv import load_dotenv - load_dotenv() - - # Access secrets - secret = os.getenv('SECRET_KEY') - ``` - -3. **Be careful with outputs**: - - Clear cells containing sensitive information - - Review notebooks before sharing - -### Performance Tips - -1. **Vectorize operations**: - ```python - # Slow - results = [] - for i in range(len(df)): - results.append(df.iloc[i]['column'] * 2) - - # Fast - results = df['column'] * 2 - ``` - -2. **Use built-in functions**: - ```python - # Use pandas/numpy operations instead of loops - df['new_col'] = df['col1'] + df['col2'] # Vectorized - ``` - -3. **Profile your code**: - ```python - %%time # Time entire cell - - %timeit function() # Time single line - - # Detailed profiling - %load_ext line_profiler - %lprun -f function_to_profile function_to_profile() - ``` - ---- - -## Troubleshooting - -### Common Issues and Solutions - -#### Kernel Won't Start -- **Check resources**: Server might be full -- **Try different kernel**: Some kernels may be broken -- **Restart server**: Hub Control Panel β†’ Stop β†’ Start - -#### Package Import Errors -```python -# Check if package is installed -import importlib -if importlib.util.find_spec("package_name") is None: - !pip install package_name - -# Restart kernel after installation -from IPython import get_ipython -get_ipython().kernel.do_shutdown(True) -``` - -#### Out of Memory Errors -1. Clear unnecessary variables: `del variable_name` -2. Use smaller data samples for testing -3. Request larger server instance -4. Process data in chunks - -#### Notebook Won't Save -- **Check disk space**: `df -h` in terminal -- **Check file permissions**: `ls -la notebook.ipynb` -- **Save with new name**: File β†’ Save As -- **Download backup**: File β†’ Download - -#### Connection Issues -- **Check internet connection** -- **Try different browser** -- **Clear browser cache** -- **Check if hub is under maintenance** - -### Getting Help - -1. **Built-in help**: - ```python - help(function_name) - function_name? # Quick help - function_name?? # Source code - ``` - -2. **Documentation**: - - JupyterHub docs: https://jupyterhub.readthedocs.io - - JupyterLab docs: https://jupyterlab.readthedocs.io - - 2i2c docs: https://docs.2i2c.org - -3. **Community support**: - - Discourse forum - - GitHub issues - - Stack Overflow with tags: `jupyter`, `jupyterhub` - ---- - -## Keyboard Shortcuts - -### Command Mode (Blue cell border) -Press `Esc` to enter command mode - -| Shortcut | Action | -|----------|--------| -| `Enter` | Enter edit mode | -| `A` | Insert cell above | -| `B` | Insert cell below | -| `D,D` | Delete cell | -| `Y` | Change to code cell | -| `M` | Change to markdown cell | -| `Shift+Up/Down` | Select multiple cells | -| `Shift+M` | Merge selected cells | -| `C` | Copy cell | -| `X` | Cut cell | -| `V` | Paste cell below | -| `Shift+V` | Paste cell above | -| `Z` | Undo cell deletion | -| `0,0` | Restart kernel | -| `I,I` | Interrupt kernel | - -### Edit Mode (Green cell border) -Press `Enter` to enter edit mode - -| Shortcut | Action | -|----------|--------| -| `Esc` | Enter command mode | -| `Ctrl+Enter` | Run cell | -| `Shift+Enter` | Run cell, select below | -| `Alt+Enter` | Run cell, insert below | -| `Ctrl+S` | Save notebook | -| `Tab` | Code completion | -| `Shift+Tab` | Tooltip | -| `Ctrl+]` | Indent | -| `Ctrl+[` | Dedent | -| `Ctrl+A` | Select all | -| `Ctrl+Z` | Undo | -| `Ctrl+Y` | Redo | - -### JupyterLab Shortcuts - -| Shortcut | Action | -|----------|--------| -| `Ctrl+Shift+C` | Command palette | -| `Ctrl+B` | Toggle left sidebar | -| `Ctrl+Shift+D` | Toggle file browser | -| `Ctrl+Shift+F` | Find and replace | -| `Ctrl+Shift+[` | Previous tab | -| `Ctrl+Shift+]` | Next tab | -| `Alt+W` | Close tab | - ---- - -## Resources and Links - -### Official Documentation - -- **JupyterHub Documentation**: https://jupyterhub.readthedocs.io -- **JupyterLab Documentation**: https://jupyterlab.readthedocs.io -- **Jupyter Notebook Documentation**: https://jupyter-notebook.readthedocs.io -- **2i2c Infrastructure Guide**: https://docs.2i2c.org - -### Tutorials and Learning Resources - -- **Jupyter Tutorial**: https://jupyter.org/try -- **Real Python Jupyter Guide**: https://realpython.com/jupyter-notebook-introduction/ -- **DataCamp Jupyter Tutorial**: https://www.datacamp.com/tutorial/tutorial-jupyter-notebook -- **Official Jupyter Examples**: https://github.com/jupyter/jupyter/wiki/Gallery-of-Jupyter-Notebooks - -### Disaster Response Specific Resources - -- **NASA Disasters Program**: https://disasters.nasa.gov -- **USGS Hazards Data**: https://www.usgs.gov/natural-hazards -- **NOAA Disaster Data**: https://www.ncdc.noaa.gov/billions/ -- **Copernicus Emergency Management**: https://emergency.copernicus.eu - -### Python Libraries for Disaster Analysis - -```python -# Geospatial analysis -import geopandas as gpd -import rasterio -import xarray as xr -import folium - -# Data processing -import pandas as pd -import numpy as np -import dask.dataframe as dd - -# Visualization -import matplotlib.pyplot as plt -import seaborn as sns -import plotly.express as px - -# Machine learning -from sklearn import * -import tensorflow as tf -import torch - -# Earth observation -import ee # Google Earth Engine -import planetary_computer as pc -import pystac_client -``` - -### Helpful Extensions - -Install JupyterLab extensions for enhanced functionality: - -```bash -# Variable inspector -jupyter labextension install @lckr/jupyterlab_variableinspector - -# Table of contents -jupyter labextension install @jupyterlab/toc - -# Git integration -pip install jupyterlab-git - -# Code formatter -pip install jupyterlab-code-formatter -``` - -### Community and Support - -- **Jupyter Discourse Forum**: https://discourse.jupyter.org -- **Stack Overflow**: https://stackoverflow.com/questions/tagged/jupyter -- **GitHub Issues**: https://github.com/jupyterhub/jupyterhub/issues -- **2i2c Support**: https://2i2c.org/support -- **Gitter Chat**: https://gitter.im/jupyterhub/jupyterhub - -### Quick Reference PDFs - -- **JupyterLab Cheat Sheet**: https://www.datacamp.com/cheat-sheet/jupyterlab-cheat-sheet -- **Jupyter Shortcuts PDF**: https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/ -- **Markdown Guide**: https://www.markdownguide.org/cheat-sheet/ - ---- - -## Appendix: Sample Workflow - -Here's a complete example workflow for disaster analysis: - -```python -# 1. Setup and Imports -import pandas as pd -import geopandas as gpd -import matplotlib.pyplot as plt -import folium -from datetime import datetime, timedelta -import warnings -warnings.filterwarnings('ignore') - -# 2. Load Data -# Earthquake data -earthquakes = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.csv') -earthquakes['time'] = pd.to_datetime(earthquakes['time']) - -# 3. Data Processing -# Filter recent events -recent = earthquakes[earthquakes['time'] > datetime.now() - timedelta(days=7)] - -# Convert to GeoDataFrame -geometry = gpd.points_from_xy(recent.longitude, recent.latitude) -geo_df = gpd.GeoDataFrame(recent, geometry=geometry, crs='EPSG:4326') - -# 4. Analysis -print(f"Total earthquakes in last 7 days: {len(recent)}") -print(f"Average magnitude: {recent['mag'].mean():.2f}") -print(f"Largest earthquake: {recent['mag'].max():.2f}") - -# 5. Visualization -# Static plot -fig, ax = plt.subplots(figsize=(12, 8)) -world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) -world.plot(ax=ax, color='lightgray', edgecolor='black') -geo_df.plot(ax=ax, color='red', markersize=geo_df['mag']**2, alpha=0.6) -plt.title('Recent Earthquakes (M4.5+)') -plt.show() - -# Interactive map -m = folium.Map(location=[0, 0], zoom_start=2) -for idx, row in geo_df.iterrows(): - folium.CircleMarker( - location=[row['latitude'], row['longitude']], - radius=row['mag']*2, - popup=f"M{row['mag']} - {row['place']}", - color='red', - fill=True - ).add_to(m) -m.save('earthquake_map.html') - -# 6. Export Results -geo_df.to_csv('processed_earthquakes.csv', index=False) -print("Analysis complete! Results saved.") -``` +⚠️ **Important**: Idle servers will be automatically culled after a period of inactivity (usually 1-2 hours). --- -*Last Updated: 2024* +*Last Updated: 2025* *Version: 1.0* *Disasters Hub Training Guide* diff --git a/Jupyterhub/setup-disaster-repo.qmd b/Jupyterhub/setup-disaster-repo.qmd deleted file mode 100644 index fa4f4b5..0000000 --- a/Jupyterhub/setup-disaster-repo.qmd +++ /dev/null @@ -1,492 +0,0 @@ -# Setting Up Disaster Repository - Step-by-Step Guide - -## Table of Contents -1. [Prerequisites](#prerequisites) -2. [GitHub Account Setup](#github-account-setup) -3. [Configure Git Identity](#configure-git-identity) -4. [GitHub Authentication Setup](#github-authentication-setup) -5. [Clone the Repository](#clone-the-repository) -6. [Working with Branches](#working-with-branches) -7. [Making Changes and Pushing](#making-changes-and-pushing) -8. [Troubleshooting Common Issues](#troubleshooting-common-issues) - ---- - -## Prerequisites - -Before starting, ensure you have: -- Git installed in your JupyterHub environment -- Access to terminal in JupyterHub -- Internet connection -- GitHub account (we'll create one if needed) - -Check if Git is installed: -```bash -git --version -``` - -If not installed, contact your JupyterHub administrator. - ---- - -## GitHub Account Setup - -### Step 1: Create GitHub Account (if you don't have one) - -1. Visit [https://github.com](https://github.com) -2. Click **Sign up** -3. Enter your details: - - **Username**: Choose carefully (this is permanent and public) - - **Email**: Use your professional/institutional email - - **Password**: Create a strong password -4. Verify your email address -5. Complete profile setup - -### Step 2: Enable Two-Factor Authentication (Recommended) - -1. Go to **Settings** β†’ **Password and authentication** -2. Click **Enable two-factor authentication** -3. Use an authenticator app (Google Authenticator, Authy, or Microsoft Authenticator) -4. Save backup codes securely - ---- - -## Configure Git Identity - -Configure Git with your GitHub account information: - -```bash -# Set your name (visible in commits) -git config --global user.name "Your Full Name" - -# Set your email (MUST match your GitHub account email) -git config --global user.email "your.email@example.com" - -# Set default branch name to main -git config --global init.defaultBranch main - -# Enable colored output for better readability -git config --global color.ui auto - -# Verify your configuration -git config --list -``` - -**Example:** -```bash -git config --global user.name "Kyle Lesinger" -git config --global user.email "kyle.lesinger@example.com" -``` - ---- - -## GitHub Authentication Setup - -Since GitHub no longer supports password authentication, you need to use either: -1. **Personal Access Token** (Easier for JupyterHub) -2. **SSH Keys** (More secure, one-time setup) -3. **GitHub CLI** (Recommended - handles auth automatically) - -### Option 1: GitHub CLI Authentication (Recommended) - -```bash -# Authenticate with GitHub CLI -gh auth login - -# Follow the prompts: -# 1. Choose: GitHub.com -# 2. Choose: HTTPS (recommended for JupyterHub) -# 3. Choose: Login with a web browser -# 4. Copy the one-time code shown -# 5. Press Enter to open browser (or manually visit https://github.com/login/device) -# 6. Enter the code and authorize - -# Verify authentication -gh auth status -``` - -### Option 2: Personal Access Token - -1. Go to GitHub.com β†’ **Settings** β†’ **Developer settings** -2. Click **Personal access tokens** β†’ **Tokens (classic)** -3. Click **Generate new token** β†’ **Generate new token (classic)** -4. Name it: "JupyterHub Access" -5. Set expiration (90 days recommended) -6. Select scopes: - - βœ… `repo` (Full control of private repositories) - - βœ… `workflow` (Update GitHub Action workflows) -7. Click **Generate token** -8. **COPY THE TOKEN IMMEDIATELY** (you won't see it again!) - -Store the token securely for use when pushing: -```bash -# Store credentials (will be saved after first use) -git config --global credential.helper store -``` - -### Option 3: SSH Key Setup - -```bash -# Generate SSH key -ssh-keygen -t ed25519 -C "your.email@example.com" -# Press Enter for default location -# Optionally set a passphrase - -# Display your public key -cat ~/.ssh/id_ed25519.pub - -# Copy the entire output, then: -# 1. Go to GitHub.com β†’ Settings β†’ SSH and GPG keys -# 2. Click "New SSH key" -# 3. Paste your key and save - -# Test SSH connection -ssh -T git@github.com -``` - ---- - -## Clone the Repository - -### Step 1: Clone the Repository - -```bash -# Navigate to your workspace -cd ~/ - -# Clone the repository (creates a new folder called 'conversion_scripts') -git clone https://github.com/kyle-lesinger/conversion_scripts.git - -# Navigate into the repository -cd conversion_scripts - -# Verify the clone -ls -la -git status -``` - -### Step 2: Verify Remote Configuration - -```bash -# Check current remotes -git remote -v - -# You should see: -# origin https://github.com/kyle-lesinger/conversion_scripts.git (fetch) -# origin https://github.com/kyle-lesinger/conversion_scripts.git (push) -``` - -### Step 3: (Optional) Switch to SSH Remote - -If you set up SSH keys and prefer using SSH: - -```bash -# Remove HTTPS remote -git remote remove origin - -# Add SSH remote -git remote add origin git@github.com:kyle-lesinger/conversion_scripts.git - -# Verify the change -git remote -v -``` - ---- - -## Working with Branches - -### Create a New Branch - -Always create a new branch for your work instead of committing directly to main: - -```bash -# Make sure you're on the main branch -git checkout main - -# Pull latest changes -git pull origin main - -# Create and switch to a new branch -git checkout -b feature/your-feature-name - -# Example branch names: -# git checkout -b feature/add-preprocessing -# git checkout -b bugfix/fix-data-pipeline -# git checkout -b docs/update-readme -``` - -### Verify Your Branch - -```bash -# Check which branch you're on -git branch - -# List all branches (local and remote) -git branch -a -``` - ---- - -## Making Changes and Pushing - -### Step 1: Make Your Changes - -```bash -# Create or edit files -echo "# Conversion Scripts" > README.md -echo "This repository contains data conversion scripts." >> README.md - -# Check what files have changed -git status -``` - -### Step 2: Stage and Commit Changes - -```bash -# Add specific files -git add README.md - -# Or add all changes -git add . - -# Commit with descriptive message -git commit -m "Add README with project description" - -# View commit history -git log --oneline -``` - -### Step 3: Push to GitHub - -#### First Time Push (new branch): -```bash -# Push and set upstream branch -git push -u origin feature/your-feature-name - -# If using Personal Access Token, enter: -# Username: your-github-username -# Password: your-personal-access-token (NOT your GitHub password!) -``` - -#### Subsequent Pushes: -```bash -# After upstream is set, simply: -git push -``` - -### Step 4: Create Pull Request - -```bash -# Using GitHub CLI (if authenticated) -gh pr create --title "Add README documentation" --body "Added project description" - -# Or manually: -# 1. Visit https://github.com/kyle-lesinger/conversion_scripts -# 2. Click "Compare & pull request" button -# 3. Add title and description -# 4. Click "Create pull request" -``` - ---- - -## Complete Workflow Example - -Here's a complete example workflow from start to finish: - -```bash -# 1. Configure Git (one-time setup) -git config --global user.name "Kyle Lesinger" -git config --global user.email "kyle.lesinger@example.com" - -# 2. Authenticate with GitHub CLI -gh auth login -# Follow the interactive prompts - -# 3. Clone the repository -cd ~/ -git clone https://github.com/kyle-lesinger/conversion_scripts.git -cd conversion_scripts - -# 4. Create a new branch -git checkout -b feature/add-conversion-script - -# 5. Create a new file -cat > convert_data.py << 'EOF' -#!/usr/bin/env python3 -""" -Data conversion utility script -""" - -def convert_format(input_file, output_file): - """Convert data from one format to another""" - print(f"Converting {input_file} to {output_file}") - # Add conversion logic here - -if __name__ == "__main__": - convert_format("input.txt", "output.json") -EOF - -# 6. Stage and commit -git add convert_data.py -git commit -m "Add data conversion utility script" - -# 7. Push to GitHub -git push -u origin feature/add-conversion-script - -# 8. Create pull request -gh pr create --title "Add data conversion script" --body "Initial conversion utility" -``` - ---- - -## Troubleshooting Common Issues - -### Issue 1: Authentication Failed - -**Error:** `remote: Invalid username or password` - -**Solution:** -```bash -# Use Personal Access Token instead of password -# When prompted for password, paste your token - -# Or use GitHub CLI -gh auth login -``` - -### Issue 2: Permission Denied (publickey) - -**Error:** `git@github.com: Permission denied (publickey)` - -**Solution:** -```bash -# Check if SSH key exists -ls -la ~/.ssh/ - -# Generate new key if needed -ssh-keygen -t ed25519 -C "your.email@example.com" - -# Add to SSH agent -eval "$(ssh-agent -s)" -ssh-add ~/.ssh/id_ed25519 - -# Add public key to GitHub account -cat ~/.ssh/id_ed25519.pub -# Copy output and add to GitHub.com β†’ Settings β†’ SSH Keys -``` - -### Issue 3: Remote Already Exists - -**Error:** `error: remote origin already exists` - -**Solution:** -```bash -# Remove existing remote -git remote remove origin - -# Add new remote -git remote add origin https://github.com/kyle-lesinger/conversion_scripts.git -``` - -### Issue 4: Rejected Push (Non-fast-forward) - -**Error:** `! [rejected] main -> main (non-fast-forward)` - -**Solution:** -```bash -# Pull latest changes first -git pull origin main --rebase - -# Then push -git push origin main -``` - -### Issue 5: Wrong Branch - -**Error:** Working on main branch instead of feature branch - -**Solution:** -```bash -# Create new branch with current changes -git checkout -b feature/my-changes - -# Push to new branch -git push -u origin feature/my-changes -``` - ---- - -## Best Practices - -1. **Always work in branches** - Never commit directly to main -2. **Pull before pushing** - Always sync with remote before pushing -3. **Use descriptive commit messages** - Explain what and why -4. **Commit frequently** - Small, logical commits are better -5. **Keep tokens secure** - Never commit tokens or passwords -6. **Test locally** - Run your code before committing - ---- - -## Quick Command Reference - -```bash -# Clone repository -git clone https://github.com/kyle-lesinger/conversion_scripts.git - -# Create branch -git checkout -b feature/new-feature - -# Check status -git status - -# Add files -git add . - -# Commit -git commit -m "Description of changes" - -# Push new branch -git push -u origin feature/new-feature - -# Push existing branch -git push - -# Pull latest changes -git pull origin main - -# Switch branches -git checkout branch-name - -# List branches -git branch -a - -# Delete local branch -git branch -d branch-name - -# View commit history -git log --oneline --graph -``` - ---- - -## Additional Resources - -- [GitHub Docs](https://docs.github.com) -- [Git Documentation](https://git-scm.com/doc) -- [GitHub CLI Manual](https://cli.github.com/manual) -- [Pro Git Book (Free)](https://git-scm.com/book) - ---- - -## Getting Help - -If you encounter issues not covered here: - -1. Check the repository issues: https://github.com/kyle-lesinger/conversion_scripts/issues -2. Ask in the JupyterHub support channel -3. Consult the comprehensive [Git/GitHub guide](../Github/git-github-comprehensive-guide.md) - ---- - -*Last Updated: 2024* -*Version: 1.0* \ No newline at end of file diff --git a/_quarto.yml b/_quarto.yml index bd48342..191c8d6 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -56,9 +56,7 @@ website: text: JupyterHub contents: - Jupyterhub/jupyterhub-training-guide.qmd - - Jupyterhub/setup-disaster-repo.qmd - - Jupyterhub/convert_to_geotiff.qmd - - Jupyterhub/simple_disaster_template.ipynb + - Jupyterhub/clone_conversion_repo.ipynb - section: workflow2.qmd text: Data Workflow Diagrams contents: @@ -114,16 +112,21 @@ format: // Get the base path for the current page function getBasePath() { - const path = window.location.pathname; - // Extract base directory from current path - const parts = path.split('/').filter(p => p); - // Find the index.html or last segment - const fileIndex = parts.findIndex(p => p.endsWith('.html')); - if (fileIndex > 0) { - return '/' + parts.slice(0, fileIndex).join('/') + '/'; + let path = window.location.pathname; + + // If path ends with / or is a directory, it's already the base + if (path.endsWith('/')) { + return path; + } + + // If path ends with .html, get the directory + if (path.endsWith('.html')) { + const lastSlash = path.lastIndexOf('/'); + return path.substring(0, lastSlash + 1); } - // Default: go to root of disasters-docs - return '/disasters-docs/'; + + // Otherwise, assume it's a directory and add trailing slash + return path + '/'; } function getLoginPage() { diff --git a/_site/AWS/AWS_SSO_Remote_Server.html b/_site/AWS/AWS_SSO_Remote_Server.html deleted file mode 100644 index 27ff0a0..0000000 --- a/_site/AWS/AWS_SSO_Remote_Server.html +++ /dev/null @@ -1,1857 +0,0 @@ - - - - - - - - - -aws_sso_remote_server – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

πŸ–₯️ AWS SSO Remote Server Configuration Guide

-
-

πŸ” Use AWS SSO Credentials on Remote Servers

-

This guide explains how to use your AWS SSO credentials from your local machine on remote servers (like JupyterHub or SSH servers) without storing permanent credentials.

-
-
-
-

πŸ“‹ Prerequisites

-
    -
  • βœ… Completed AWS SSO Setup Guide on your local machine
  • -
  • βœ… SSH/SCP access to your remote server
  • -
  • βœ… AWS CLI v2 installed on the remote server
  • -
-
-
-
-

🎯 How It Works

-

AWS SSO generates temporary credentials stored in:

-
    -
  • Configuration: ~/.aws/config (SSO profile settings)
  • -
  • Credentials Cache: ~/.aws/sso/cache/ (temporary session tokens)
  • -
-

To use SSO on a remote server, you need to:

-
    -
  1. Copy the SSO profile configuration once
  2. -
  3. Sync the temporary credentials cache regularly (before each session)
  4. -
-
-
-
-

πŸ› οΈ Step 1: Initial Setup - Copy SSO Configuration

-
-

Copy AWS Config to Remote Server

-

First, copy your SSO profile configuration from your local machine to the remote server:

-

Linux/macOS:

-
# Copy the AWS config file containing your SSO profile
-scp ~/.aws/config username@remote-host:~/.aws/config
-

Windows (PowerShell):

-
# Copy the AWS config file containing your SSO profile
-scp "$env:USERPROFILE\.aws\config" username@remote-host:~/.aws/config
-

Alternative: If you have other profiles in your config, you can manually copy just the SSO section:

-

Linux/macOS:

-
# View your local SSO configuration
-cat ~/.aws/config
-

Windows (PowerShell):

-
# View your local SSO configuration
-Get-Content "$env:USERPROFILE\.aws\config"
-

Then SSH into your remote server and create/edit ~/.aws/config:

-
[profile disasters-sso]
-sso_session = disasters
-sso_account_id = 867530900000
-sso_role_name = Project-Power-User
-region = us-east-1
-output = json
-
-[sso-session disasters]
-sso_start_url = https://d-9067c5bbc5.awsapps.com/start/#
-sso_region = us-east-1
-sso_registration_scopes = sso:account:access
-

πŸ’‘ Important: Replace the account ID, role name, and SSO URL with your actual values from the local AWS SSO setup.

-
-
-
-
-

πŸ› οΈ Step 2: Automate Credential Sync

-

Since SSO credentials are temporary and expire, you’ll need to sync them from your local machine to the remote server regularly. Below are automated solutions for both Windows and Linux.

-
-
-
-

πŸͺŸ Step 2 (Windows) - PowerShell Profile Setup

-
-

Check if PowerShell Profile Exists

-

Open PowerShell and run:

-
Test-Path $PROFILE
-

If it returns False, create the profile:

-
New-Item -Type File -Path $PROFILE -Force
-
-
-

Add the Disaster Login Function

-

Edit your PowerShell profile:

-
notepad $PROFILE
-

Add the following function (replace username and remote-host with your actual values):

-
function disasterlogin {
-    try {
-        Write-Host "Logging into AWS SSO..." -ForegroundColor Yellow
-        aws sso login --profile disasters-sso
-
-        Write-Host "Copying SSO cache to remote server..." -ForegroundColor Yellow
-        scp -r "$env:USERPROFILE\.aws\sso\cache\*" username@remote-host:~/.aws/sso/cache/
-
-        Write-Host "Complete!" -ForegroundColor Green
-    }
-    catch {
-        Write-Host "Error: $_" -ForegroundColor Red
-    }
-}
-
-
-

Reload Your Profile

-

Close and reopen PowerShell, or run:

-
. $PROFILE
-
-
-

Usage

-

From now on, simply run:

-
disasterlogin
-

This will:

-
    -
  1. Prompt you to log in via AWS SSO in your browser
  2. -
  3. Automatically copy the temporary credentials to your remote server
  4. -
  5. Display status updates
  6. -
-
-
-
-
-

🐧 Step 2 (Linux/macOS) - Bash Profile Setup

-
-

Add the Disaster Login Function

-

Edit your shell profile file (choose based on your shell):

-
# For bash
-nano ~/.bashrc
-
-# For zsh (macOS default)
-nano ~/.zshrc
-

Add the following function (replace username and remote-host with your actual values):

-
disasterlogin() {
-    echo -e "\033[1;33mLogging into AWS SSO...\033[0m"
-    aws sso login --profile disasters-sso
-
-    if [ $? -eq 0 ]; then
-        echo -e "\033[1;33mCopying SSO cache to remote server...\033[0m"
-        scp -r ~/.aws/sso/cache/* username@remote-host:~/.aws/sso/cache/
-
-        if [ $? -eq 0 ]; then
-            echo -e "\033[1;32mComplete!\033[0m"
-        else
-            echo -e "\033[1;31mError copying credentials to remote server\033[0m"
-            return 1
-        fi
-    else
-        echo -e "\033[1;31mError logging into AWS SSO\033[0m"
-        return 1
-    fi
-}
-
-
-

Reload Your Profile

-
# For bash
-source ~/.bashrc
-
-# For zsh
-source ~/.zshrc
-
-
-

Usage

-

From now on, simply run:

-
disasterlogin
-

This will: 1. Prompt you to log in via AWS SSO in your browser 2. Automatically copy the temporary credentials to your remote server 3. Display status updates with color-coded messages

-
-
-
-
-

βœ… Verification

-
-

Test on Remote Server

-

SSH into your remote server:

-
ssh username@remote-host
-

Test the AWS CLI with your SSO profile:

-
# List S3 buckets
-aws s3 ls --profile disasters-sso
-
-# Verify identity
-aws sts get-caller-identity --profile disasters-sso
-

Expected output:

-
{
-    "UserId": "AIDAXXXXXXXXXXXXXXXXX:user@example.com",
-    "Account": "867530900000",
-    "Arn": "arn:aws:sts::867530900000:assumed-role/Project-Power-User/user@example.com"
-}
-
-
-
-
-

πŸ”„ Daily Workflow

-
-

Starting a Remote Work Session

-
    -
  1. On your local machine, run the login function:

    -
      -
    • Windows: disasterlogin in PowerShell
    • -
    • Linux/macOS: disasterlogin in terminal
    • -
  2. -
  3. SSH into your remote server:

    -
    ssh username@remote-host
  4. -
  5. Use AWS commands (optionally set the profile as default):

    -

    Temporary (for current session only):

    -
    # For bash/zsh
    -export AWS_PROFILE=disasters-sso
    -aws s3 ls
    -

    Permanent (add to shell profile):

    -

    To avoid setting this every time you log in, add it to your shell profile:

    -
    # For bash - add to ~/.bashrc
    -echo 'export AWS_PROFILE=disasters-sso' >> ~/.bashrc
    -source ~/.bashrc
    -
    -# For zsh - add to ~/.zshrc
    -echo 'export AWS_PROFILE=disasters-sso' >> ~/.zshrc
    -source ~/.zshrc
    -

    Alternative for csh/tcsh shells:

    -

    If export doesn’t work, you may be using a csh/tcsh shell. Use setenv instead:

    -
    # Temporary (for current session)
    -setenv AWS_PROFILE disasters-sso
    -aws s3 ls
    -
    -# Permanent - add to ~/.cshrc or ~/.tcshrc
    -echo 'setenv AWS_PROFILE disasters-sso' >> ~/.cshrc
    -source ~/.cshrc
  6. -
-
-
-

When Credentials Expire

-

If you see errors like β€œThe security token included in the request is invalid”:

-
    -
  1. Run disasterlogin again on your local machine
  2. -
  3. The fresh credentials will be synced to the remote server
  4. -
  5. Continue working on the remote server
  6. -
-
-
-
-
-

🚨 Troubleshooting

-
-

β€œPermission denied” when using SCP

-

Cause: SSH key not configured or remote directory doesn’t exist

-

Solution:

-
# Ensure .aws/sso/cache directory exists on remote server
-ssh username@remote-host "mkdir -p ~/.aws/sso/cache"
-
-# Test SSH connection
-ssh username@remote-host "echo 'SSH works'"
-
-
-

β€œaws: command not found” on remote server

-

Cause: AWS CLI not installed on remote server

-

Solution: Install AWS CLI v2 on the remote server

-
# On the remote server (Linux)
-curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
-unzip awscliv2.zip
-sudo ./aws/install
-
-
-

Credentials work locally but not on remote server

-

Cause: Missing or incorrect ~/.aws/config on remote server

-

Solution: Re-copy the config file from Step 1

-
-
-
-
-

🎯 Best Practices

-
    -
  1. Always sync before starting work - Run disasterlogin at the beginning of each session
  2. -
  3. Don’t store permanent credentials - Never put long-term credentials on remote servers
  4. -
  5. Use SSH keys - Set up SSH key authentication for passwordless SCP
  6. -
  7. Set AWS_PROFILE - Export AWS_PROFILE=disasters-sso to avoid typing --profile repeatedly
  8. -
  9. Monitor credential expiration - SSO tokens typically last 1-12 hours
  10. -
-
-
-
-

πŸ” Security Considerations

-
-

Why This Approach is Secure

-
    -
  • βœ… No permanent credentials on remote servers - Only temporary tokens are synced
  • -
  • βœ… Automatic expiration - Tokens expire after a few hours
  • -
  • βœ… Centralized access control - Revoke access in AWS SSO, affects all servers immediately
  • -
  • βœ… No credential storage - Credentials are never stored in code or config files
  • -
-
-
-

What NOT to Do

-
    -
  • ❌ Don’t copy ~/.aws/credentials to remote servers
  • -
  • ❌ Don’t run aws configure with permanent keys on remote servers
  • -
  • ❌ Don’t commit credentials to git repositories
  • -
  • ❌ Don’t share your SSO cache with other users
  • -
-
-
-
-
-

πŸ“š Resources

- -
-

πŸ” Remember: Temporary credentials are your friend. Never use permanent credentials on shared servers!

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/AWS/AWS_SSO_Setup_Guide.html b/_site/AWS/AWS_SSO_Setup_Guide.html deleted file mode 100644 index 368be52..0000000 --- a/_site/AWS/AWS_SSO_Setup_Guide.html +++ /dev/null @@ -1,1752 +0,0 @@ - - - - - - - - - -aws_sso_setup_guide – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

πŸš€ AWS SSO Configuration Guide

-
-

πŸ” Secure Your AWS Credentials with AWS Identity Center (SSO)

-

This guide walks you through setting up AWS Single Sign-On (SSO) to securely manage your AWS credentials without storing them in plain text which is not encrypted.

-
-
-
-

πŸ“‹ Prerequisites

-
    -
  • βœ… AWS CLI v2 installed (version 2.x or higher)
  • -
  • βœ… Access to AWS Identity Center (formerly AWS SSO)
  • -
  • βœ… Your organization’s SSO portal URL
  • -
-
-
-
-

πŸ› οΈ Step-by-Step Setup Instructions

-
-

Step 1: Initialize SSO Configuration

-
aws configure sso
-
-
-

Step 2: Choose a Profile Name

-

When prompted for SSO session name, enter a descriptive name for your profile:

-

SSO session name (Recommended): disasters

-

πŸ’‘ Tip: Can use meaningful names like prod-admin-disasters, dev-poweruser-disasters, etc. But if you are only using a single profile then it is suggested to use disasters as this is what this tutorial assumes.

-
-
-

Step 3: Enter Your SSO Start URL

-

Find your SSO URL in the AWS Identity Center portal and enter it:

-

SSO start URL [None]: https://d-9067c5bbc5.awsapps.com/start/#

-

πŸ“ Where to find: Navigate to your AWS SSO portal from link within NASA SMCE email β†’ Look for the URL in your browser

-
-
-

Step 4: Specify SSO Region

-

Enter the region where your Identity Center is configured. Although the bucket is located in us-west-2 this is NOT what you should enter. Please enter us-east-1.

-

SSO region [None]: us-east-1

-
-
-

Step 5: SSO Registration Scopes

-

Leave this section blank. Press Enter to accept the default:

-

SSO registration scopes [sso:account:access]:

-

✨ The default scope is sufficient for most use cases

-
-
-

Step 6: Browser Authentication

-

🌐 A browser window will open automatically:

-
    -
  1. Log in with your corporate credentials
  2. -
  3. Click β€œAllow” to grant access to AWS CLI (botocore)
  4. -
  5. Return to your terminal
  6. -
-
-
-

Step 7: Select AWS Account

-

Enter your AWS account ID (12 digits):

-

AWS account ID: 867530900000

-

πŸ’‘ Tip: Find this in your AWS SSO portal under the accounts tab

-
-
-

Step 8: Choose IAM Role

-

Select from available roles:

-
You may see up to 3 roles available to you, select the one that you will most commonly use. 
-> Project-Power-User
-  ReadOnlyAccess
-

✨ Use arrow keys to select, then press Enter

-
-
-

Step 9: Set Default Region

-

If region is auto-filled to us-east-1, then leave as it is. Otherwise please input us-east-1:

-

CLI default region [us-east-1]: us-east-1

-
-
-

Step 10: Set Output Format

-

Choose your preferred output format:

-

CLI default output format [None]: json

-

Options: json, yaml, text, table

-

πŸ’‘ Tip: It is recommended to use json as the preferred output format

-
-
-
-
-

βœ… Verification

-

To access data from the AWS S3 bucket, you will need to utilize the --profile disasters-sso flag which tells the AWS command to pull config information from ~/.aws/config.

-

Test your configuration:

-
aws s3 ls --profile disasters-sso
-

Expected output:

-
                           PRE browseui/
-                           PRE california_wildfires_202501/
-                           PRE disasters/
-                           ...
-
-
-
-

πŸ”„ Daily Usage

-
-

Login to SSO Session

-
aws sso login --profile disasters-sso
-
-
-

Use AWS Commands

-
# List S3 buckets
-aws s3 ls --profile disasters-sso
-
-# Get caller identity
-aws sts get-caller-identity --profile disasters-sso
-

This is especially helpful when running many AWS commands in a session.

-
-
-

Logout When Done

-
aws sso logout
-
-
-
-
-

πŸ“‚ Configuration Files

-

Your SSO configuration is stored in ~/.aws/config:

-
[profile disasters-sso]
-sso_session = disasters
-sso_account_id = 867530900000
-sso_role_name = Project-Power-User
-region = us-east-1
-output = json
-
-[sso-session disasters]
-sso_start_url = https://d-9067c5bbc5.awsapps.com/start/#
-sso_region = us-east-1
-sso_registration_scopes = sso:account:access
-
-
-
-

⚠️ Important Notes

-
-

πŸ• About Temporary Credentials

-
    -
  • AWS SSO provides temporary credentials that expire after 1-12 hours
  • -
  • Credentials are automatically refreshed when you run commands
  • -
  • No permanent credentials are stored on your machine
  • -
-
-
-

πŸ”’ Why AWS-Vault Didn’t Work

-

AWS-Vault expects permanent credentials to generate temporary ones. Since AWS SSO already provides temporary credentials: - Adding SSO temporary credentials to aws-vault causes authentication errors - SSO handles credential refresh automatically, making aws-vault redundant - Use AWS SSO for temporary credential profiles, aws-vault for permanent ones

-
-
-
-
-

🚨 Troubleshooting

-
-

β€œThe security token included in the request is invalid”

-

Cause: Trying to use expired temporary credentials Solution: Run aws sso login --profile your-profile to refresh

-
-
-

Browser doesn’t open automatically

-

Solution: Add --use-device-code flag:

-
aws sso login --profile disasters-sso --use-device-code
-
-
-

Multiple AWS accounts/roles

-

Create separate profiles for each account/role combination:

-
[profile prod-admin]
-sso_session = mycompany
-sso_account_id = 111111111111
-sso_role_name = Administrator
-
-[profile dev-readonly]
-sso_session = mycompany
-sso_account_id = 222222222222
-sso_role_name = ReadOnlyAccess
-
-
-
-
-

🎯 Best Practices

-
    -
  1. Never store credentials in plain text ❌
  2. -
  3. Use SSO for all AWS access βœ…
  4. -
  5. Logout when finished working πŸ”’
  6. -
  7. Use descriptive profile names πŸ“
  8. -
  9. Set up MFA on your SSO account πŸ”
  10. -
-
-
-
-

πŸš€ Next Steps

-
    -
  1. Remove plain text credentials from ~/.aws/credentials
  2. -
  3. Update scripts to use --profile flag
  4. -
  5. Set default profile: export AWS_PROFILE=disasters-sso
  6. -
  7. Consider using aws-sso-util for enhanced SSO features
  8. -
-
-
-
-

πŸ“š Resources

- -
-

πŸ” Remember: Security is everyone’s responsibility. Keep your credentials safe!

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/AWS/aws-mfa-setup.html b/_site/AWS/aws-mfa-setup.html deleted file mode 100644 index e8474cb..0000000 --- a/_site/AWS/aws-mfa-setup.html +++ /dev/null @@ -1,2055 +0,0 @@ - - - - - - - - - -aws-mfa-setup – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

AWS MFA Authentication Setup and Usage Guide

-
-

Table of Contents

-
    -
  1. Overview
  2. -
  3. Prerequisites
  4. -
  5. Initial Setup
  6. -
  7. Script Installation
  8. -
  9. Usage
  10. -
  11. Troubleshooting
  12. -
  13. Best Practices
  14. -
  15. Security Considerations
  16. -
-
-
-
-

Overview

-
-

What is AWS MFA?

-

Multi-Factor Authentication (MFA) adds an extra layer of security to your AWS account by requiring two forms of identification: 1. Something you know (your password/credentials) 2. Something you have (a time-based token from your MFA device)

-
-
-

Why Use Temporary Credentials?

-
    -
  • Enhanced Security: Temporary credentials automatically expire, reducing the risk if they’re compromised
  • -
  • Compliance: Many organizations require MFA for production AWS access
  • -
  • Best Practice: AWS recommends using temporary credentials instead of long-lived access keys
  • -
  • Session Management: Temporary credentials can be scoped with specific permissions
  • -
-
-
-

The ~/aws_mfa.sh Script

-

The ~/aws_mfa.sh script is a lightweight utility that you call with aws_env to: - Automatically detect your current AWS user - Find your configured MFA device - Generate temporary 12-hour session credentials - Export them to your current shell environment - Optionally save them for use in Jupyter notebooks

-
-
-
-
-

Prerequisites

-
-

Required Software

-
    -
  1. AWS CLI (version 2.x recommended)

    -
    # Check if AWS CLI is installed
    -aws --version
    -
    -# Install AWS CLI on macOS
    -brew install awscli
    -
    -# Install AWS CLI on Linux
    -curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    -unzip awscliv2.zip
    -sudo ./aws/install
  2. -
  3. Bash Shell (standard on macOS and Linux)

    -
    # Check bash version
    -bash --version
  4. -
  5. Python (optional, for Jupyter notebook integration)

    -
    # Check Python installation
    -python --version
  6. -
-
-
-

AWS Account Requirements

-
    -
  1. IAM User Account with: -
      -
    • Programmatic access enabled
    • -
    • MFA device configured
    • -
    • Appropriate permissions for your tasks
    • -
  2. -
  3. MFA Device Setup -
      -
    • Virtual MFA device (Google Authenticator, Authy, etc.)
    • -
    • Hardware MFA token (YubiKey, RSA SecurID, etc.)
    • -
  4. -
-
-
-
-
-

Initial Setup

-
-

Step 1: Configure AWS Credentials

-

Create or edit ~/.aws/credentials:

-
[smce-veda]
-aws_access_key_id = YOUR_ACCESS_KEY_ID
-aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
-

NOTE: These credentials are obtained within the AWS console when you register for an AWS account. You must get approval for this account.

-
-
-

Step 2: Configure AWS Config

-

Create or edit ~/.aws/config:

-
[smce-veda]
-region = us-west-2
-
-
-

Step 3: Enable MFA on Your IAM User

-
    -
  1. Log into AWS Console
  2. -
  3. Navigate to IAM β†’ Users β†’ Your Username
  4. -
  5. Select β€œSecurity credentials” tab
  6. -
  7. Click β€œManage” next to MFA devices
  8. -
  9. Follow the setup wizard for your MFA device type
  10. -
-

NOTE: I’ve found that having ONLY the MFA through phone app (e.g., Google Authenticator) is the only way to make this work. If you select Passkey and have an MFA through phone, they seem to conflict and the steps outlined will not work.

-
-
-

Step 4: Verify MFA Setup

-
# Replace YOUR_USERNAME with your actual IAM username
-aws iam list-mfa-devices --user-name YOUR_USERNAME
-
-# Output should show:
-# "SerialNumber": "arn:aws:iam::123456789012:mfa/YOUR_USERNAME"
-
-
-
-
-

Script Installation

-
-

Step 1: Create the MFA Script

-

Create the file ~/aws_mfa.sh:

-
#!/bin/bash
-
-# πŸ”’ AWS MFA Credential Generator
-# This script creates temporary (12-hour) credentials using your MFA device
-# Requires terminal access for secure input
-# License: GPL 2 or higher
-
-# Check for terminal access
-if [ ! -t 0 ]; then
-  echo "❌ Error: This script requires terminal access for secure input" >&2
-  return
-fi
-
-# Prevent token conflicts
-if [ -n "$AWS_SESSION_TOKEN" ]; then
-  echo "⚠️  Active session detected! 
-   To generate new credentials, clear your current session:
-   unset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID
-   Then ensure you have valid profile credentials configured." >&2
-  return
-fi
-
-# Identify current user
-identity=$(aws sts get-caller-identity --output json)
-username=$(echo -- "$identity" | sed -n 's!.*"arn:aws:iam::.*:user/\(.*\)".*!\1!p')
-
-if [ -z "$username" ]; then
-  echo "❌ Unable to identify user. Expected format:
-    arn:aws:iam::.....:user/YOUR_USERNAME
-  
-Current identity output:
-$identity" >&2
-  return
-fi
-
-echo "πŸ‘€ Authenticated as: $username" >&2
-
-# Find MFA device
-mfa=$(aws iam list-mfa-devices --user-name "$username" --output json)
-device=$(echo -- "$mfa" | sed -n 's!.*"SerialNumber": "\(.*\)".*!\1!p')
-
-if [ -z "$device" ]; then
-  echo "❌ No MFA device found for user: $username
-  
-MFA device output:
-$mfa" >&2
-  return
-fi
-
-echo "πŸ“± MFA device found: $device" >&2
-
-# Request MFA code
-echo -n "πŸ”’ Enter your MFA code: " >&2
-read code
-
-# Generate temporary credentials
-tokens=$(aws sts get-session-token --serial-number "$device" --token-code $code --output json)
-
-echo $tokens
-
-# Extract credentials
-secret=$(echo -- "$tokens" | sed -n 's!.*"SecretAccessKey": "\(.*\)".*!\1!p')
-session=$(echo -- "$tokens" | sed -n 's!.*"SessionToken": "\(.*\)".*!\1!p')
-access=$(echo -- "$tokens" | sed -n 's!.*"AccessKeyId": "\(.*\)".*!\1!p')
-expire=$(echo -- "$tokens" | sed -n 's!.*"Expiration": "\(.*\)".*!\1!p')
-
-if [ -z "$secret" -o -z "$session" -o -z "$access" ]; then
-  echo "❌ Failed to generate temporary credentials
-  
-Token response:
-$tokens" >&2
-  return
-fi
-
-# Export credentials to environment
-export AWS_SESSION_TOKEN=$session
-export AWS_SECRET_ACCESS_KEY=$secret
-export AWS_ACCESS_KEY_ID=$access
-
-echo "βœ… Temporary credentials activated! Expires: $expire" >&2
-
-# Save credentials to .env file for Jupyter notebooks (optional)
-# This will save the new credentials to a .env file in the current directory where you called "aws_env"
-python ~/set_aws_creds.py
-
-
-

Step 2: Make the Script Executable

-
chmod +x ~/aws_mfa.sh
-
- -
-

Step 4: Optional - Python Script for Jupyter Integration

-

If you use Jupyter notebooks, create ~/set_aws_creds.py:

-
#!/usr/bin/env python
-import os
-
-# Get credentials from environment
-access_key = os.environ.get('AWS_ACCESS_KEY_ID')
-secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')
-session_token = os.environ.get('AWS_SESSION_TOKEN')
-
-if access_key and secret_key and session_token:
-    # Save to .env file for Jupyter notebooks
-    with open(os.path.expanduser('~/.env'), 'w') as f:
-        f.write(f'AWS_ACCESS_KEY_ID={access_key}\n')
-        f.write(f'AWS_SECRET_ACCESS_KEY={secret_key}\n')
-        f.write(f'AWS_SESSION_TOKEN={session_token}\n')
-    print("βœ… Credentials saved to ~/.env for Jupyter notebooks")
-else:
-    print("❌ No credentials found in environment")
-
-
-
-
-

Usage

-
-

Basic Usage

-
-

Authenticate with MFA

-
# Switch to a profile with MFA support
-aws_env smce-veda
-
-# For profiles without MFA requirement
-aws_env other-profile
-
-# Or source the MFA script directly
-source ~/aws_mfa.sh
-

The aws_env function will: 1. Load credentials for the specified profile 2. Check if MFA is required for that profile 3. If MFA is needed, automatically call the MFA script 4. The MFA script will detect your user and prompt for MFA code 5. Generate and export temporary credentials

-
-
-

Example Session

-
$ aws_env smce-veda
-πŸ” MFA required for profile: smce-veda
-πŸ‘€ Authenticated as: john.doe
-πŸ“± MFA device found: arn:aws:iam::123456789012:mfa/john.doe
-πŸ”’ Enter your MFA code: 123456
-βœ… Temporary credentials activated! Expires: 2024-01-01T12:00:00Z
-βœ… Successfully switched to smce-veda environment!
-
-
-
-

Using the Temporary Credentials

-

Once authenticated, you can use AWS CLI commands normally:

-
# List S3 buckets
-aws s3 ls s3://nasa-disasters/
-
-# Get current identity
-aws sts get-caller-identity
-
-
-

Clearing Session

-

To clear your current MFA session:

-
unset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID
-
-
-
-
-

Troubleshooting

-
-

Common Issues and Solutions

-
-

Issue 1: β€œActive session detected”

-

Solution: Clear your current session:

-
unset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID
-
-
-

Issue 2: β€œUnable to identify user”

-

Solutions: - Verify your AWS credentials are configured correctly - Check that your credentials have permission to call sts:GetCallerIdentity - Ensure you’re using the correct AWS profile (if using multiple profiles)

-
-
-

Issue 3: β€œNo MFA device found”

-

Solutions: - Verify MFA is enabled on your IAM user - Check that your user has permission to call iam:ListMFADevices - Ensure the MFA device is properly attached to your user

-
-
-

Issue 4: β€œFailed to generate temporary credentials”

-

Solutions: - Verify the MFA code is correct and hasn’t expired - Check that your user has permission to call sts:GetSessionToken - Ensure your system clock is synchronized (MFA codes are time-based)

-
-
-

Issue 5: Script returns without setting credentials

-

Solution: Make sure to use source or the function:

-
# Correct - runs in current shell
-source ~/aws_mfa.sh
-
-# Wrong - runs in subshell
-~/aws_mfa.sh
-
-
-
-

Debugging Tips

-
-

Check Current Credentials

-
# View current identity
-aws sts get-caller-identity
-
-# Check environment variables
-env | grep AWS
-
-
-

Verify MFA Device

-
# Replace USERNAME with your IAM username
-aws iam list-mfa-devices --user-name USERNAME
-
-
-

Test Permissions

-
# Test basic permissions
-aws iam get-user
-aws sts get-session-token --serial-number YOUR_MFA_ARN --token-code 123456
-
-
-
-
-
-

Best Practices

-
-

Security Best Practices

-
    -
  1. Never Share MFA Tokens

    -
      -
    • MFA tokens are time-sensitive but should still be kept private
    • -
    • Don’t log or store MFA tokens in scripts
    • -
  2. -
  3. Regular Credential Rotation

    -
    # Create new access key
    -aws iam create-access-key --user-name YOUR_USERNAME
    -
    -# Delete old access key
    -aws iam delete-access-key --access-key-id OLD_ACCESS_KEY_ID --user-name YOUR_USERNAME
  4. -
  5. Secure Credential Storage

    -
    # Set restrictive permissions on AWS files
    -chmod 600 ~/.aws/credentials
    -chmod 600 ~/.aws/config
    -chmod 700 ~/.aws
  6. -
  7. Use Least Privilege

    -
      -
    • Only grant permissions necessary for your tasks
    • -
    • Consider using AWS IAM roles when possible
    • -
  8. -
-
-
-

Operational Best Practices

-
    -
  1. Multiple AWS Profiles If you use multiple AWS accounts, configure profiles in ~/.aws/credentials:

    -
    [smce-veda]
    -aws_access_key_id = KEY1
    -aws_secret_access_key = SECRET1
    -
    -[veda-smce]
    -aws_access_key_id = KEY2
    -aws_secret_access_key = SECRET2
    -
    -[aq]
    -aws_access_key_id = KEY3
    -aws_secret_access_key = SECRET3
    -

    FUN FACT: You can have different credentials opened within each terminal. This can alleviate having to re-authenticate for different accounts.

    -

    Switch profiles using the aws_env function:

    -
    # Switch to a profile with automatic MFA handling
    -aws_env smce-veda
    -
    -# Switch to another profile
    -aws_env aq
  2. -
  3. Automate Common Tasks Create helper functions in your shell configuration:

    -
    # Quick S3 listing
    -s3ls() {
    -    aws s3 ls "s3://$1"
    -}
  4. -
  5. Session Management Check if your session is still valid:

    -
    aws sts get-caller-identity &>/dev/null && echo "βœ… Session valid" || echo "❌ Session expired"
  6. -
-
-
-
-
-

Security Considerations

-
-

Credential Security

-
    -
  1. Never Commit Credentials Add to .gitignore:

    -
    # AWS credentials
    -.aws/credentials
    -.aws/config
    -.env
    -*.pem
  2. -
  3. Environment Variables

    -
      -
    • Temporary credentials are stored in environment variables
    • -
    • They’re only available in the current shell session
    • -
    • Closing the terminal clears the credentials
    • -
  4. -
  5. Session Duration

    -
      -
    • Default session duration is 12 hours (43200 seconds)
    • -
    • Sessions automatically expire and cannot be renewed
    • -
    • Must generate new credentials after expiration
    • -
  6. -
-
-
-

MFA Device Security

-
    -
  1. Virtual MFA Best Practices -
      -
    • Use reputable authenticator apps
    • -
    • Enable cloud backup for MFA seeds
    • -
    • Keep backup codes in secure location
    • -
  2. -
  3. Hardware MFA Best Practices -
      -
    • Store device in secure location
    • -
    • Consider having a backup MFA device
    • -
    • Test device regularly
    • -
  4. -
-
-
-

Network Security

-
    -
  1. Use VPN for Sensitive Operations -
      -
    • Consider using VPN when accessing AWS from public networks
    • -
    • Be aware of IP-based IAM policies
    • -
  2. -
  3. Audit Trail -
      -
    • Enable CloudTrail for API call logging
    • -
    • Regularly review access patterns
    • -
    • Monitor for unusual activity
    • -
  4. -
-
-
-
-
-

Additional Resources

- -
-

Last Updated: 2024 Version: 2.0

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/AWS/aws-s3-commands-guide.html b/_site/AWS/aws-s3-commands-guide.html deleted file mode 100644 index 58e3244..0000000 --- a/_site/AWS/aws-s3-commands-guide.html +++ /dev/null @@ -1,2216 +0,0 @@ - - - - - - - - - -aws-s3-commands-guide – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

AWS S3 Commands and Operations Guide

-
-

Table of Contents

- -
-
-

AWS CLI Installation and Configuration

-
-

Installation

-
# macOS using Homebrew
-brew install awscli
-
-# Using pip
-pip install awscli --upgrade --user
-
-# Verify installation
-aws --version
-
-
-

Configuration

-
# Configure AWS CLI with credentials
-aws configure
-
-# Configure specific profile
-aws configure --profile myprofile
-
-# List configuration
-aws configure list
-
-# Set region for current session
-export AWS_DEFAULT_REGION=us-east-1
-
-
-
-

Basic S3 Commands

-
-

List Buckets and Objects

-
# List all buckets
-aws s3 ls
-
-# List objects in a bucket
-aws s3 ls s3://my-bucket/
-
-# List objects with human-readable sizes
-aws s3 ls s3://my-bucket/ --human-readable
-
-# List objects with summary
-aws s3 ls s3://my-bucket/ --summarize
-
-# List objects recursively
-aws s3 ls s3://my-bucket/ --recursive
-
-# List objects with specific prefix
-aws s3 ls s3://my-bucket/prefix/ --recursive
-
-
-

Copy Operations

-
# Copy file to S3
-aws s3 cp file.txt s3://my-bucket/
-
-# Copy from S3 to local
-aws s3 cp s3://my-bucket/file.txt ./
-
-# Copy between S3 buckets
-aws s3 cp s3://source-bucket/file.txt s3://dest-bucket/
-
-# Copy with specific storage class
-aws s3 cp file.txt s3://my-bucket/ --storage-class GLACIER
-
-# Copy with server-side encryption
-aws s3 cp file.txt s3://my-bucket/ --sse AES256
-
-
-

Move Operations

-
# Move file to S3
-aws s3 mv file.txt s3://my-bucket/
-
-# Move from S3 to local
-aws s3 mv s3://my-bucket/file.txt ./
-
-# Move between S3 locations
-aws s3 mv s3://my-bucket/old-path/ s3://my-bucket/new-path/ --recursive
-
-
-

Delete Operations

-
# Delete single object
-aws s3 rm s3://my-bucket/file.txt
-
-# Delete all objects with prefix
-aws s3 rm s3://my-bucket/prefix/ --recursive
-
-# Delete bucket (must be empty)
-aws s3 rb s3://my-bucket/
-
-# Force delete bucket with contents
-aws s3 rb s3://my-bucket/ --force
-
-
-
-

S3 API Commands

-
-

Create and Configure Buckets

-
# Create bucket (us-east-1)
-aws s3api create-bucket --bucket my-bucket
-
-# Create bucket in specific region
-aws s3api create-bucket --bucket my-bucket \
-  --region us-west-2 \
-  --create-bucket-configuration LocationConstraint=us-west-2
-
-# Enable versioning
-aws s3api put-bucket-versioning --bucket my-bucket \
-  --versioning-configuration Status=Enabled
-
-# Enable server-side encryption by default
-aws s3api put-bucket-encryption --bucket my-bucket \
-  --server-side-encryption-configuration '{
-    "Rules": [{
-      "ApplyServerSideEncryptionByDefault": {
-        "SSEAlgorithm": "AES256"
-      }
-    }]
-  }'
-
-
-

Upload Objects with S3 API

-
# Put object
-aws s3api put-object --bucket my-bucket --key file.txt --body ./file.txt
-
-# Put object with metadata
-aws s3api put-object --bucket my-bucket --key file.txt \
-  --body ./file.txt \
-  --metadata '{"author":"John Doe","version":"1.0"}'
-
-# Put object with content type
-aws s3api put-object --bucket my-bucket --key image.jpg \
-  --body ./image.jpg \
-  --content-type image/jpeg
-
-# Put object with tags
-aws s3api put-object --bucket my-bucket --key file.txt \
-  --body ./file.txt \
-  --tagging 'environment=production&team=data'
-
-
-

Multipart Upload

-
# Initiate multipart upload
-aws s3api create-multipart-upload --bucket my-bucket --key large-file.zip
-
-# Upload part
-aws s3api upload-part --bucket my-bucket \
-  --key large-file.zip \
-  --part-number 1 \
-  --body part1.dat \
-  --upload-id "upload-id-here"
-
-# Complete multipart upload
-aws s3api complete-multipart-upload --bucket my-bucket \
-  --key large-file.zip \
-  --upload-id "upload-id-here" \
-  --multipart-upload file://parts.json
-
-# Abort multipart upload
-aws s3api abort-multipart-upload --bucket my-bucket \
-  --key large-file.zip \
-  --upload-id "upload-id-here"
-
-
-

Get Object Information

-
# Get object metadata
-aws s3api head-object --bucket my-bucket --key file.txt
-
-# Get object ACL
-aws s3api get-object-acl --bucket my-bucket --key file.txt
-
-# Get object tags
-aws s3api get-object-tagging --bucket my-bucket --key file.txt
-
-# List object versions
-aws s3api list-object-versions --bucket my-bucket --prefix folder/
-
-
-
-

Recursive Operations

-
-

Sync Operations

-
# Sync local directory to S3
-aws s3 sync ./local-folder s3://my-bucket/folder/
-
-# Sync S3 to local
-aws s3 sync s3://my-bucket/folder/ ./local-folder
-
-# Sync with delete (remove files not in source)
-aws s3 sync ./local-folder s3://my-bucket/folder/ --delete
-
-# Sync only specific file types
-aws s3 sync ./local-folder s3://my-bucket/folder/ \
-  --exclude "*" --include "*.jpg"
-
-# Sync with size-only comparison (faster)
-aws s3 sync ./local-folder s3://my-bucket/folder/ --size-only
-
-# Dry run to preview changes
-aws s3 sync ./local-folder s3://my-bucket/folder/ --dryrun
-
-
-

Recursive Copy

-
# Copy entire directory
-aws s3 cp ./local-folder s3://my-bucket/folder/ --recursive
-
-# Copy with exclude patterns
-aws s3 cp s3://my-bucket/ s3://backup-bucket/ \
-  --recursive \
-  --exclude "*.tmp" \
-  --exclude "logs/*"
-
-# Copy with include patterns
-aws s3 cp s3://my-bucket/ s3://backup-bucket/ \
-  --recursive \
-  --exclude "*" \
-  --include "*.pdf" \
-  --include "*.docx"
-
-# Copy files modified after specific date
-aws s3 cp s3://my-bucket/ ./local-folder/ \
-  --recursive \
-  --exclude "*" \
-  --include "*" \
-  --metadata-directive COPY
-
-
-
-

Data Upload and Sync Operations

-
-

Batch Upload

-
# Upload multiple files with parallel transfers
-aws s3 cp ./data-folder s3://my-bucket/data/ \
-  --recursive \
-  --cli-write-timeout 0 \
-  --cli-read-timeout 0
-
-# Upload with progress bar
-aws s3 cp large-file.zip s3://my-bucket/ \
-  --no-guess-mime-type \
-  --cli-progress-bar on
-
-# Upload with bandwidth limit (KB/s)
-aws configure set s3.max_bandwidth 5000KB/s
-aws s3 cp ./large-folder s3://my-bucket/ --recursive
-
-
-

Advanced Sync Options

-
# Sync with exact timestamps
-aws s3 sync ./folder s3://my-bucket/ --exact-timestamps
-
-# Sync with follow symlinks
-aws s3 sync ./folder s3://my-bucket/ --follow-symlinks
-
-# Sync with no follow symlinks
-aws s3 sync ./folder s3://my-bucket/ --no-follow-symlinks
-
-# Sync with ACL settings
-aws s3 sync ./folder s3://my-bucket/ --acl public-read
-
-# Sync with storage class
-aws s3 sync ./folder s3://my-bucket/ \
-  --storage-class INTELLIGENT_TIERING
-
-
-
-

Bucket Management

-
-

Bucket Policies

-
# Get bucket policy
-aws s3api get-bucket-policy --bucket my-bucket
-
-# Put bucket policy
-aws s3api put-bucket-policy --bucket my-bucket \
-  --policy file://bucket-policy.json
-
-# Delete bucket policy
-aws selman get-bucket-policy --bucket my-bucket
-
-# Example bucket policy (bucket-policy.json)
-cat > bucket-policy.json << 'EOF'
-{
-  "Version": "2012-10-17",
-  "Statement": [
-    {
-      "Sid": "PublicReadGetObject",
-      "Effect": "Allow",
-      "Principal": "*",
-      "Action": "s3:GetObject",
-      "Resource": "arn:aws:s3:::my-bucket/*"
-    }
-  ]
-}
-EOF
-
-
-

Lifecycle Rules

-
# Put lifecycle configuration
-aws s3api put-bucket-lifecycle-configuration \
-  --bucket my-bucket \
-  --lifecycle-configuration file://lifecycle.json
-
-# Get lifecycle configuration
-aws s3api get-bucket-lifecycle-configuration --bucket my-bucket
-
-# Example lifecycle configuration
-cat > lifecycle.json << 'EOF'
-{
-  "Rules": [
-    {
-      "ID": "Archive old files",
-      "Status": "Enabled",
-      "Transitions": [
-        {
-          "Days": 30,
-          "StorageClass": "INTELLIGENT_TIERING"
-        },
-        {
-          "Days": 90,
-          "StorageClass": "GLACIER"
-        }
-      ]
-    }
-  ]
-}
-EOF
-
-
-

CORS Configuration

-
# Put CORS configuration
-aws s3api put-bucket-cors --bucket my-bucket \
-  --cors-configuration file://cors.json
-
-# Get CORS configuration
-aws s3api get-bucket-cors --bucket my-bucket
-
-# Example CORS configuration
-cat > cors.json << 'EOF'
-{
-  "CORSRules": [
-    {
-      "AllowedOrigins": ["*"],
-      "AllowedMethods": ["GET", "PUT", "POST"],
-      "AllowedHeaders": ["*"],
-      "MaxAgeSeconds": 3000
-    }
-  ]
-}
-EOF
-
-
-
-

Object Management

-
-

Object Operations

-
# Copy object within same bucket
-aws s3api copy-object \
-  --bucket my-bucket \
-  --copy-source my-bucket/old-key \
-  --key new-key
-
-# Restore object from Glacier
-aws s3api restore-object \
-  --bucket my-bucket \
-  --key archived-file.txt \
-  --restore-request Days=7
-
-# Generate presigned URL (expires in 1 hour)
-aws s3 presign s3://my-bucket/file.txt --expires-in 3600
-
-# Batch delete objects
-aws s3api delete-objects --bucket my-bucket \
-  --delete file://delete.json
-
-# Example delete.json
-cat > delete.json << 'EOF'
-{
-  "Objects": [
-    {"Key": "file1.txt"},
-    {"Key": "file2.txt"},
-    {"Key": "folder/file3.txt"}
-  ]
-}
-EOF
-
-
-

Object Tagging

-
# Put object tags
-aws s3api put-object-tagging \
-  --bucket my-bucket \
-  --key file.txt \
-  --tagging 'TagSet=[{Key=environment,Value=prod},{Key=owner,Value=teamA}]'
-
-# Get object tags
-aws s3api get-object-tagging --bucket my-bucket --key file.txt
-
-# Delete object tags
-aws s3api delete-object-tagging --bucket my-bucket --key file.txt
-
-
-
-

Access Control and Permissions

-
-

Bucket and Object ACLs

-
# Put bucket ACL
-aws s3api put-bucket-acl --bucket my-bucket --acl private
-
-# Put object ACL
-aws s3api put-object-acl --bucket my-bucket --key file.txt --acl public-read
-
-# Grant specific permissions
-aws s3api put-object-acl --bucket my-bucket --key file.txt \
-  --grant-read emailaddress=user@example.com \
-  --grant-write emailaddress=admin@example.com
-
-# Put bucket public access block
-aws s3api put-public-access-block --bucket my-bucket \
-  --public-access-block-configuration \
-  BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=false,RestrictPublicBuckets=false
-
-
-

IAM Policies for S3

-
# Example IAM policy for S3 access
-cat > s3-policy.json << 'EOF'
-{
-  "Version": "2012-10-17",
-  "Statement": [
-    {
-      "Effect": "Allow",
-      "Action": [
-        "s3:GetObject",
-        "s3:PutObject",
-        "s3:DeleteObject"
-      ],
-      "Resource": "arn:aws:s3:::my-bucket/*"
-    },
-    {
-      "Effect": "Allow",
-      "Action": "s3:ListBucket",
-      "Resource": "arn:aws:s3:::my-bucket"
-    }
-  ]
-}
-EOF
-
-# Attach policy to user
-aws iam put-user-policy --user-name myuser \
-  --policy-name S3Access \
-  --policy-document file://s3-policy.json
-
-
-
-

Performance Optimization

-
-

Transfer Acceleration

-
# Enable transfer acceleration
-aws s3api put-bucket-accelerate-configuration \
-  --bucket my-bucket \
-  --accelerate-configuration Status=Enabled
-
-# Use accelerated endpoint
-aws s3 cp file.txt s3://my-bucket/ \
-  --endpoint-url https://my-bucket.s3-accelerate.amazonaws.com
-
-
-

Parallel Transfers

-
# Configure concurrent requests
-aws configure set s3.max_concurrent_requests 20
-aws configure set s3.max_queue_size 10000
-
-# Use multipart threshold for large files
-aws configure set s3.multipart_threshold 64MB
-aws configure set s3.multipart_chunksize 16MB
-
-# Set max bandwidth
-aws configure set s3.max_bandwidth 100MB/s
-
-
-

Request Payer

-
# Enable requester pays
-aws s3api put-bucket-request-payment \
-  --bucket my-bucket \
-  --request-payment-configuration Payer=Requester
-
-# Access requester-pays bucket
-aws s3 cp s3://requester-pays-bucket/file.txt ./ --request-payer requester
-
-
-
-

Cost Management

-
-

Storage Class Analysis

-
# Put analytics configuration
-aws s3api put-bucket-analytics-configuration \
-  --bucket my-bucket \
-  --id analysis-1 \
-  --analytics-configuration file://analytics.json
-
-# List analytics configurations
-aws s3api list-bucket-analytics-configurations --bucket my-bucket
-
-
-

Intelligent Tiering

-
# Put intelligent tiering configuration
-aws s3api put-bucket-intelligent-tiering-configuration \
-  --bucket my-bucket \
-  --id config-1 \
-  --intelligent-tiering-configuration file://tiering.json
-
-
-

Metrics and Monitoring

-
# Get bucket metrics configuration
-aws s3api get-bucket-metrics-configuration \
-  --bucket my-bucket \
-  --id metrics-1
-
-# List bucket metrics
-aws s3api list-bucket-metrics-configurations --bucket my-bucket
-
-
-
-

Troubleshooting

-
-

Common Issues and Solutions

-
-

Check Bucket Existence and Access

-
# Test if bucket exists
-aws s3api head-bucket --bucket my-bucket
-
-# Check bucket location
-aws s3api get-bucket-location --bucket my-bucket
-
-# List bucket with debug output
-aws s3 ls s3://my-bucket/ --debug
-
-
-

Verify Permissions

-
# Check IAM permissions
-aws iam simulate-principal-policy \
-  --policy-source-arn arn:aws:iam::123456789012:user/username \
-  --action-names s3:GetObject s3:PutObject \
-  --resource-arns arn:aws:s3:::my-bucket/*
-
-
-

Network and Connectivity

-
# Test S3 endpoint connectivity
-aws s3 ls --debug 2>&1 | grep "endpoint"
-
-# Use specific endpoint
-aws s3 ls --endpoint-url https://s3.us-west-2.amazonaws.com
-
-# Check DNS resolution
-nslookup s3.amazonaws.com
-
-
-
-
-

Advanced Operations

-
-

S3 Select

-
# Query CSV file with S3 Select
-aws s3api select-object-content \
-  --bucket my-bucket \
-  --key data.csv \
-  --expression "SELECT * FROM S3Object WHERE age > 25" \
-  --expression-type SQL \
-  --input-serialization '{"CSV": {"FileHeaderInfo": "USE"}}' \
-  --output-serialization '{"CSV": {}}' \
-  output.csv
-
-
-

S3 Inventory

-
# Put inventory configuration
-aws s3api put-bucket-inventory-configuration \
-  --bucket my-bucket \
-  --id inventory-1 \
-  --inventory-configuration file://inventory.json
-
-
-

S3 Batch Operations

-
# Create batch job
-aws s3control create-job \
-  --account-id 123456789012 \
-  --manifest file://manifest.json \
-  --operation file://operation.json \
-  --priority 10 \
-  --role-arn arn:aws:iam::123456789012:role/batch-operations-role
-
-
-
-

Best Practices

-
-

Security Best Practices

-
# Enable default encryption
-aws s3api put-bucket-encryption --bucket my-bucket \
-  --server-side-encryption-configuration '{
-    "Rules": [{
-      "ApplyServerSideEncryptionByDefault": {
-        "SSEAlgorithm": "aws:kms",
-        "KMSMasterKeyID": "arn:aws:kms:us-east-1:123456789012:key/12345678"
-      }
-    }]
-  }'
-
-# Enable bucket logging
-aws s3api put-bucket-logging --bucket my-bucket \
-  --bucket-logging-status file://logging.json
-
-# Enable MFA delete
-aws s3api put-bucket-versioning --bucket my-bucket \
-  --versioning-configuration Status=Enabled,MFADelete=Enabled \
-  --mfa "arn:aws:iam::123456789012:mfa/root-account-mfa-device 123456"
-
-
-

Data Integrity

-
# Upload with checksum
-aws s3api put-object --bucket my-bucket --key file.txt \
-  --body ./file.txt \
-  --content-md5 $(openssl dgst -md5 -binary file.txt | base64)
-
-# Verify object integrity
-aws s3api head-object --bucket my-bucket --key file.txt \
-  --checksum-mode ENABLED
-
-
-
-

Official AWS Resources

-
-

Documentation

- -
-
-

Tutorials and Guides

- -
-
-

Developer Resources

- -
-
-

Tools and Utilities

- -
-
-

Monitoring and Troubleshooting

- -
-
-

Cost Optimization

- -
-
-

Compliance and Governance

- -
-
-
-

Quick Reference Card

-
-

Most Common Commands

-
# Upload file
-aws s3 cp file.txt s3://bucket/
-
-# Download file
-aws s3 cp s3://bucket/file.txt ./
-
-# Sync directory
-aws s3 sync ./folder s3://bucket/folder/
-
-# List contents
-aws s3 ls s3://bucket/ --recursive
-
-# Delete file
-aws s3 rm s3://bucket/file.txt
-
-# Create bucket
-aws s3 mb s3://new-bucket/
-
-# Remove bucket
-aws s3 rb s3://bucket/ --force
-
-# Get object info
-aws s3api head-object --bucket bucket --key file.txt
-
-# Generate presigned URL
-aws s3 presign s3://bucket/file.txt
-
-# Check bucket access
-aws s3api head-bucket --bucket bucket
-
-
-
-

Environment Variables

-
# AWS Credentials
-export AWS_ACCESS_KEY_ID=your-access-key
-export AWS_SECRET_ACCESS_KEY=your-secret-key
-export AWS_SESSION_TOKEN=your-session-token
-
-# AWS Configuration
-export AWS_DEFAULT_REGION=us-east-1
-export AWS_DEFAULT_OUTPUT=json
-export AWS_PROFILE=myprofile
-
-# S3 Specific
-export AWS_S3_ENDPOINT=https://s3.amazonaws.com
-export S3_USE_ACCELERATE_ENDPOINT=true
-
-
-

Conclusion

-

This guide covers the essential AWS S3 commands and operations for data management. Always refer to the official AWS documentation for the most up-to-date information and additional features. Remember to follow security best practices and implement proper access controls when working with S3 buckets and objects.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/GitHub/commands.html b/_site/GitHub/commands.html deleted file mode 100644 index a1f4b4f..0000000 --- a/_site/GitHub/commands.html +++ /dev/null @@ -1,2193 +0,0 @@ - - - - - - - - - -commands – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Basic Uses

-
-

Table of Contents

-
    -
  1. Setting Up Your First Repository
  2. -
  3. Essential Git Commands
  4. -
  5. GitHub CLI Essentials
  6. -
  7. Common Workflows
  8. -
  9. Best Practices
  10. -
  11. Troubleshooting
  12. -
-
-
-
-

Setting Up Your First Repository

-
-

Method 1: Clone an Existing Repository

-
# Using HTTPS
-git clone https://github.com/username/repository.git
-
-# Using SSH (recommended if configured)
-git clone git@github.com:username/repository.git
-
-# Using GitHub CLI
-gh repo clone username/repository
-
-# Clone into specific directory
-git clone git@github.com:username/repository.git my-project
-
-
-

Method 2: Create a New Repository

-
-

Via GitHub Website:

-
    -
  1. Click the β€œ+” icon β†’ β€œNew repository”
  2. -
  3. Enter repository name
  4. -
  5. Add description (optional)
  6. -
  7. Choose public or private
  8. -
  9. Initialize with README (recommended)
  10. -
  11. Add .gitignore (select template)
  12. -
  13. Choose a license
  14. -
  15. Click β€œCreate repository”
  16. -
-
-
-

Via GitHub CLI:

-
# Create a new repository on GitHub
-gh repo create my-project --public --clone
-
-# With more options
-gh repo create my-project \
-  --public \
-  --description "My awesome project" \
-  --clone \
-  --add-readme \
-  --license mit \
-  --gitignore Python
-
-
-
-

Method 3: Push Existing Local Project

-
# Navigate to your project
-cd my-existing-project
-
-# Initialize git repository
-git init
-
-# Add all files
-git add .
-
-# Create initial commit
-git commit -m "Initial commit"
-
-# Create repository on GitHub
-gh repo create my-project --source=. --public --push
-
-# Or manually add remote and push
-git remote add origin git@github.com:username/my-project.git
-git branch -M main
-git push -u origin main
-
-
-
-
-

Essential Git Commands

-
-

Basic Commands

-
# Check Git version
-git --version
-
-# Get help
-git help <command>
-git <command> --help
-
-# Initialize repository
-git init
-
-# Clone repository
-git clone <url>
-
-# Check status
-git status
-
-# View commit history
-git log
-git log --oneline
-git log --graph --oneline --all
-
-
-

Working with Changes

-
# Add files to staging area
-git add <file>
-git add .                    # Add all files
-git add *.js                 # Add all JavaScript files
-git add -p                   # Interactive staging
-
-# Remove files from staging
-git reset HEAD <file>
-git restore --staged <file>  # Git 2.23+
-
-# Commit changes
-git commit -m "Commit message"
-git commit -am "Message"     # Add and commit (tracked files only)
-git commit --amend           # Amend last commit
-
-# View differences
-git diff                     # Unstaged changes
-git diff --staged           # Staged changes
-git diff HEAD~1             # Changes since last commit
-
-
-

Branching and Merging

-
# List branches
-git branch                   # Local branches
-git branch -r               # Remote branches
-git branch -a               # All branches
-
-# Create branch
-git branch <branch-name>
-git checkout -b <branch-name>  # Create and switch
-git switch -c <branch-name>    # Git 2.23+ (create and switch)
-
-# Switch branches
-git checkout <branch-name>
-git switch <branch-name>       # Git 2.23+
-
-# Merge branch
-git merge <branch-name>
-
-# Delete branch
-git branch -d <branch-name>    # Safe delete
-git branch -D <branch-name>    # Force delete
-
-# Rename branch
-git branch -m <old-name> <new-name>
-
-
-

Working with Remotes

-
# View remotes
-git remote -v
-
-# Add remote
-git remote add <name> <url>
-git remote add origin git@github.com:username/repo.git
-
-# Remove remote
-git remote remove <name>
-
-# Rename remote
-git remote rename <old> <new>
-
-# Fetch changes
-git fetch
-git fetch origin
-
-# Pull changes
-git pull
-git pull origin main
-
-# Push changes
-git push
-git push origin main
-git push -u origin main      # Set upstream
-git push --force             # Force push (use with caution!)
-
-
-

Stashing Changes

-
# Save changes temporarily
-git stash
-git stash save "Work in progress"
-
-# List stashes
-git stash list
-
-# Apply stash
-git stash apply              # Apply most recent
-git stash apply stash@{0}   # Apply specific stash
-
-# Apply and remove stash
-git stash pop
-
-# Remove stash
-git stash drop stash@{0}
-
-# Clear all stashes
-git stash clear
-
-
-

Undoing Changes

-
# Discard changes in working directory
-git checkout -- <file>
-git restore <file>           # Git 2.23+
-
-# Unstage files
-git reset HEAD <file>
-git restore --staged <file>  # Git 2.23+
-
-# Reset to previous commit (keeping changes)
-git reset --soft HEAD~1
-
-# Reset to previous commit (discard changes)
-git reset --hard HEAD~1
-
-# Revert a commit (creates new commit)
-git revert <commit-hash>
-
-
-

Tagging

-
# List tags
-git tag
-
-# Create tag
-git tag v1.0.0
-git tag -a v1.0.0 -m "Version 1.0.0"  # Annotated tag
-
-# Push tags
-git push origin v1.0.0
-git push origin --tags       # Push all tags
-
-# Delete tag
-git tag -d v1.0.0           # Local
-git push origin :v1.0.0     # Remote
-
-
-
-
-

GitHub CLI Essentials

-
-

Repository Management

-
# Set default repository
-gh repo set-default
-# Select from list or specify:
-gh repo set-default owner/repo
-
-# View repository
-gh repo view
-gh repo view owner/repo
-
-# Fork repository
-gh repo fork owner/repo
-
-# Create repository
-gh repo create my-repo --public --clone
-
-# Delete repository (use with caution!)
-gh repo delete owner/repo
-
-# Clone repository
-gh repo clone owner/repo
-
-# List repositories
-gh repo list
-gh repo list owner
-
-
-

Pull Request Commands

-
# Create pull request
-gh pr create
-gh pr create --title "Feature X" --body "Description"
-gh pr create --fill  # Use commit messages for title/body
-gh pr create --draft # Create as draft
-gh pr create --assignee @me --label bug,enhancement
-
-# List pull requests
-gh pr list
-gh pr list --state all
-gh pr list --author @me
-
-# View pull request
-gh pr view
-gh pr view 123
-
-# Checkout pull request
-gh pr checkout 123
-
-# Merge pull request
-gh pr merge 123
-gh pr merge 123 --merge    # Create merge commit
-gh pr merge 123 --rebase   # Rebase and merge
-gh pr merge 123 --squash   # Squash and merge
-
-# Close pull request
-gh pr close 123
-
-# Review pull request
-gh pr review 123 --approve
-gh pr review 123 --request-changes
-gh pr review 123 --comment
-
-# Check pull request status
-gh pr status
-gh pr checks 123
-
-
-

Issue Management

-
# Create issue
-gh issue create
-gh issue create --title "Bug report" --body "Description"
-
-# List issues
-gh issue list
-gh issue list --assignee @me
-gh issue list --label bug
-
-# View issue
-gh issue view 123
-
-# Close issue
-gh issue close 123
-
-# Reopen issue
-gh issue reopen 123
-
-# Comment on issue
-gh issue comment 123 --body "This is fixed"
-
-
-

Workflow Commands

-
# List workflows
-gh workflow list
-
-# View workflow runs
-gh run list
-gh run view
-
-# Watch workflow run
-gh run watch
-
-# Download artifacts
-gh run download
-
-# Trigger workflow
-gh workflow run <workflow-name>
-
-
-

Gist Management

-
# Create gist
-gh gist create file.txt
-gh gist create --public file.txt
-
-# List gists
-gh gist list
-
-# View gist
-gh gist view <id>
-
-# Edit gist
-gh gist edit <id>
-
-
-
-
-

Common Workflows

-
-

Daily Development Workflow

-
# 1. Start your day - sync with remote
-git pull origin main
-
-# 2. Create feature branch
-git checkout -b feature/new-feature
-
-# 3. Make changes and commit
-git add .
-git commit -m "Add new feature"
-
-# 4. Push to remote
-git push -u origin feature/new-feature
-
-# 5. Create pull request
-gh pr create --fill
-
-# 6. After PR is merged, clean up
-git checkout main
-git pull origin main
-git branch -d feature/new-feature
-
-
-

Fixing Merge Conflicts

-
# 1. Pull latest changes
-git pull origin main
-
-# 2. If conflicts occur, Git will notify you
-# 3. Open conflicted files and resolve manually
-# Look for conflict markers:
-# <<<<<<< HEAD
-# Your changes
-# =======
-# Their changes
-# >>>>>>> branch-name
-
-# 4. After resolving, add the files
-git add <resolved-files>
-
-# 5. Complete the merge
-git commit -m "Resolve merge conflicts"
-
-# 6. Push changes
-git push origin <branch>
-
-
-

Updating Fork

-
# 1. Add upstream remote (one time)
-git remote add upstream https://github.com/original-owner/repo.git
-
-# 2. Fetch upstream changes
-git fetch upstream
-
-# 3. Checkout main branch
-git checkout main
-
-# 4. Merge upstream changes
-git merge upstream/main
-
-# 5. Push to your fork
-git push origin main
-
-# Using GitHub CLI
-gh repo sync owner/repo -b main
-
-
-

Squashing Commits

-
# Interactive rebase for last 3 commits
-git rebase -i HEAD~3
-
-# In the editor:
-# Change 'pick' to 'squash' for commits to combine
-# Save and close
-
-# Force push (if already pushed)
-git push --force-with-lease origin <branch>
-
-
-

Cherry-picking Commits

-
# Apply specific commit to current branch
-git cherry-pick <commit-hash>
-
-# Cherry-pick multiple commits
-git cherry-pick <hash1> <hash2> <hash3>
-
-# Cherry-pick range
-git cherry-pick <oldest-hash>^..<newest-hash>
-
-
-
-
-

Best Practices

-
-

Commit Messages

-

The Seven Rules of Great Commit Messages:

-
    -
  1. Separate subject from body with blank line
  2. -
  3. Limit subject line to 50 characters
  4. -
  5. Capitalize the subject line
  6. -
  7. Don’t end subject line with period
  8. -
  9. Use imperative mood (β€œAdd feature” not β€œAdded feature”)
  10. -
  11. Wrap body at 72 characters
  12. -
  13. Explain what and why, not how
  14. -
-

Example:

-
Add user authentication feature
-
-Implement OAuth 2.0 authentication using GitHub as provider.
-This allows users to sign in with their GitHub credentials
-instead of creating separate accounts.
-
-Resolves: #123
-See also: #456, #789
-
-
-

Branch Naming Conventions

-
feature/add-login-page
-bugfix/fix-navigation-menu
-hotfix/security-patch
-release/v2.0.0
-docs/update-readme
-test/add-unit-tests
-refactor/optimize-database
-
-
-

.gitignore Best Practices

-

Create a .gitignore file in your repository root:

-
# macOS
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# IDE
-.vscode/
-.idea/
-*.swp
-*.swo
-
-# Dependencies
-node_modules/
-vendor/
-.env
-
-# Build outputs
-dist/
-build/
-*.log
-
-# Sensitive data
-*.pem
-*.key
-.env.local
-config/secrets.yml
-
-
-

Security Best Practices

-
    -
  1. Never commit sensitive data:

    -
      -
    • Passwords, API keys, tokens
    • -
    • Private keys or certificates
    • -
    • Database credentials
    • -
    • .env files with secrets
    • -
  2. -
  3. If you accidentally commit secrets:

    -
    # Remove from history (requires force push)
    -git filter-branch --force --index-filter \
    -  "git rm --cached --ignore-unmatch path/to/file" \
    -  --prune-empty --tag-name-filter cat -- --all
    -
    -# Or use BFG Repo-Cleaner (easier)
    -brew install bfg
    -bfg --delete-files file-with-secrets.txt
  4. -
  5. Use GitHub’s security features:

    -
      -
    • Enable Dependabot alerts
    • -
    • Enable secret scanning
    • -
    • Use protected branches
    • -
    • Require PR reviews
    • -
  6. -
-
-
-

Collaboration Best Practices

-
    -
  1. Always work in branches - Never commit directly to main
  2. -
  3. Keep PRs small - Easier to review and less likely to have conflicts
  4. -
  5. Write descriptive PR descriptions - Include what, why, and how
  6. -
  7. Review others’ code - Learn and help maintain quality
  8. -
  9. Update documentation - Keep README and docs current
  10. -
  11. Test before pushing - Run tests locally first
  12. -
  13. Communicate - Use issues and PR comments effectively
  14. -
-
-
-
-
-

Troubleshooting

-
-

Common Issues and Solutions

-
-

1. Permission Denied (SSH)

-
# Check SSH key is added
-ssh-add -l
-
-# Add SSH key
-ssh-add ~/.ssh/id_ed25519
-
-# Test connection
-ssh -T git@github.com
-
-
-

2. Failed to Push (Non-fast-forward)

-
# Pull first, then push
-git pull origin main --rebase
-git push origin main
-
-# Or force push (careful!)
-git push --force-with-lease
-
-
-

3. Accidentally Committed to Wrong Branch

-
# Create new branch with current commits
-git branch new-branch
-
-# Reset original branch
-git reset --hard HEAD~3  # Go back 3 commits
-
-# Switch to new branch
-git checkout new-branch
-
-
-

4. Need to Undo Last Commit

-
# Keep changes, undo commit
-git reset --soft HEAD~1
-
-# Discard changes completely
-git reset --hard HEAD~1
-
-
-

5. Large Files Blocking Push

-
# Install Git LFS
-brew install git-lfs
-git lfs install
-
-# Track large files
-git lfs track "*.psd"
-git add .gitattributes
-git add large-file.psd
-git commit -m "Add large file with LFS"
-
-
-

6. Merge Conflicts in Pull Request

-
# Update your branch
-git checkout main
-git pull origin main
-git checkout your-branch
-git rebase main
-
-# Resolve conflicts, then
-git add .
-git rebase --continue
-git push --force-with-lease
-
-
-
-
-
-

Quick Reference

-
-

Git Aliases (Add to ~/.gitconfig)

-
[alias]
-    st = status
-    co = checkout
-    ci = commit
-    br = branch
-    df = diff
-    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
-    last = log -1 HEAD
-    unstage = reset HEAD --
-    amend = commit --amend
-    branches = branch -a
-    remotes = remote -v
-    contributors = shortlog --summary --numbered
-
-
-

Essential Keyboard Shortcuts (VS Code Git Integration)

-
    -
  • Cmd + Shift + P β†’ Git commands
  • -
  • Ctrl + Shift + G β†’ Source control panel
  • -
  • Cmd + Enter β†’ Commit staged changes
  • -
  • Option + Cmd + Enter β†’ Commit all changes
  • -
-
-
-

Terminal Aliases (Add to ~/.zshrc)

-
# Git shortcuts
-alias g='git'
-alias gs='git status'
-alias ga='git add'
-alias gc='git commit -m'
-alias gp='git push'
-alias gpl='git pull'
-alias gco='git checkout'
-alias gb='git branch'
-alias glog='git log --oneline --graph --all'
-
-# GitHub CLI shortcuts
-alias ghr='gh repo'
-alias ghpr='gh pr'
-alias ghi='gh issue'
- - -
-
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/GitHub/resources.html b/_site/GitHub/resources.html deleted file mode 100644 index 829b817..0000000 --- a/_site/GitHub/resources.html +++ /dev/null @@ -1,1605 +0,0 @@ - - - - - - - - - -resources – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - - -
-

Appendix: Quick Setup Script

-

Save this as setup-git-github.sh and run to quickly set up your environment:

-
#!/bin/bash
-
-echo "πŸš€ Git and GitHub Setup Script for macOS"
-echo "======================================="
-
-# Install Homebrew if not present
-if ! command -v brew &> /dev/null; then
-    echo "πŸ“¦ Installing Homebrew..."
-    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-fi
-
-# Install Git
-echo "πŸ“¦ Installing Git..."
-brew install git
-
-# Install GitHub CLI
-echo "πŸ“¦ Installing GitHub CLI..."
-brew install gh
-
-# Git configuration
-echo "βš™οΈ Configuring Git..."
-read -p "Enter your name: " name
-read -p "Enter your email: " email
-
-git config --global user.name "$name"
-git config --global user.email "$email"
-git config --global init.defaultBranch main
-git config --global color.ui auto
-
-# Generate SSH key
-echo "πŸ”‘ Generating SSH key..."
-ssh-keygen -t ed25519 -C "$email" -f ~/.ssh/id_ed25519 -N ""
-
-# Start SSH agent and add key
-eval "$(ssh-agent -s)"
-ssh-add ~/.ssh/id_ed25519
-
-# Copy SSH key to clipboard
-pbcopy < ~/.ssh/id_ed25519.pub
-echo "πŸ“‹ SSH public key copied to clipboard!"
-
-# GitHub CLI authentication
-echo "πŸ” Authenticating with GitHub..."
-gh auth login
-
-echo "βœ… Setup complete!"
-echo ""
-echo "Next steps:"
-echo "1. Go to GitHub Settings β†’ SSH Keys"
-echo "2. Add a new SSH key (already in clipboard)"
-echo "3. Test with: ssh -T git@github.com"
-

Make executable and run:

-
chmod +x setup-git-github.sh
-./setup-git-github.sh
-
-

Last Updated: 2024 Version: 1.0

-

This guide is a living document. Contribute improvements at: [your-repo-url]

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/GitHub/setup.html b/_site/GitHub/setup.html deleted file mode 100644 index 8b769cc..0000000 --- a/_site/GitHub/setup.html +++ /dev/null @@ -1,1669 +0,0 @@ - - - - - - - - - -setup – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

GitHub Setup and Installation

-
-

Table of Contents

-
    -
  1. Prerequisites & System Setup
  2. -
  3. Git Installation
  4. -
  5. GitHub Account Setup
  6. -
  7. GitHub CLI Installation & Authentication
  8. -
-
-
-
-

Prerequisites & System Setup

-
-

System Requirements

-
    -
  • macOS 10.15 (Catalina) or later
  • -
  • Administrator access to install software
  • -
  • Internet connection
  • -
  • Terminal application (built into macOS)
  • -
-
- -
-
-

Git Installation

- -
-

Method 2: Install via Xcode Command Line Tools

-
# This will prompt to install Xcode Command Line Tools
-git --version
-
-# Follow the prompts to complete installation
-
-
-

Method 3: Download from Git Website

-
    -
  1. Visit https://git-scm.com/download/mac
  2. -
  3. Download the installer
  4. -
  5. Run the installer package
  6. -
  7. Verify: git --version
  8. -
-
-
-

Initial Git Configuration

-
# Set your name (visible in commits)
-git config --global user.name "Your Name"
-
-# Set your email (should match GitHub account)
-git config --global user.email "your.email@example.com"
-
-# Set default branch name to 'main'
-git config --global init.defaultBranch main
-
-# Set default editor (optional)
-git config --global core.editor "code --wait"  # For VS Code
-# git config --global core.editor "vim"        # For vim
-# git config --global core.editor "nano"       # For nano
-
-# Enable color output
-git config --global color.ui auto
-
-# View all settings
-git config --list
-
-
-
-
-

GitHub Account Setup

-
-

Step 1: Create a GitHub Account

-
    -
  1. Visit https://github.com
  2. -
  3. Click β€œSign up” in the top right
  4. -
  5. Enter your details: -
      -
    • Username: Choose wisely - this is permanent and public
    • -
    • Email: Use a professional email address
    • -
    • Password: Use a strong, unique password
    • -
  6. -
  7. Verify your email address
  8. -
  9. Complete the profile setup
  10. -
-
-
-

Step 2: Configure Account Security

-
    -
  1. Enable Two-Factor Authentication (2FA): -
      -
    • Go to Settings β†’ Security
    • -
    • Click β€œEnable two-factor authentication”
    • -
    • Use an authenticator app (Google Authenticator, Authy)
    • -
    • Save backup codes securely
    • -
  2. -
  3. Add SSH Key (recommended for secure authentication):
  4. -
-
# Generate SSH key
-ssh-keygen -t ed25519 -C "your.email@example.com"
-
-# Press Enter for default location
-# Set a passphrase (recommended)
-
-# Start SSH agent
-eval "$(ssh-agent -s)"
-
-# Add SSH key to agent
-ssh-add ~/.ssh/id_ed25519
-
-# Copy public key to clipboard
-pbcopy < ~/.ssh/id_ed25519.pub
-
    -
  1. Add SSH Key to GitHub: -
      -
    • Go to Settings β†’ SSH and GPG keys
    • -
    • Click β€œNew SSH key”
    • -
    • Paste your key and give it a descriptive title
    • -
    • Click β€œAdd SSH key”
    • -
  2. -
  3. Test SSH connection:
  4. -
-
ssh -T git@github.com
-# You should see: "Hi username! You've successfully authenticated..."
-
-
-

Step 3: Set Up Personal Access Token (Alternative to SSH)

-
    -
  1. Go to Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic)
  2. -
  3. Click β€œGenerate new token”
  4. -
  5. Set expiration and select scopes (at minimum: repo, workflow)
  6. -
  7. Copy the token immediately (you won’t see it again)
  8. -
  9. Use this token as your password when prompted by Git
  10. -
-
-
-
-
-

GitHub CLI Installation & Authentication

-
-

Installing GitHub CLI (gh)

-
# Install via Homebrew
-brew install gh
-
-# Verify installation
-gh --version
-
-
-

Authenticating with GitHub CLI

-
# Start authentication process
-gh auth login
-
-# Follow the prompts:
-# 1. Choose GitHub.com
-# 2. Choose HTTPS or SSH (SSH recommended if you've set it up)
-# 3. Authenticate via web browser or paste authentication token
-# 4. Choose default git protocol (ssh recommended)
-
-# Verify authentication
-gh auth status
-
-
-

Configure GitHub CLI

-
# Set default editor
-gh config set editor "code --wait"  # For VS Code
-
-# Set default browser
-gh config set browser safari
-
-# View current configuration
-gh config list
- - -
-
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/GitHub/veda-preview.html b/_site/GitHub/veda-preview.html deleted file mode 100644 index 9d73ffa..0000000 --- a/_site/GitHub/veda-preview.html +++ /dev/null @@ -1,1428 +0,0 @@ - - - - - - - - - -The VEDA Project – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

The VEDA Project

-
- - - -
- - - - -
- - - -
- - - - - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Jupyterhub/convert_to_geotiff.html b/_site/Jupyterhub/convert_to_geotiff.html deleted file mode 100644 index b84b021..0000000 --- a/_site/Jupyterhub/convert_to_geotiff.html +++ /dev/null @@ -1,1705 +0,0 @@ - - - - - - - - - -convert_to_geotiff – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Jupyter Notebook Guide for Disaster COG Processing

-

This guide helps you get started with converting disaster satellite imagery to Cloud Optimized GeoTIFFs (COGs).

-
-

Quick Start

- -
-

πŸŽ›οΈ Option 2: Advanced Template (For Power Users)

-

Use templates/disaster_processing_template.ipynb for full control over: - Memory management - Chunk configurations - Processing parameters - Verification options - Detailed error handling

-
-
-
-

Configuration Examples

-
-

Basic Configuration

-
EVENT_NAME = '202408_TropicalStorm_Debby'
-PRODUCT_NAME = 'landsat8'
-BUCKET = 'nasa-disasters'
-SOURCE_PATH = f'drcs_activations/{EVENT_NAME}/{PRODUCT_NAME}'
-DESTINATION_BASE = 'drcs_activations_new'
-OVERWRITE = False  # Set True to replace existing files
-
-
-

Custom Filename Functions

-

Define how your files are renamed:

-
def create_truecolor_filename(original_path, event_name):
-    """Create filename for trueColor products."""
-    filename = os.path.basename(original_path)
-    stem = os.path.splitext(filename)[0]
-    date = extract_date_from_filename(stem)
-
-    if date:
-        stem_clean = re.sub(r'_\d{8}', '', stem)
-        return f"{event_name}_{stem_clean}_{date}_day.tif"
-    return f"{event_name}_{stem}_day.tif"
-
-
-

Map Products to Filename Functions

-
FILENAME_CREATORS = {
-    'trueColor': create_truecolor_filename,
-    'colorInfrared': create_colorinfrared_filename,
-    'naturalColor': create_naturalcolor_filename,
-}
-
-
-
-

File Organization

-

The system automatically: - Discovers files in your S3 source path - Categorizes them by product type (trueColor, NDVI, etc.) - Applies the appropriate filename function - Saves to organized output directories

-
-

Default Output Structure

-
drcs_activations_new/
-β”œβ”€β”€ imagery/
-β”‚   β”œβ”€β”€ trueColor/
-β”‚   β”œβ”€β”€ colorIR/
-β”‚   └── naturalColor/
-β”œβ”€β”€ indices/
-β”‚   β”œβ”€β”€ NDVI/
-β”‚   └── MNDWI/
-└── SAR/
-    └── processed/
-
-
-
-

Common Patterns

-
-

Process Multiple Product Types

-

The system automatically detects and processes different product types:

-
# Files are auto-categorized by these patterns:
-- 'trueColor' β†’ imagery/trueColor/
-- 'colorInfrared' β†’ imagery/colorIR/
-- 'NDVI' β†’ indices/NDVI/
-- 'MNDWI' β†’ indices/MNDWI/
-- 'SAR' β†’ SAR/processed/
-
-
-

Custom No-Data Values

-
NODATA_VALUES = {
-    'NDVI': -9999,      # Specific value for NDVI
-    'MNDWI': -9999,     # Specific value for MNDWI
-    'trueColor': None,  # Auto-detect for imagery
-}
-
-
-

Override Output Directories

-
OUTPUT_DIRS = {
-    'trueColor': 'Landsat/trueColor',
-    'colorInfrared': 'Landsat/colorIR',
-    'naturalColor': 'Landsat/naturalColor',
-}
-
-
-
-

Troubleshooting

-
-

Issue: β€œNo files found”

-
    -
  • Check SOURCE_PATH is correct
  • -
  • Verify files exist: aws s3 ls s3://bucket/path/
  • -
-
-
-

Issue: β€œFailed to connect to S3”

-
    -
  • Check AWS credentials: aws configure list
  • -
  • Ensure bucket access permissions
  • -
-
-
-

Issue: Files being skipped

-
    -
  • Files already exist in destination
  • -
  • Set OVERWRITE = True to reprocess
  • -
-
-
-

Issue: Wrong filenames

-
    -
  • Modify filename creator functions
  • -
  • Re-run from discovery step to preview
  • -
-
-
-

Issue: Processing is slow

-
    -
  • Large files take time (normal)
  • -
  • System automatically uses GDAL optimization
  • -
  • Files >1.5GB use optimized chunking
  • -
-
-
-
-

Performance Tips

-
    -
  1. File Size Optimization -
      -
    • Files <1.5GB: Processed whole (fastest)
    • -
    • Files >1.5GB: Smart chunking
    • -
    • Files >7GB: Ultra-large file handling
    • -
  2. -
  3. Compression -
      -
    • Uses ZSTD level 22 (maximum compression)
    • -
    • Automatic predictor selection
    • -
    • Intelligent resampling based on data type
    • -
  4. -
  5. Parallel Processing -
      -
    • For batch processing multiple events, use:
    • -
    -
    from batch_processor_parallel import process_files_parallel
  6. -
-
-
-

Advanced Features

-
-

Using the Helper Module Directly

-
from notebooks.notebook_helpers import quick_process
-
-results = quick_process({
-    'event_name': '202408_TropicalStorm_Debby',
-    'bucket': 'nasa-disasters',
-    'source_path': 'drcs_activations/202408_TropicalStorm_Debby/landsat8',
-    'destination_base': 'drcs_activations_new',
-    'overwrite': False,
-    'filename_creators': FILENAME_CREATORS
-})
-
-
-

Batch Processing Multiple Events

-
events = [
-    '202408_TropicalStorm_Debby',
-    '202409_Hurricane_Example',
-    '202410_Wildfire_Sample'
-]
-
-for event in events:
-    config['event_name'] = event
-    config['source_path'] = f'drcs_activations/{event}/landsat8'
-    processor = SimpleProcessor(config)
-    processor.connect_to_s3()
-    processor.discover_files()
-    processor.process_all()
-
-
-
-

Next Steps

-
    -
  1. Start with the simple template
  2. -
  3. Run a small test batch
  4. -
  5. Verify output filenames are correct
  6. -
  7. Process full dataset
  8. -
  9. Check results in S3
  10. -
-

For more details, see the main README.md or review the RESAMPLING_GUIDE.md for data type handling.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Jupyterhub/jupyterhub-training-guide.html b/_site/Jupyterhub/jupyterhub-training-guide.html deleted file mode 100644 index afa775e..0000000 --- a/_site/Jupyterhub/jupyterhub-training-guide.html +++ /dev/null @@ -1,2618 +0,0 @@ - - - - - - - - - -jupyterhub-training-guide – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

JupyterHub Training Guide - Disasters Hub

-
-

Table of Contents

-
    -
  1. Introduction
  2. -
  3. Getting Started
  4. -
  5. JupyterHub Interface Overview
  6. -
  7. Working with Jupyter Notebooks
  8. -
  9. Data Management
  10. -
  11. Environment and Package Management
  12. -
  13. Terminal and Command Line Access
  14. -
  15. Collaboration and Sharing
  16. -
  17. Resource Management
  18. -
  19. Best Practices
  20. -
  21. Troubleshooting
  22. -
  23. Keyboard Shortcuts
  24. -
  25. Resources and Links
  26. -
-
-
-
-

Introduction

-
-

What is JupyterHub?

-

JupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:

-
    -
  • Access powerful computing resources through your web browser
  • -
  • Write and execute code in Python, R, Julia, and other languages
  • -
  • Visualize data with interactive plots and charts
  • -
  • Collaborate with team members on shared projects
  • -
  • Work from anywhere without local setup requirements
  • -
-
-
-

The Disasters Hub

-

The Disasters Hub (https://hub.disasters.2i2c.cloud/) is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:

-
    -
  • Pre-configured environments for geospatial analysis
  • -
  • Access to disaster-related datasets
  • -
  • Collaboration tools for response teams
  • -
  • Integration with cloud storage services
  • -
  • Scalable computing resources
  • -
-
-
-

Key Benefits

-

βœ… No Installation Required - Everything runs in your browser
-βœ… Pre-configured Environments - Common packages already installed
-βœ… Persistent Storage - Your work is saved between sessions
-βœ… Collaboration Ready - Share notebooks with team members
-βœ… Scalable Resources - Access to GPU and high-memory instances when needed

-
-
-
-
-

Getting Started

-
-

Accessing the Disasters Hub

-
    -
  1. Navigate to the Hub -
  2. -
  3. Authentication -
      -
    • You’ll see a login screen with authentication options
    • -
    • Common authentication methods: -
        -
      • GitHub: Use your GitHub credentials
      • -
      • Google: Use your Google account
      • -
      • Institutional Login: Use your organization’s credentials
      • -
    • -
    • Select your authentication method and follow the prompts
    • -
  4. -
  5. First-Time Login -
      -
    • Accept terms of service if prompted
    • -
    • Your home directory will be created automatically
    • -
    • Initial setup may take 30-60 seconds
    • -
  6. -
-
-
-

Server Selection

-

After login, you may be presented with server options:

-
Server Options:
-β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
-β”‚ β€’ Small (2 CPU, 4GB RAM)            β”‚
-β”‚ β€’ Medium (4 CPU, 8GB RAM)           β”‚
-β”‚ β€’ Large (8 CPU, 16GB RAM)           β”‚
-β”‚ β€’ GPU Instance (if available)       β”‚
-β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
-

Tips for Server Selection: - Start with Small for basic notebook work - Use Medium for data processing tasks - Choose Large for machine learning or big data - Select GPU only when needed (limited availability)

-
-
-
-
-

JupyterHub Interface Overview

-
-

The JupyterLab Interface

-

Once logged in, you’ll see the JupyterLab interface:

-
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
-β”‚ [File] [Edit] [View] [Run] [Kernel] [Tabs] [Settings]    β”‚
-β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
-β”‚ πŸ“ File Browser β”‚          Main Work Area                | 
-β”‚ β”œβ”€β”€ πŸ“‚ data     β”‚                                        β”‚
-β”‚ β”œβ”€β”€ πŸ“‚ notebooksβ”‚      [Launcher Tab]                    β”‚
-β”‚ β”œβ”€β”€ πŸ“‚ scripts  β”‚      β€’ Notebook (Python 3)             β”‚
-β”‚ └── πŸ“„ README   β”‚      β€’ Console                         β”‚
-β”‚                 β”‚      β€’ Terminal                        |
-β”‚ [+] New         β”‚      β€’ Text File                       β”‚
-β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
-
-
-

Key Interface Components

-
    -
  1. Top Menu Bar -
      -
    • File operations, editing, running code
    • -
    • Kernel management
    • -
    • View options and settings
    • -
  2. -
  3. Left Sidebar -
      -
    • File Browser (πŸ“): Navigate and manage files
    • -
    • Running Terminals and Kernels (β–Ά): Monitor active sessions
    • -
    • Command Palette (πŸ”§): Access all commands
    • -
    • Extension Manager (🧩): Add functionality
    • -
  4. -
  5. Main Work Area -
      -
    • Multiple tabs for notebooks, terminals, and files
    • -
    • Drag tabs to rearrange or create split views
    • -
    • Right-click tabs for additional options
    • -
  6. -
  7. Status Bar -
      -
    • Current kernel status
    • -
    • Line/column position
    • -
    • File encoding and type
    • -
  8. -
-
-
-

Creating Your First Notebook

-
    -
  1. Click the Python 3 icon in the Launcher
  2. -
  3. Or: File β†’ New β†’ Notebook
  4. -
  5. Select kernel (usually Python 3)
  6. -
  7. Rename your notebook: Right-click on β€œUntitled.ipynb” β†’ Rename
  8. -
-
-
-
-
-

Working with Jupyter Notebooks

-
-

Notebook Basics

-

A Jupyter notebook consists of cells that can contain: - Code: Executable Python (or other language) code - Markdown: Formatted text, equations, and images - Raw: Unformatted text

-
-
-

Cell Operations

-
-

Running Cells

-
    -
  • Run current cell: Shift + Enter (run and move to next)
  • -
  • Run current cell in place: Ctrl + Enter (stay in cell)
  • -
  • Run all cells: Menu β†’ Run β†’ Run All Cells
  • -
-
-
-

Cell Types

-
# Code Cell Example
-import pandas as pd
-import numpy as np
-data = pd.read_csv('data.csv')
-data.head()
-
# Markdown Cell Example
-## Analysis Results
-- **Finding 1**: Data shows increasing trend
-- **Finding 2**: Correlation coefficient: 0.85
-
-$$E = mc^2$$  # LaTeX equation
-
-
-

Cell Management

-
    -
  • Insert cell above: A (in command mode)
  • -
  • Insert cell below: B (in command mode)
  • -
  • Delete cell: DD (press D twice in command mode)
  • -
  • Copy cell: C (in command mode)
  • -
  • Paste cell: V (in command mode)
  • -
  • Undo deletion: Z (in command mode)
  • -
-
-
-
-

Working with Kernels

-

The kernel is the computational engine that executes your code.

-
-

Kernel Operations

-
    -
  • Restart kernel: Kernel β†’ Restart
  • -
  • Restart and clear output: Kernel β†’ Restart & Clear Output
  • -
  • Restart and run all: Kernel β†’ Restart & Run All
  • -
  • Interrupt execution: Kernel β†’ Interrupt (or I,I in command mode)
  • -
  • Change kernel: Kernel β†’ Change Kernel
  • -
-
-
-

Kernel Status Indicators

-
    -
  • β—‹: Kernel idle
  • -
  • ●: Kernel busy
  • -
  • [*]: Cell currently executing
  • -
  • [1]: Cell execution number
  • -
-
-
-
-

Notebook Best Practices

-
    -
  1. Use meaningful cell divisions

    -
      -
    • One concept or operation per cell
    • -
    • Separate imports, data loading, processing, visualization
    • -
  2. -
  3. Document your work

    -
    # Good practice: Add comments and markdown cells
    -# Load disaster response data
    -df = pd.read_csv('disaster_data.csv')
    -
    -# Data preprocessing
    -df['date'] = pd.to_datetime(df['date'])
    -df = df.dropna()
  4. -
  5. Clear output before sharing

    -
      -
    • Kernel β†’ Restart & Clear Output
    • -
    • Reduces file size and removes sensitive output
    • -
  6. -
-
-
-
-
-

Data Management

-
-

File Upload/Download

-
-

Uploading Files

-
    -
  1. Drag and drop files directly into the file browser

  2. -
  3. Upload button: Click the ⬆ button in the file browser toolbar

  4. -
  5. Terminal upload: Use wget or curl in terminal

    -
    wget https://example.com/data.csv
    -curl -O https://example.com/data.zip
  6. -
-
-
-

Downloading Files

-
    -
  1. Right-click file in browser β†’ Download

  2. -
  3. From notebook:

    -
    from IPython.display import FileLink
    -FileLink('results.csv')  # Creates downloadable link
  4. -
-
-
-
-

Working with Cloud Storage

-
-

AWS S3 Integration

-
import boto3
-import pandas as pd
-
-# Read from S3
-df = pd.read_csv('s3://bucket-name/path/to/file.csv')
-
-# Write to S3
-df.to_csv('s3://bucket-name/output/results.csv', index=False)
-
-
-

Google Cloud Storage

-
# Read from GCS
-df = pd.read_csv('gs://bucket-name/path/to/file.csv')
-
-# Using gsutil in terminal
-!gsutil cp gs://bucket/file.csv ./data/
-
-
-
-

Data Organization

-

Recommended directory structure:

-
home/
-β”œβ”€β”€ data/
-β”‚   β”œβ”€β”€ raw/           # Original, immutable data
-β”‚   β”œβ”€β”€ processed/     # Cleaned, transformed data
-β”‚   └── external/      # Data from external sources
-β”œβ”€β”€ notebooks/
-β”‚   β”œβ”€β”€ exploratory/   # Initial explorations
-β”‚   β”œβ”€β”€ analysis/      # Detailed analysis
-β”‚   └── reports/       # Final reports
-β”œβ”€β”€ scripts/           # Reusable Python scripts
-β”œβ”€β”€ results/           # Output files, figures
-└── requirements.txt   # Package dependencies
-
-
-

Data Persistence

-

⚠️ Important: Your home directory is persistent, but understand the storage limits:

-
    -
  • Home directory: Usually 10-100 GB (persistent)
  • -
  • Shared data: Read-only datasets available to all users
  • -
  • Temporary storage: /tmp cleared on restart
  • -
  • Best practice: Store large datasets in cloud storage, not home directory
  • -
-
-
-
-
-

Environment and Package Management

-
-

Installing Packages

-
-

Using pip (Python packages)

-
# In a notebook cell
-!pip install package_name
-
-# Install specific version
-!pip install pandas==1.3.0
-
-# Install from requirements file
-!pip install -r requirements.txt
-
-# Install in user directory (if no write permissions)
-!pip install --user package_name
-
-
-

Using conda

-
# In a notebook cell
-!conda install -c conda-forge package_name -y
-
-# Install multiple packages
-!conda install numpy pandas matplotlib -y
-
-# Create new environment
-!conda create -n myenv python=3.9 -y
-!conda activate myenv  # Note: Activation in notebooks is tricky
-
-
-
-

Managing Python Environments

-
-

Check current environment

-
import sys
-print(sys.executable)  # Python interpreter path
-print(sys.version)     # Python version
-
-# List installed packages
-!pip list
-!conda list
-
-
-

Creating isolated environments

-
# In terminal
-python -m venv myproject
-source myproject/bin/activate  # Linux/Mac
-pip install -r requirements.txt
-
-
-
-

Using Different Kernels

-
    -
  1. Install IPython kernel:

    -
    python -m ipykernel install --user --name mykernel --display-name "My Kernel"
  2. -
  3. List available kernels:

    -
    jupyter kernelspec list
  4. -
  5. Remove a kernel:

    -
    jupyter kernelspec uninstall mykernel
  6. -
-
-
-
-
-

Terminal and Command Line Access

-
-

Opening Terminal

-
    -
  1. From Launcher: Click β€œTerminal” icon
  2. -
  3. From menu: File β†’ New β†’ Terminal
  4. -
  5. Keyboard shortcut: (varies by setup)
  6. -
-
-
-

Common Terminal Commands

-
# Navigation
-pwd                     # Print working directory
-ls -la                  # List files with details
-cd ~/notebooks         # Change directory
-
-# File operations
-mkdir project          # Create directory
-cp file1.txt file2.txt # Copy file
-mv oldname newname     # Move/rename
-rm file.txt           # Delete file (careful!)
-
-# File viewing
-cat file.txt          # Display file contents
-head -n 10 data.csv   # First 10 lines
-tail -n 10 log.txt    # Last 10 lines
-less large_file.txt   # Page through file
-
-# Process management
-ps aux                # List processes
-top                   # Monitor resources
-kill -9 PID          # Kill process
-
-# Git operations
-git status
-git add .
-git commit -m "message"
-git push
-
-
-

Working with Data Files

-
# Count lines in file
-wc -l data.csv
-
-# View CSV structure
-head -1 data.csv | tr ',' '\n' | nl
-
-# Search in files
-grep "pattern" file.txt
-grep -r "pattern" ./directory
-
-# Compress/decompress
-zip archive.zip file1 file2
-unzip archive.zip
-tar -czf archive.tar.gz directory/
-tar -xzf archive.tar.gz
-
-
-
-
-

Collaboration and Sharing

-
-

Sharing Notebooks

-
-

Method 1: Direct File Sharing

-
    -
  1. Download notebook: File β†’ Download as β†’ Notebook (.ipynb)
  2. -
  3. Share via email, Slack, or file sharing service
  4. -
  5. Recipient uploads to their JupyterHub
  6. -
-
-
-

Method 2: Using Git

-
# Initialize repository
-git init
-git add notebook.ipynb
-git commit -m "Add analysis notebook"
-git remote add origin https://github.com/user/repo.git
-git push -u origin main
-
-
-

Method 3: Export Formats

-
    -
  • HTML: File β†’ Export Notebook As β†’ HTML
  • -
  • PDF: File β†’ Export Notebook As β†’ PDF (requires LaTeX)
  • -
  • Python script: File β†’ Export Notebook As β†’ Python
  • -
  • Markdown: File β†’ Export Notebook As β†’ Markdown
  • -
-
-
-
-

Real-time Collaboration

-

Some JupyterHub deployments support real-time collaboration:

-
    -
  1. Share workspace link: Get shareable link from hub admin
  2. -
  3. Collaborative editing: Multiple users can edit simultaneously
  4. -
  5. See collaborator cursors: Real-time cursor positions
  6. -
  7. Chat integration: Built-in chat for discussion
  8. -
-
-
-

Version Control Best Practices

-
    -
  1. Clear outputs before committing:

    -
    jupyter nbconvert --clear-output notebook.ipynb
  2. -
  3. Use .gitignore:

    -
    .ipynb_checkpoints/
    -__pycache__/
    -*.pyc
    -.DS_Store
    -data/  # Don't commit large data files
  4. -
  5. Notebook diff tools:

    -
    # Install nbdime for better notebook diffs
    -pip install nbdime
    -nbdime config-git --enable
  6. -
-
-
-
-
-

Resource Management

-
-

Understanding Resource Limits

-

Your JupyterHub instance has resource limits:

-
# Check available resources
-import psutil
-
-# Memory
-memory = psutil.virtual_memory()
-print(f"Total RAM: {memory.total / 1e9:.2f} GB")
-print(f"Available: {memory.available / 1e9:.2f} GB")
-print(f"Used: {memory.percent}%")
-
-# CPU
-print(f"CPU cores: {psutil.cpu_count()}")
-print(f"CPU usage: {psutil.cpu_percent()}%")
-
-# Disk
-disk = psutil.disk_usage('/')
-print(f"Disk space: {disk.total / 1e9:.2f} GB")
-print(f"Disk used: {disk.percent}%")
-
-
-

Monitoring Resource Usage

-
-

JupyterLab Extension

-
    -
  • Install Resource Usage extension
  • -
  • Shows real-time memory and CPU usage in status bar
  • -
-
-
-

Command line monitoring

-
# Real-time resource monitoring
-top
-htop  # If installed
-
-# Memory usage
-free -h
-
-# Disk usage
-df -h
-du -sh *  # Directory sizes
-
-
-
-

Optimizing Resource Usage

-
    -
  1. Clear variables when done:

    -
    # Clear specific variable
    -del large_dataframe
    -
    -# Clear all variables
    -%reset -f
    -
    -# Garbage collection
    -import gc
    -gc.collect()
  2. -
  3. Use efficient data types:

    -
    # Use categories for strings with few unique values
    -df['category'] = df['category'].astype('category')
    -
    -# Use smaller numeric types when possible
    -df['count'] = df['count'].astype('int32')  # Instead of int64
  4. -
  5. Process data in chunks:

    -
    # Read large CSV in chunks
    -chunk_size = 10000
    -for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    -    process_chunk(chunk)
  6. -
-
-
-

Shutting Down Properly

-

Always shut down kernels and terminals when done:

-
    -
  1. Shutdown kernel: Kernel β†’ Shutdown
  2. -
  3. Close terminals: Exit or Ctrl+D
  4. -
  5. Hub Control Panel: File β†’ Hub Control Panel β†’ Stop My Server
  6. -
  7. Logout: File β†’ Log Out
  8. -
-

⚠️ Important: Idle servers may be automatically culled after a period of inactivity (usually 1-2 hours).

-
-
-
-
-

Best Practices

-
-

Project Organization

-
    -
  1. Use consistent naming:

    -
    2024-01-15_earthquake_analysis.ipynb  # Good
    -untitled1.ipynb                       # Bad
  2. -
  3. Create project templates:

    -
    # notebook_template.ipynb
    -
    -# 1. Imports
    -import pandas as pd
    -import numpy as np
    -import matplotlib.pyplot as plt
    -
    -# 2. Configuration
    -pd.set_option('display.max_columns', None)
    -plt.style.use('seaborn')
    -
    -# 3. Data Loading
    -
    -# 4. Data Exploration
    -
    -# 5. Analysis
    -
    -# 6. Results
  4. -
  5. Document dependencies:

    -
    # Generate requirements.txt
    -!pip freeze > requirements.txt
  6. -
-
-
-

Security Considerations

-
    -
  1. Never commit credentials:

    -
    # Bad
    -api_key = "sk-abc123def456"
    -
    -# Good - Use environment variables
    -import os
    -api_key = os.environ.get('API_KEY')
  2. -
  3. Use secrets management:

    -
    # Store secrets in .env file
    -from dotenv import load_dotenv
    -load_dotenv()
    -
    -# Access secrets
    -secret = os.getenv('SECRET_KEY')
  4. -
  5. Be careful with outputs:

    -
      -
    • Clear cells containing sensitive information
    • -
    • Review notebooks before sharing
    • -
  6. -
-
-
-

Performance Tips

-
    -
  1. Vectorize operations:

    -
    # Slow
    -results = []
    -for i in range(len(df)):
    -    results.append(df.iloc[i]['column'] * 2)
    -
    -# Fast
    -results = df['column'] * 2
  2. -
  3. Use built-in functions:

    -
    # Use pandas/numpy operations instead of loops
    -df['new_col'] = df['col1'] + df['col2']  # Vectorized
  4. -
  5. Profile your code:

    -
    %%time  # Time entire cell
    -
    -%timeit function()  # Time single line
    -
    -# Detailed profiling
    -%load_ext line_profiler
    -%lprun -f function_to_profile function_to_profile()
  6. -
-
-
-
-
-

Troubleshooting

-
-

Common Issues and Solutions

-
-

Kernel Won’t Start

-
    -
  • Check resources: Server might be full
  • -
  • Try different kernel: Some kernels may be broken
  • -
  • Restart server: Hub Control Panel β†’ Stop β†’ Start
  • -
-
-
-

Package Import Errors

-
# Check if package is installed
-import importlib
-if importlib.util.find_spec("package_name") is None:
-    !pip install package_name
-    
-# Restart kernel after installation
-from IPython import get_ipython
-get_ipython().kernel.do_shutdown(True)
-
-
-

Out of Memory Errors

-
    -
  1. Clear unnecessary variables: del variable_name
  2. -
  3. Use smaller data samples for testing
  4. -
  5. Request larger server instance
  6. -
  7. Process data in chunks
  8. -
-
-
-

Notebook Won’t Save

-
    -
  • Check disk space: df -h in terminal
  • -
  • Check file permissions: ls -la notebook.ipynb
  • -
  • Save with new name: File β†’ Save As
  • -
  • Download backup: File β†’ Download
  • -
-
-
-

Connection Issues

-
    -
  • Check internet connection
  • -
  • Try different browser
  • -
  • Clear browser cache
  • -
  • Check if hub is under maintenance
  • -
-
-
-
-

Getting Help

-
    -
  1. Built-in help:

    -
    help(function_name)
    -function_name?  # Quick help
    -function_name??  # Source code
  2. -
  3. Documentation:

    -
      -
    • JupyterHub docs: https://jupyterhub.readthedocs.io
    • -
    • JupyterLab docs: https://jupyterlab.readthedocs.io
    • -
    • 2i2c docs: https://docs.2i2c.org
    • -
  4. -
  5. Community support:

    -
      -
    • Discourse forum
    • -
    • GitHub issues
    • -
    • Stack Overflow with tags: jupyter, jupyterhub
    • -
  6. -
-
-
-
-
-

Keyboard Shortcuts

-
-

Command Mode (Blue cell border)

-

Press Esc to enter command mode

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ShortcutAction
EnterEnter edit mode
AInsert cell above
BInsert cell below
D,DDelete cell
YChange to code cell
MChange to markdown cell
Shift+Up/DownSelect multiple cells
Shift+MMerge selected cells
CCopy cell
XCut cell
VPaste cell below
Shift+VPaste cell above
ZUndo cell deletion
0,0Restart kernel
I,IInterrupt kernel
-
-
-

Edit Mode (Green cell border)

-

Press Enter to enter edit mode

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ShortcutAction
EscEnter command mode
Ctrl+EnterRun cell
Shift+EnterRun cell, select below
Alt+EnterRun cell, insert below
Ctrl+SSave notebook
TabCode completion
Shift+TabTooltip
Ctrl+]Indent
Ctrl+[Dedent
Ctrl+ASelect all
Ctrl+ZUndo
Ctrl+YRedo
-
-
-

JupyterLab Shortcuts

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ShortcutAction
Ctrl+Shift+CCommand palette
Ctrl+BToggle left sidebar
Ctrl+Shift+DToggle file browser
Ctrl+Shift+FFind and replace
Ctrl+Shift+[Previous tab
Ctrl+Shift+]Next tab
Alt+WClose tab
-
-
-
- -
-

Appendix: Sample Workflow

-

Here’s a complete example workflow for disaster analysis:

-
# 1. Setup and Imports
-import pandas as pd
-import geopandas as gpd
-import matplotlib.pyplot as plt
-import folium
-from datetime import datetime, timedelta
-import warnings
-warnings.filterwarnings('ignore')
-
-# 2. Load Data
-# Earthquake data
-earthquakes = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.csv')
-earthquakes['time'] = pd.to_datetime(earthquakes['time'])
-
-# 3. Data Processing
-# Filter recent events
-recent = earthquakes[earthquakes['time'] > datetime.now() - timedelta(days=7)]
-
-# Convert to GeoDataFrame
-geometry = gpd.points_from_xy(recent.longitude, recent.latitude)
-geo_df = gpd.GeoDataFrame(recent, geometry=geometry, crs='EPSG:4326')
-
-# 4. Analysis
-print(f"Total earthquakes in last 7 days: {len(recent)}")
-print(f"Average magnitude: {recent['mag'].mean():.2f}")
-print(f"Largest earthquake: {recent['mag'].max():.2f}")
-
-# 5. Visualization
-# Static plot
-fig, ax = plt.subplots(figsize=(12, 8))
-world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
-world.plot(ax=ax, color='lightgray', edgecolor='black')
-geo_df.plot(ax=ax, color='red', markersize=geo_df['mag']**2, alpha=0.6)
-plt.title('Recent Earthquakes (M4.5+)')
-plt.show()
-
-# Interactive map
-m = folium.Map(location=[0, 0], zoom_start=2)
-for idx, row in geo_df.iterrows():
-    folium.CircleMarker(
-        location=[row['latitude'], row['longitude']],
-        radius=row['mag']*2,
-        popup=f"M{row['mag']} - {row['place']}",
-        color='red',
-        fill=True
-    ).add_to(m)
-m.save('earthquake_map.html')
-
-# 6. Export Results
-geo_df.to_csv('processed_earthquakes.csv', index=False)
-print("Analysis complete! Results saved.")
-
-

Last Updated: 2024
-Version: 1.0
-Disasters Hub Training Guide

-

For additional assistance, contact your hub administrator or visit the 2i2c support portal.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Jupyterhub/setup-disaster-repo.html b/_site/Jupyterhub/setup-disaster-repo.html deleted file mode 100644 index 5dd5858..0000000 --- a/_site/Jupyterhub/setup-disaster-repo.html +++ /dev/null @@ -1,1936 +0,0 @@ - - - - - - - - - -setup-disaster-repo – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Setting Up Disaster Repository - Step-by-Step Guide

-
-

Table of Contents

-
    -
  1. Prerequisites
  2. -
  3. GitHub Account Setup
  4. -
  5. Configure Git Identity
  6. -
  7. GitHub Authentication Setup
  8. -
  9. Clone the Repository
  10. -
  11. Working with Branches
  12. -
  13. Making Changes and Pushing
  14. -
  15. Troubleshooting Common Issues
  16. -
-
-
-
-

Prerequisites

-

Before starting, ensure you have: - Git installed in your JupyterHub environment - Access to terminal in JupyterHub - Internet connection - GitHub account (we’ll create one if needed)

-

Check if Git is installed:

-
git --version
-

If not installed, contact your JupyterHub administrator.

-
-
-
-

GitHub Account Setup

-
-

Step 1: Create GitHub Account (if you don’t have one)

-
    -
  1. Visit https://github.com
  2. -
  3. Click Sign up
  4. -
  5. Enter your details: -
      -
    • Username: Choose carefully (this is permanent and public)
    • -
    • Email: Use your professional/institutional email
    • -
    • Password: Create a strong password
    • -
  6. -
  7. Verify your email address
  8. -
  9. Complete profile setup
  10. -
-
- -
-
-

Configure Git Identity

-

Configure Git with your GitHub account information:

-
# Set your name (visible in commits)
-git config --global user.name "Your Full Name"
-
-# Set your email (MUST match your GitHub account email)
-git config --global user.email "your.email@example.com"
-
-# Set default branch name to main
-git config --global init.defaultBranch main
-
-# Enable colored output for better readability
-git config --global color.ui auto
-
-# Verify your configuration
-git config --list
-

Example:

-
git config --global user.name "Kyle Lesinger"
-git config --global user.email "kyle.lesinger@example.com"
-
-
-
-

GitHub Authentication Setup

-

Since GitHub no longer supports password authentication, you need to use either: 1. Personal Access Token (Easier for JupyterHub) 2. SSH Keys (More secure, one-time setup) 3. GitHub CLI (Recommended - handles auth automatically)

- -
-

Option 2: Personal Access Token

-
    -
  1. Go to GitHub.com β†’ Settings β†’ Developer settings
  2. -
  3. Click Personal access tokens β†’ Tokens (classic)
  4. -
  5. Click Generate new token β†’ Generate new token (classic)
  6. -
  7. Name it: β€œJupyterHub Access”
  8. -
  9. Set expiration (90 days recommended)
  10. -
  11. Select scopes: -
      -
    • βœ… repo (Full control of private repositories)
    • -
    • βœ… workflow (Update GitHub Action workflows)
    • -
  12. -
  13. Click Generate token
  14. -
  15. COPY THE TOKEN IMMEDIATELY (you won’t see it again!)
  16. -
-

Store the token securely for use when pushing:

-
# Store credentials (will be saved after first use)
-git config --global credential.helper store
-
-
-

Option 3: SSH Key Setup

-
# Generate SSH key
-ssh-keygen -t ed25519 -C "your.email@example.com"
-# Press Enter for default location
-# Optionally set a passphrase
-
-# Display your public key
-cat ~/.ssh/id_ed25519.pub
-
-# Copy the entire output, then:
-# 1. Go to GitHub.com β†’ Settings β†’ SSH and GPG keys
-# 2. Click "New SSH key"
-# 3. Paste your key and save
-
-# Test SSH connection
-ssh -T git@github.com
-
-
-
-
-

Clone the Repository

-
-

Step 1: Clone the Repository

-
# Navigate to your workspace
-cd ~/
-
-# Clone the repository (creates a new folder called 'conversion_scripts')
-git clone https://github.com/kyle-lesinger/conversion_scripts.git
-
-# Navigate into the repository
-cd conversion_scripts
-
-# Verify the clone
-ls -la
-git status
-
-
-

Step 2: Verify Remote Configuration

-
# Check current remotes
-git remote -v
-
-# You should see:
-# origin  https://github.com/kyle-lesinger/conversion_scripts.git (fetch)
-# origin  https://github.com/kyle-lesinger/conversion_scripts.git (push)
-
-
-

Step 3: (Optional) Switch to SSH Remote

-

If you set up SSH keys and prefer using SSH:

-
# Remove HTTPS remote
-git remote remove origin
-
-# Add SSH remote
-git remote add origin git@github.com:kyle-lesinger/conversion_scripts.git
-
-# Verify the change
-git remote -v
-
-
-
-
-

Working with Branches

-
-

Create a New Branch

-

Always create a new branch for your work instead of committing directly to main:

-
# Make sure you're on the main branch
-git checkout main
-
-# Pull latest changes
-git pull origin main
-
-# Create and switch to a new branch
-git checkout -b feature/your-feature-name
-
-# Example branch names:
-# git checkout -b feature/add-preprocessing
-# git checkout -b bugfix/fix-data-pipeline
-# git checkout -b docs/update-readme
-
-
-

Verify Your Branch

-
# Check which branch you're on
-git branch
-
-# List all branches (local and remote)
-git branch -a
-
-
-
-
-

Making Changes and Pushing

-
-

Step 1: Make Your Changes

-
# Create or edit files
-echo "# Conversion Scripts" > README.md
-echo "This repository contains data conversion scripts." >> README.md
-
-# Check what files have changed
-git status
-
-
-

Step 2: Stage and Commit Changes

-
# Add specific files
-git add README.md
-
-# Or add all changes
-git add .
-
-# Commit with descriptive message
-git commit -m "Add README with project description"
-
-# View commit history
-git log --oneline
-
-
-

Step 3: Push to GitHub

-
-

First Time Push (new branch):

-
# Push and set upstream branch
-git push -u origin feature/your-feature-name
-
-# If using Personal Access Token, enter:
-# Username: your-github-username
-# Password: your-personal-access-token (NOT your GitHub password!)
-
-
-

Subsequent Pushes:

-
# After upstream is set, simply:
-git push
-
-
-
-

Step 4: Create Pull Request

-
# Using GitHub CLI (if authenticated)
-gh pr create --title "Add README documentation" --body "Added project description"
-
-# Or manually:
-# 1. Visit https://github.com/kyle-lesinger/conversion_scripts
-# 2. Click "Compare & pull request" button
-# 3. Add title and description
-# 4. Click "Create pull request"
-
-
-
-
-

Complete Workflow Example

-

Here’s a complete example workflow from start to finish:

-
# 1. Configure Git (one-time setup)
-git config --global user.name "Kyle Lesinger"
-git config --global user.email "kyle.lesinger@example.com"
-
-# 2. Authenticate with GitHub CLI
-gh auth login
-# Follow the interactive prompts
-
-# 3. Clone the repository
-cd ~/
-git clone https://github.com/kyle-lesinger/conversion_scripts.git
-cd conversion_scripts
-
-# 4. Create a new branch
-git checkout -b feature/add-conversion-script
-
-# 5. Create a new file
-cat > convert_data.py << 'EOF'
-#!/usr/bin/env python3
-"""
-Data conversion utility script
-"""
-
-def convert_format(input_file, output_file):
-    """Convert data from one format to another"""
-    print(f"Converting {input_file} to {output_file}")
-    # Add conversion logic here
-
-if __name__ == "__main__":
-    convert_format("input.txt", "output.json")
-EOF
-
-# 6. Stage and commit
-git add convert_data.py
-git commit -m "Add data conversion utility script"
-
-# 7. Push to GitHub
-git push -u origin feature/add-conversion-script
-
-# 8. Create pull request
-gh pr create --title "Add data conversion script" --body "Initial conversion utility"
-
-
-
-

Troubleshooting Common Issues

-
-

Issue 1: Authentication Failed

-

Error: remote: Invalid username or password

-

Solution:

-
# Use Personal Access Token instead of password
-# When prompted for password, paste your token
-
-# Or use GitHub CLI
-gh auth login
-
-
-

Issue 2: Permission Denied (publickey)

-

Error: git@github.com: Permission denied (publickey)

-

Solution:

-
# Check if SSH key exists
-ls -la ~/.ssh/
-
-# Generate new key if needed
-ssh-keygen -t ed25519 -C "your.email@example.com"
-
-# Add to SSH agent
-eval "$(ssh-agent -s)"
-ssh-add ~/.ssh/id_ed25519
-
-# Add public key to GitHub account
-cat ~/.ssh/id_ed25519.pub
-# Copy output and add to GitHub.com β†’ Settings β†’ SSH Keys
-
-
-

Issue 3: Remote Already Exists

-

Error: error: remote origin already exists

-

Solution:

-
# Remove existing remote
-git remote remove origin
-
-# Add new remote
-git remote add origin https://github.com/kyle-lesinger/conversion_scripts.git
-
-
-

Issue 4: Rejected Push (Non-fast-forward)

-

Error: ! [rejected] main -> main (non-fast-forward)

-

Solution:

-
# Pull latest changes first
-git pull origin main --rebase
-
-# Then push
-git push origin main
-
-
-

Issue 5: Wrong Branch

-

Error: Working on main branch instead of feature branch

-

Solution:

-
# Create new branch with current changes
-git checkout -b feature/my-changes
-
-# Push to new branch
-git push -u origin feature/my-changes
-
-
-
-
-

Best Practices

-
    -
  1. Always work in branches - Never commit directly to main
  2. -
  3. Pull before pushing - Always sync with remote before pushing
  4. -
  5. Use descriptive commit messages - Explain what and why
  6. -
  7. Commit frequently - Small, logical commits are better
  8. -
  9. Keep tokens secure - Never commit tokens or passwords
  10. -
  11. Test locally - Run your code before committing
  12. -
-
-
-
-

Quick Command Reference

-
# Clone repository
-git clone https://github.com/kyle-lesinger/conversion_scripts.git
-
-# Create branch
-git checkout -b feature/new-feature
-
-# Check status
-git status
-
-# Add files
-git add .
-
-# Commit
-git commit -m "Description of changes"
-
-# Push new branch
-git push -u origin feature/new-feature
-
-# Push existing branch
-git push
-
-# Pull latest changes
-git pull origin main
-
-# Switch branches
-git checkout branch-name
-
-# List branches
-git branch -a
-
-# Delete local branch
-git branch -d branch-name
-
-# View commit history
-git log --oneline --graph
-
-
-
-

Additional Resources

- -
-
-
-

Getting Help

-

If you encounter issues not covered here:

-
    -
  1. Check the repository issues: https://github.com/kyle-lesinger/conversion_scripts/issues
  2. -
  3. Ask in the JupyterHub support channel
  4. -
  5. Consult the comprehensive Git/GitHub guide
  6. -
-
-

Last Updated: 2024 Version: 1.0

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Jupyterhub/simple_disaster_template.html b/_site/Jupyterhub/simple_disaster_template.html deleted file mode 100644 index 41e183e..0000000 --- a/_site/Jupyterhub/simple_disaster_template.html +++ /dev/null @@ -1,2069 +0,0 @@ - - - - - - - - - -🌍 Simple Disaster COG Processing – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

🌍 Simple Disaster COG Processing

-
- - - -
- - - - -
- - - -
- - -

This simplified notebook converts disaster satellite imagery to Cloud Optimized GeoTIFFs (COGs) with just a few cells.

-
-

✨ Features

-
    -
  • See files first - List S3 files before configuring
  • -
  • Smart configuration - Define filename functions after seeing actual files
  • -
  • Auto-discovery - Automatically categorizes your files
  • -
  • Simple processing - Just run the cells in order
  • -
-
-

-πŸš€ Launch in Disasters-Hub JupyterHub (requires access) -

-

-To obtain credentials to VEDA Hub, follow this link for more information. -

-
-Disclaimer: it is highly recommended to run a tutorial within NASA VEDA JupyterHub, which already includes functions for processing and visualizing data specific to VEDA stories. Running the tutorial outside of the VEDA JupyterHub may lead to errors, specifically related to EarthData authentication. Additionally, it is recommended to use the Pangeo workspace within the VEDA JupyterHub, since certain packages relevant to this tutorial are already installed. -
-

-If you do not have a VEDA Jupyterhub Account you can launch this notebook on your local environment using MyBinder by clicking the icon below. -

-


Binder

-
-
-

πŸ”§ Step 0: Setup - Clone Required Repository

-

Run this cell first! This notebook requires the disasters-aws-conversion repository for processing functions.

-
-
import os
-import subprocess
-
-# Check if disasters-aws-conversion exists, if not clone it
-repo_name = "disasters-aws-conversion"
-repo_url = "https://github.com/Disasters-Learning-Portal/disasters-aws-conversion.git"
-
-if not os.path.exists(repo_name):
-    print(f"πŸ“₯ Cloning {repo_name} repository...")
-    try:
-        result = subprocess.run(
-            ["git", "clone", repo_url, f"{repo_name}"],
-            capture_output=True,
-            text=True,
-            check=True
-        )
-        print(f"βœ… Successfully cloned {repo_name}")
-    except subprocess.CalledProcessError as e:
-        print(f"❌ Error cloning repository: {e.stderr}")
-else:
-    print(f"βœ… {repo_name} repository already exists")
-
-
-
-

πŸ“‹ Step 1: Basic Configuration

-

Set your event details and S3 paths:

-
-
# ========================================
-# INPUTS
-# ========================================
-
-# S3 Paths
-BUCKET = 'nasa-disasters'    # S3 bucket (DO NOT CHANGE)
-DESTINATION_BASE = 'drcs_activations_new'  # Where to save COGs in S3 bucket (DO NOT CHANGE)
-GEOTIFF_DIR = 'drcs_activations' # This is where all non-converted files should be placed
-
-
-# Event Details
-EVENT_NAME = '202510_Flood_AK'  # Your sensor or product name (e.g, Sentinel-1, Planet, Landsat)
-SUB_PRODUCT_NAME = 'aria'         # Sub-directories within PRODUCT_NAME (RGB, trueColor, SWIR, etc.). Can leave blank and it will read from PRODUCT_NAME.
-SOURCE_PATH = f'{GEOTIFF_DIR}/{EVENT_NAME}/{SUB_PRODUCT_NAME}'      # Where your files are
-
-
-# Processing Options
-OVERWRITE = False      # Set to True to replace existing files
-VERIFY = True          # Set to True to verify results after processing
-SAVE_RESULTS = True    # Set to False to skip saving results CSV to /output directory
-
-print(f"Event: {GEOTIFF_DIR}")
-print(f"Source: s3://{BUCKET}/{SOURCE_PATH}")
-print(f"Destination: s3://{BUCKET}/{DESTINATION_BASE}/")
-
-
Event: drcs_activations
-Source: s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria
-Destination: s3://nasa-disasters/drcs_activations_new/
-
-
-
-
-

πŸ” Step 2: Connect to S3 and List Files

-

Let’s see what files are available before configuring filename transformations:

-
-
# Import necessary modules
-import sys
-import os
-from pathlib import Path
-
-# Add parent directory to path for importing functions
-sys.path.insert(0, str(Path('..').resolve()))
-
-# Import S3 operations
-from core.s3_operations import (
-    initialize_s3_client,
-    list_s3_files,
-    get_file_size_from_s3
-)
-
-# Initialize S3 client
-print("🌐 Connecting to S3...")
-s3_client, _ = initialize_s3_client(bucket_name=BUCKET, verbose=False)
-
-if s3_client:
-    print("βœ… Connected to S3\n")
-    
-    # List all TIF files
-    print(f"πŸ“‚ Files in s3://{BUCKET}/{SOURCE_PATH}:")
-    print("="*60)
-    
-    files = list_s3_files(s3_client, BUCKET, SOURCE_PATH, suffix='.tif')
-    
-    if files:
-        print(f"Found {len(files)} .tif files:\n")
-        for i, file_path in enumerate(files[:10], 1):  # Show first 10
-            filename = os.path.basename(file_path)
-            try:
-                size_gb = get_file_size_from_s3(s3_client, BUCKET, file_path)
-                print(f"{i:2}. {filename:<60} ({size_gb:.2f} GB)")
-            except:
-                print(f"{i:2}. {filename}")
-        
-        if len(files) > 10:
-            print(f"\n... and {len(files) - 10} more files")
-        
-        print("\n" + "="*60)
-        print("\nπŸ’‘ Use this information to create filename functions in Step 3")
-    else:
-        print("⚠️ No .tif files found in the specified path.")
-        print("   Check your SOURCE_PATH configuration.")
-else:
-    print("❌ Could not connect to S3. Check your AWS credentials.")
-    files = []
-
-
🌐 Connecting to S3...
-βœ… Connected to S3
-
-πŸ“‚ Files in s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria:
-============================================================
-Found 6 .tif files:
-
- 1. OPERA_L3_DSWX-S1_V1_WTR_2025-10-08_mosaic.tif                (0.01 GB)
- 2. OPERA_L3_DSWX-S1_V1_WTR_2025-10-10_mosaic.tif                (0.03 GB)
- 3. OPERA_L3_DSWX-S1_V1_WTR_2025-10-12_mosaic.tif                (0.03 GB)
- 4. OPERA_L3_DSWX-S1_V1_WTR_2025-10-15_mosaic.tif                (0.02 GB)
- 5. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-08_mosaic.tif               (0.01 GB)
- 6. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-13_mosaic.tif               (0.01 GB)
-
-============================================================
-
-πŸ’‘ Use this information to create filename functions in Step 3
-
-
-
-
-

🏷️ Step 3a: Define Categorization and Filename Transformations

-

Based on the files you see above, configure: 1. Categorization patterns - Regex patterns to identify file types 2. Filename functions - How to transform filenames 3. Output directories - Where each category should be saved

-
-
# ========================================
-# CATEGORIZATION AND OUTPUT CONFIGURATION
-# ========================================
-
-import re
-
-# STEP 1: Define how to extract dates from filenames
-def extract_date_from_filename(filename):
-    """Extract date from filename in YYYYMMDD format."""
-    dates = re.findall(r'\d{8}', filename)
-    if dates:
-        date_str = dates[0]
-        return f"{date_str[0:4]}-{date_str[4:6]}-{date_str[6:8]}"
-    return None
-
-# STEP 2: Define filename transformation functions for each category
-def create_truecolor_filename(original_path, event_name):
-    """Create filename for trueColor products."""
-    filename = os.path.basename(original_path)
-    stem = os.path.splitext(filename)[0]
-    date = extract_date_from_filename(stem)
-    
-    if date:
-        stem_clean = re.sub(r'_\d{8}', '', stem)
-        return f"{event_name}_{stem_clean}_{date}_day.tif"
-    return f"{event_name}_{stem}_day.tif"
-
-def create_colorinfrared_filename(original_path, event_name):
-    """Create filename for colorInfrared products."""
-    filename = os.path.basename(original_path)
-    stem = os.path.splitext(filename)[0]
-    date = extract_date_from_filename(stem)
-    
-    if date:
-        stem_clean = re.sub(r'_\d{8}', '', stem)
-        return f"{event_name}_{stem_clean}_{date}_day.tif"
-    return f"{event_name}_{stem}_day.tif"
-
-def create_naturalcolor_filename(original_path, event_name):
-    """Create filename for naturalColor products."""
-    filename = os.path.basename(original_path)
-    stem = os.path.splitext(filename)[0]
-    date = extract_date_from_filename(stem)
-    
-    if date:
-        stem_clean = re.sub(r'_\d{8}', '', stem)
-        return f"{event_name}_{stem_clean}_{date}_day.tif"
-    return f"{event_name}_{stem}_day.tif"
-
-# STEP 3: Configure categorization patterns (REQUIRED)
-# These regex patterns determine which files belong to which category
-CATEGORIZATION_PATTERNS = {
-    'trueColor': r'trueColor|truecolor|true_color',
-    'colorInfrared': r'colorInfrared|colorIR|color_infrared',
-    'naturalColor': r'naturalColor|natural_color',
-    # Add patterns for ALL file types you want to process
-    # Files not matching any pattern will be skipped with a warning
-}
-
-# STEP 4: Map categories to filename transformation functions
-FILENAME_CREATORS = {
-    'trueColor': create_truecolor_filename,
-    'colorInfrared': create_colorinfrared_filename,
-    'naturalColor': create_naturalcolor_filename,
-    # Must have an entry for each category in CATEGORIZATION_PATTERNS
-}
-
-# STEP 5: Specify output directories for each category
-OUTPUT_DIRS = {
-    'trueColor': 'Landsat/trueColor',
-    'colorInfrared': 'Landsat/colorIR',
-    'naturalColor': 'Landsat/naturalColor',
-    # Must have an entry for each category in CATEGORIZATION_PATTERNS
-}
-
-# OPTIONAL: Specify no-data values (None = auto-detect)
-NODATA_VALUES = {
-    'trueColor': 0,
-    'colorInfrared': 0,
-    'naturalColor': 0
-    # Leave empty or set to None for auto-detection
-}
-
-
-
-
-

🏷️ Step 3b: Test the new functions to verify what the inputs and outputs will be.

-
-
print("βœ… Configuration defined")
-print(f"\nπŸ“‚ Categories and output paths:")
-for category, path in OUTPUT_DIRS.items():
-    pattern = CATEGORIZATION_PATTERNS.get(category, 'No pattern defined')
-    print(f"   β€’ {category}:")
-    print(f"     Pattern: {pattern}")
-    print(f"     Output:  {DESTINATION_BASE}/{path}")
-
-# Test with sample filename if files exist
-if files:
-    sample_file = files[0]
-    sample_name = os.path.basename(sample_file)
-    
-    # Check which category it would match
-    matched_category = None
-    for cat, pattern in CATEGORIZATION_PATTERNS.items():
-        if re.search(pattern, sample_name, re.IGNORECASE):
-            matched_category = cat
-            break
-    
-    if matched_category:
-        new_name = FILENAME_CREATORS[matched_category](sample_file, EVENT_NAME)
-        print(f"\nπŸ“ Example transformation:")
-        print(f"   Original: {sample_name}")
-        print(f"   Category: {matched_category}")
-        print(f"   β†’ New:    {new_name}")
-        print(f"   β†’ Output: {DESTINATION_BASE}/{OUTPUT_DIRS[matched_category]}/{new_name}")
-    else:
-        print(f"\n⚠️ Warning: Sample file doesn't match any category pattern:")
-        print(f"   File: {sample_name}")
-        print(f"   Add a pattern to CATEGORIZATION_PATTERNS to process this file type")
-
-
βœ… Configuration defined
-
-πŸ“‚ Categories and output paths:
-   β€’ trueColor:
-     Pattern: trueColor|truecolor|true_color
-     Output:  drcs_activations_new/Landsat/trueColor
-   β€’ colorInfrared:
-     Pattern: colorInfrared|colorIR|color_infrared
-     Output:  drcs_activations_new/Landsat/colorIR
-   β€’ naturalColor:
-     Pattern: naturalColor|natural_color
-     Output:  drcs_activations_new/Landsat/naturalColor
-
-
-
-
-

πŸš€ Step 4: Initialize Processor and Preview

-

Now let’s set up the processor and preview all transformations:

-
-
# Import our simplified helper
-from notebooks.notebook_helpers import SimpleProcessor
-
-# Create full configuration with categorization patterns
-config = {
-    'event_name': EVENT_NAME,
-    'bucket': BUCKET,
-    'source_path': SOURCE_PATH,
-    'destination_base': DESTINATION_BASE,
-    'overwrite': OVERWRITE,
-    'verify': VERIFY,
-    'save_results': SAVE_RESULTS,  # Add save results flag
-    'categorization_patterns': CATEGORIZATION_PATTERNS,  # IMPORTANT: Include patterns
-    'filename_creators': FILENAME_CREATORS,
-    'output_dirs': OUTPUT_DIRS,
-    'nodata_values': NODATA_VALUES
-}
-
-# Initialize processor
-processor = SimpleProcessor(config)
-
-# Connect to S3 (already connected, but needed for processor)
-if processor.connect_to_s3():
-    print("βœ… Processor ready\n")
-    
-    # Discover and categorize files
-    num_files = processor.discover_files()
-    
-    if num_files > 0:
-        # Show preview of transformations
-        processor.preview_processing()
-        
-        print("\nπŸ“Œ Review the transformations above.")
-        print("   β€’ Files will be saved to the directories specified in OUTPUT_DIRS")
-        print("   β€’ If files appear as 'uncategorized', add patterns to CATEGORIZATION_PATTERNS")
-        print("   β€’ When ready, proceed to Step 5 to process the files.")
-    else:
-        print("⚠️ No files found to process.")
-else:
-    print("❌ Could not initialize processor.")
-
-
βœ… All modules loaded successfully
-
-🌐 Connecting to S3...
-βœ… Connected to S3 successfully
-βœ… Processor ready
-
-
-πŸ” Searching for files in: geotiffs_to_convert/202408_TropicalStorm_Debby/landsat8
-⚠️ No .tif files found
-⚠️ No files found to process.
-
-
-
-
-

βš™οΈ Step 5: Process Files

-

Run this cell to start processing all files:

-
-
# Process all files
-if 'num_files' in locals() and num_files > 0:
-    print("πŸš€ Starting processing...")
-    print("This may take several minutes depending on file sizes.\n")
-    
-    # Process everything
-    results = processor.process_all()
-    
-    # Display results
-    if not results.empty:
-        print("\nπŸ“Š Processing Complete!")
-        display(results) if 'display' in dir() else print(results)
-else:
-    print("⚠️ No files to process. Complete Steps 1-4 first.")
-
-
πŸš€ Starting processing...
-This may take several minutes depending on file sizes.
-
-
-πŸš€ Starting processing...
-
-πŸ“¦ Processing colorInfrared (3 files)
-  ⏭️ Skipped: LC08_colorInfrared_20240715_155319_016036.tif (exists)
-  ⏭️ Skipped: LC08_colorInfrared_20240715_155343_016037.tif (exists)
-  ⏭️ Skipped: LC08_colorInfrared_20240715_15547_016038.tif (exists)
-
-πŸ“¦ Processing naturalColor (3 files)
-  ⏭️ Skipped: LC08_naturalColor_20240715_155319_016036.tif (exists)
-  ⏭️ Skipped: LC08_naturalColor_20240715_155343_016037.tif (exists)
-  ⏭️ Skipped: LC08_naturalColor_20240715_15547_016038.tif (exists)
-
-πŸ“¦ Processing trueColor (3 files)
-  ⏭️ Skipped: LC08_trueColor_20240715_155319_016036.tif (exists)
-  ⏭️ Skipped: LC08_trueColor_20240715_155343_016037.tif (exists)
-  ⏭️ Skipped: LC08_trueColor_20240715_15547_016038.tif (exists)
-
-============================================================
-βœ… PROCESSING COMPLETE
-============================================================
-
-Results:
-  ⏭️ Skipped: 9
-
-Processing time: 0.0 minutes
-
-πŸ“ Results saved to: output/202408_TropicalStorm_Debby/results_20250929_191143.csv
-============================================================
-
-πŸ“Š Processing Complete!
-                                     source_file       category   status  \
-0  LC08_colorInfrared_20240715_155319_016036.tif  colorInfrared  skipped   
-1  LC08_colorInfrared_20240715_155343_016037.tif  colorInfrared  skipped   
-2   LC08_colorInfrared_20240715_15547_016038.tif  colorInfrared  skipped   
-3   LC08_naturalColor_20240715_155319_016036.tif   naturalColor  skipped   
-4   LC08_naturalColor_20240715_155343_016037.tif   naturalColor  skipped   
-5    LC08_naturalColor_20240715_15547_016038.tif   naturalColor  skipped   
-6      LC08_trueColor_20240715_155319_016036.tif      trueColor  skipped   
-7      LC08_trueColor_20240715_155343_016037.tif      trueColor  skipped   
-8       LC08_trueColor_20240715_15547_016038.tif      trueColor  skipped   
-
-           reason                                        output_path  \
-0  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-1  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-2  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-3  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-4  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-5  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-6  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-7  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-8  already exists  s3://nasa-disasters/drcs_activations_new/Lands...   
-
-   time_seconds  
-0             0  
-1             0  
-2             0  
-3             0  
-4             0  
-5             0  
-6             0  
-7             0  
-8             0  
-
-
-
-
# Analyze results
-if 'results' in locals() and not results.empty:
-    print("πŸ“Š PROCESSING STATISTICS")
-    print("="*40)
-    
-    # Success rate
-    total = len(results)
-    success = len(results[results['status'] == 'success'])
-    failed = len(results[results['status'] == 'failed'])
-    skipped = len(results[results['status'] == 'skipped'])
-    
-    print(f"Total files: {total}")
-    print(f"βœ… Success: {success}")
-    print(f"❌ Failed: {failed}")
-    print(f"⏭️ Skipped: {skipped}")
-    print(f"\nSuccess rate: {(success/total*100):.1f}%")
-    
-    # Failed files
-    if failed > 0:
-        print("\n❌ Failed files:")
-        failed_df = results[results['status'] == 'failed']
-        for idx, row in failed_df.iterrows():
-            print(f"  - {row['source_file']}: {row.get('error', 'Unknown error')}")
-    
-    # Processing times
-    if 'time_seconds' in results.columns:
-        success_df = results[results['status'] == 'success']
-        if not success_df.empty:
-            avg_time = success_df['time_seconds'].mean()
-            max_time = success_df['time_seconds'].max()
-            print(f"\n⏱️ Timing:")
-            print(f"Average: {avg_time:.1f} seconds per file")
-            print(f"Slowest: {max_time:.1f} seconds")
-else:
-    print("No results to analyze. Run Step 5 first.")
-
-
-
-

πŸ’‘ Tips & Troubleshooting

-
-

Workflow Summary:

-
    -
  1. Setup - Clone disasters-aws-conversion repository (Step 0)
  2. -
  3. Configure basic settings (Step 1)
  4. -
  5. List files from S3 to see naming patterns (Step 2)
  6. -
  7. Define functions to transform filenames (Step 3)
  8. -
  9. Preview transformations (Step 4)
  10. -
  11. Process all files (Step 5)
  12. -
  13. Review results (Step 6)
  14. -
-
-
-

Common Issues:

-
    -
  1. β€œModuleNotFoundError: No module named β€˜core’” or import errors -
      -
    • Run Step 0 first to clone the disasters-aws-conversion repository
    • -
    • Restart kernel and run all cells from the beginning
    • -
  2. -
  3. β€œNo files found” -
      -
    • Check SOURCE_PATH in Step 1
    • -
    • Verify bucket permissions
    • -
    • Ensure files have .tif extension
    • -
  4. -
  5. Wrong filename transformations -
      -
    • Review actual filenames in Step 2
    • -
    • Adjust functions in Step 3
    • -
    • Re-run Step 4 to preview
    • -
  6. -
  7. Files being skipped -
      -
    • Files already exist in destination
    • -
    • Set OVERWRITE = True in Step 1
    • -
  8. -
  9. Processing errors -
      -
    • Check AWS credentials
    • -
    • Verify S3 write permissions
    • -
    • Check available disk space for temp files
    • -
  10. -
-
-
-

Need More Control?

-

Use the full template at disaster_processing_template.ipynb for: - Manual chunk configuration - Custom compression settings - Detailed memory management - Advanced processing options

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Presentations/aws-grafana-tutorial.html b/_site/Presentations/aws-grafana-tutorial.html deleted file mode 100644 index 6d14200..0000000 --- a/_site/Presentations/aws-grafana-tutorial.html +++ /dev/null @@ -1,1634 +0,0 @@ - - - - - - - - - - -AWS and Grafana Monitoring Tutorial – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

AWS and Grafana Monitoring Tutorial

-

Instructions & Guidance for AWS and Grafana Integration

-
- - - -
- -
-
Author
-
-

Kyle Lesinger

-
-
- - - -
- - - -
- - -
-

AWS and Grafana Monitoring Tutorial

-

This page provides introductory instructions and guidance for integrating Amazon Web Services (AWS) with Grafana for monitoring and observability.

-
-
-
- -
-
-NoteAbout This Tutorial -
-
-
-

This presentation covers AWS and Grafana monitoring setup, configuration, and best practices.

-Controls: -
    -
  • -Click the β€œοΈ™β€ menu for additional options such as Full Screen mode -
  • -
  • -Advance slides using your mouse cursor -
  • -
-
-
-
-

Tutorial Video Recording

-

Watch the complete walkthrough of this tutorial with live demonstrations and explanations:

-
-
-
- -
-
-WarningLarge Video File Notice -
-
-
-

Due to the video file size (150MB), it cannot be embedded directly. Please use the button below to watch the video in a new tab.

- -
-
-
- -
-
-

This recorded tutorial includes: - Walkthrough of AWS Console and AWS SSO - NASA SMCE and SMDC for Cloud Management - Common AWS S3 operators - Grafana setup and support

-

Duration: [43 minutes]

-
-
-
-
-
-
-

Powerpoint Presentation (no audio)

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Fullscreen mode: Click the fullscreen button in the embedded player above

  4. -
  5. Download: Open the link above and look for download options if available

  6. -
-
-
-
-
-
-
-
-

What You’ll Learn

-

This tutorial covers the following topics:

-
-

πŸ”§ Setup and Configuration

-
    -
  • AWS account setup and IAM configuration
  • -
  • Grafana installation and initial setup
  • -
  • Log aggregation and analysis
  • -
-
-
-

πŸš€ Advanced Topics

-
    -
  • Multi-account AWS monitoring
  • -
  • Cost management and optimization
  • -
  • Troubleshooting common issues
  • -
-
-
-
- -
-

Conclusion

-

This tutorial provides comprehensive guidance for setting up and using AWS with Grafana for monitoring and observability. The combination of AWS’s robust cloud infrastructure and Grafana’s powerful visualization capabilities creates a strong foundation for modern monitoring solutions.

-Key Takeaways: -
    -
  • -AWS and Grafana integration enables powerful monitoring -
  • -
  • -Proper configuration is essential for security and performance -
  • -
  • -Following best practices ensures scalable, maintainable solutions -
  • -
-

Good luck with your AWS and Grafana monitoring journey!

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Presentations/disasters-powerpoint-template.html b/_site/Presentations/disasters-powerpoint-template.html deleted file mode 100644 index 6347c43..0000000 --- a/_site/Presentations/disasters-powerpoint-template.html +++ /dev/null @@ -1,1533 +0,0 @@ - - - - - - - - - - -NASA Disasters PowerPoint Template – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

NASA Disasters PowerPoint Template

-

Instructions and Guidance for Design and Implementation

-
- - - -
- -
-
Author
-
-

Jacob Reid

-
-
- - - -
- - - -
- - -
-
-
- -
-
-Note -
-
-
-Controls: -
    -
  • -Click the β€œοΈ™β€ menu for additional options such as Full Screen mode -
  • -
  • -Advance slides using your mouse cursor -
  • -
-
-
-
-

Presentation Viewer

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Download: Click the link above, then go to File β†’ Download β†’ Microsoft PowerPoint (.pptx)

  4. -
  5. Present mode: Click the link above and press the β€œPresent” button in Google Slides for full-screen mode

  6. -
-
-
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Presentations/disasters-training-1.html b/_site/Presentations/disasters-training-1.html deleted file mode 100644 index 9ac3a49..0000000 --- a/_site/Presentations/disasters-training-1.html +++ /dev/null @@ -1,1476 +0,0 @@ - - - - - - - - - - - -AWS and Grafana Monitoring Tutorial – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

AWS and Grafana Monitoring Tutorial

-

Bi-weekely Disasters/VEDA Training

-
- - - -
- -
-
Author
-
-

Infrastructure Team

-
-
- -
-
Published
-
-

October 24, 2025

-
-
- - -
- - - -
- - - - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/Presentations/jupyterhub-data-conversions-tutorial.html b/_site/Presentations/jupyterhub-data-conversions-tutorial.html deleted file mode 100644 index e221ff8..0000000 --- a/_site/Presentations/jupyterhub-data-conversions-tutorial.html +++ /dev/null @@ -1,1643 +0,0 @@ - - - - - - - - - - -JupyterHub and Data Conversions Tutorial – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

JupyterHub and Data Conversions Tutorial

-

Instructions & Guidance for JupyterHub and Data Transformation

-
- - - -
- -
-
Author
-
-

Kyle Lesinger

-
-
- - - -
- - - -
- - -
-

JupyterHub and Data Conversions Tutorial

-

This page provides comprehensive instructions and guidance for using JupyterHub and performing data conversions for the Disasters project.

-
-
-
- -
-
-NoteAbout This Tutorial -
-
-
-

This presentation covers JupyterHub setup, data transformation workflows, and conversion best practices.

-Controls: -
    -
  • -Click the β€œοΈ™β€ menu for additional options such as Full Screen mode -
  • -
  • -Advance slides using your mouse cursor -
  • -
-
-
-
-

Tutorial Video Recording

-

Watch the complete walkthrough of this tutorial with live demonstrations and explanations:

-
-
-
- -
-
-WarningLarge Video File Notice -
-
-
-

Due to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.

- -
-
-
- -
-
-

This recorded tutorial includes: - Live demonstrations of JupyterHub setup and navigation - Step-by-step data conversion walkthroughs - Real-world examples of geospatial data processing - Troubleshooting common issues and best practices

-

Duration: [Add duration here]

-
-
-
-
-
-
-

Powerpoint Presentation (no audio)

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Fullscreen mode: Click the fullscreen button in the embedded player above

  4. -
  5. Download: Open the link above and look for download options if available

  6. -
-
-
-
-
-
-
-
-

What You’ll Learn

-

This tutorial covers the following topics:

-
-

πŸš€ JupyterHub Basics

-
    -
  • JupyterHub environment overview
  • -
  • Navigating the JupyterHub interface
  • -
  • Creating and managing notebooks
  • -
-
-
-

πŸ”„ Data Conversion Workflows

-
    -
  • Connecting to AWS S3 buckets
  • -
  • Retrieving data
  • -
  • Filename transformations
  • -
  • GeoTIFF generation and optimization
  • -
  • Working with COG (Cloud Optimized GeoTIFF)
  • -
-
-
-
- -
-

Conclusion

-

This tutorial provides comprehensive guidance for using JupyterHub and performing data conversions for the Disasters project.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/Presentations/stac-airflow-tutorial.html b/_site/Presentations/stac-airflow-tutorial.html deleted file mode 100644 index 99093e5..0000000 --- a/_site/Presentations/stac-airflow-tutorial.html +++ /dev/null @@ -1,1637 +0,0 @@ - - - - - - - - - - -STAC Database and Apache Airflow Tutorial – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

STAC Database and Apache Airflow Tutorial

-

Instructions & Guidance for STAC and Apache Airflow

-
- - - -
- -
-
Author
-
-

Kyle Lesinger

-
-
- - - -
- - - -
- - -
-

STAC Database and Apache Airflow Tutorial

-

This page provides comprehensive instructions and guidance for using VEDA STAC Database and Apache Airflow for the Disasters project.

-
-
-
- -
-
-Note -
-
-
-Controls: -
    -
  • -Click the β€œοΈ™β€ menu for additional options such as Full Screen mode -
  • -
  • -Advance slides using your mouse cursor -
  • -
-
-
-
-

Tutorial Video Recording

-

Watch the complete walkthrough of this tutorial with live demonstrations and explanations:

-
-
-
- -
-
-WarningLarge Video File Notice -
-
-
-

Due to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.

- -
-
-
- -
-
-

This recorded tutorial includes: - Introduction to STAC (SpatioTemporal Asset Catalog) concepts - STAC database structure and implementation - Apache Airflow setup and configuration - Building data pipelines with Airflow - Integrating STAC with Airflow workflows

-

Duration: [Add duration here]

-
-
-
-
-
-
-

Powerpoint Presentation (no audio)

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Fullscreen mode: Click the fullscreen button in the embedded player above

  4. -
  5. Download: Open the link above and look for download options if available

  6. -
-
-
-
-
-
-
-
-

What You’ll Learn

-

This tutorial covers the following topics:

-
-

πŸ“Š STAC Database Fundamentals

-
    -
  • Understanding STAC specification
  • -
  • STAC database architecture
  • -
  • Cataloging geospatial assets
  • -
-
-
-

βš™οΈ Apache Airflow Workflows

-
    -
  • Apache Airflow overview
  • -
  • DAG (Directed Acyclic Graph) creation
  • -
  • Task scheduling and orchestration
  • -
-
-
-
- -
-

Conclusion

-

This tutorial provides comprehensive guidance for using STAC Database and Apache Airflow for the Disasters project’s data pipeline management.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/_quarto.yml b/_site/_quarto.yml deleted file mode 100644 index aeebefa..0000000 --- a/_site/_quarto.yml +++ /dev/null @@ -1,194 +0,0 @@ -project: - type: website - resources: - - password-protect.html - - auth-check.js - -website: - page-navigation: true - back-to-top-navigation: true - title: "NASA Disasters Documentation" - site-url: "https://us-ghg-center.github.io/ghgc-docs" #should I change these - repo-url: https://github.com/us-ghg-center/ghgc-docs - repo-actions: [edit, issue] - - page-footer: - right: "This page is built with [Quarto](https://quarto.org/)." - left: "© CC-By US GHG Center, 2022-2023" #how should I change this - - sidebar: - logo: "logo/disasters_logo.png" - pinned: true - align: center - tools: - # - icon: info-circle - # href: https://www.earthdata.nasa.gov/esds/veda - # text: "earthdata.nasa.gov/esds/veda" - - icon: globe-americas - href: https://disasters.openveda.cloud/ - text: "NASA Disasters Portal" - - icon: github - href: https://github.com/Disasters-Learning-Portal - text: "Repository home" - - style: "docked" - search: true - collapse-level: 1 - contents: - - href: index.qmd - text: Welcome - - section: aws.qmd - text: AWS - contents: - - AWS/AWS_SSO_Setup_Guide.qmd - - AWS/AWS_SSO_Remote_Server.qmd - - AWS/aws-mfa-setup.qmd - - AWS/aws-s3-commands-guide.qmd - - section: git-github-comprehensive-guide.qmd - text: GitHub - contents: - - text: "The VEDA Project" - href: GitHub/veda-preview.qmd - - GitHub/setup.qmd - - GitHub/commands.qmd - - GitHub/resources.qmd - - section: jupyterhub.qmd - text: JupyterHub - contents: - - Jupyterhub/jupyterhub-training-guide.qmd - - Jupyterhub/setup-disaster-repo.qmd - - Jupyterhub/convert_to_geotiff.qmd - - Jupyterhub/simple_disaster_template.ipynb - - section: workflow2.qmd - text: Data Workflow Diagrams - contents: - - data_workflow2/NRT_data_download.qmd - - data_workflow2/NRT_directory_structure.qmd - - section: Documentation - contents: - - text: "Quarto Guide for Beginners" - href: quarto-guide.qmd - - section: User Services - contents: - - services/apis.qmd - - services/jupyterhub.qmd - - section: Presentations - contents: - - section: PowerPoints - contents: - - text: "Disasters Logo and Template Overview" - href: Presentations/disasters-powerpoint-template.qmd - - text: "AWS and Grafana Monitoring Tutorial" - href: Presentations/aws-grafana-tutorial.qmd - - text: "JupyterHub and Data Conversions Tutorial" - href: Presentations/jupyterhub-data-conversions-tutorial.qmd - - text: "STAC Database and Apache Airflow Tutorial" - href: Presentations/stac-airflow-tutorial.qmd - # - href: datausage.qmd - # text: Data Usage Notebooks - # - href: datatransformation.qmd - # text: Data Transformation Documentation - # - href: processingreport.qmd - # text: Processing and Verification Reports - # - href: workflow.qmd - # text: Data Workflow - # - href: advanceduser.qmd - # text: Advanced User Notebooks - - section: datausage.qmd - text: Data Usage Notebooks - contents: - - section: Disaster Case Studies - contents: - - text: "Texas Flood 2025" - href: user_data_notebooks/Texas_Flood_2025.ipynb - - text: "New Mexico Fire 2025" - href: user_data_notebooks/New_Mexico_Fire_2025.ipynb - - section: Community-Contributed Tutorials - contents: - - section: datatransformationcode.qmd - text: Data Transformation Notebooks - contents: - - cog_transformation/eccodarwin-co2flux-monthgrid-v5.ipynb - - text: Atmospheric Carbon Dioxide and Methane Concentrations from the NOAA Global Monitoring Laboratory - href: cog_transformation/noaa-gggrn-concentrations.ipynb - - cog_transformation/influx-testbed-ghg-concentrations.ipynb - - cog_transformation/lam-testbed-ghg-concentrations.ipynb - - cog_transformation/nec-testbed-ghg-concentrations.ipynb - - cog_transformation/ct-ch4-monthgrid-v2023.ipynb - - cog_transformation/emit-ch4plume-v1.ipynb - - cog_transformation/goes-ch4plume-v1.ipynb - - cog_transformation/gosat-based-ch4budget-yeargrid-v1.ipynb - - cog_transformation/gra2pes-ghg-monthgrid-v1.ipynb - - cog_transformation/oco2geos-co2-daygrid-v10r.ipynb - - cog_transformation/oco2-mip-co2budget-yeargrid-v1.ipynb - - cog_transformation/odiac-ffco2-monthgrid-v2024.ipynb - - text: "SEDAC Gridded World Population Density" - href: cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.ipynb - - cog_transformation/epa-ch4emission-grid-v2express.ipynb - - cog_transformation/vulcan-ffco2-yeargrid-v4.ipynb - - section: processingreport.qmd - text: Processing and Verification Reports - contents: - - processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.qmd - - text: "Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory" - href: processing_and_verification_reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.qmd - - processing_and_verification_reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.qmd - - processing_and_verification_reports/influx-testbed-ghg-concentrations_Processing and Verification Report.qmd - - processing_and_verification_reports/lam-testbed-ghg-concentrations_Processing and Verification Report.qmd - - processing_and_verification_reports/nec-testbed-ghg-concentrations_Processing and Verification Report.qmd - - processing_and_verification_reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.qmd - - processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/goes-ch4plume-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.qmd - - processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.qmd - - processing_and_verification_reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.qmd - - processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.qmd - - processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.qmd - - processing_and_verification_reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.qmd - - processing_and_verification_reports/lpjeosim-wetlandch4-grid-v1_Processing and Verification Report.qmd - - section: workflow.qmd - text: Data Flow Diagrams - contents: - - data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd - - data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.qmd - - data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.qmd - - data_workflow/influx-testbed-ghg-concentrations_Data_Flow.qmd - - data_workflow/lam-testbed-ghg-concentrations_Data_Flow.qmd - - data_workflow/nec-testbed-ghg-concentrations_Data_Flow.qmd - - data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd - - data_workflow/emit-ch4plume-v1_Data_Flow.qmd - - data_workflow/goes-ch4plume-v1_Data_Flow.qmd - - data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd - - data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.qmd - - data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.qmd - - data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.qmd - - data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd - - data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.qmd - - text: "SEDAC Gridded World Population Density" - href: data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd - - text: "U.S. Gridded Anthropogenic Methane Emissions Inventory" - href: data_workflow/epa-ch4emission-grid-v2express_Data_Flow.qmd - - data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.qmd - - data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd - -format: - html: - grid: - sidebar-width: 25vw - body-width: 900px - theme: - light: [flatly] - dark: [darkly] - css: styles.css - code-copy: true - code-overflow: wrap - toc: true - toc-depth: 3 - include-in-header: - - text: | - -filters: - - quarto diff --git a/_site/advanceduser.html b/_site/advanceduser.html deleted file mode 100644 index a492d37..0000000 --- a/_site/advanceduser.html +++ /dev/null @@ -1,1320 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Advanced User Notebook – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Advanced User Notebook

-
- - - -
- - - - -
- - - -
- - -

Welcome to the U.S. Greenhouse Gas (GHG) Center: Advanced User Notebook, your gateway to exploring and analyzing curated datasets on greenhouse gas emissions. Our cloud-based system offers seamless access to Greenhouse Gas curated datasets. Dive into the data with our data usage Jupyter notebooks, designed for efficient exploration, visualization, and analysis. Whether you are focused on specific focus areas or product types, our dataset usage notebooks provide invaluable insights to drive informed decision-making.

-

Join us in our mission to make data-driven environmental solutions. Explore, analyze, and make a difference with the US GHG Center.

-

View the US GHG Center Data Catalogg

-
-

Gridded Anthropogenic Greenhouse Gas Emissions

-
    -
  1. OCO-2 MIP Top-Down National COβ‚‚ Budgets - Model Output
  2. -
-
-
-

Natural Greenhouse Gas Emissions and Sinks

-
-
-

Large Emissions Events

-
-
-

Greenhouse Gas Concentrations

-
-
-

Socioeconomic

-
-
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/aws-grafana-tutorial.html b/_site/aws-grafana-tutorial.html deleted file mode 100644 index 8d95cb9..0000000 --- a/_site/aws-grafana-tutorial.html +++ /dev/null @@ -1,1713 +0,0 @@ - - - - - - - - - - - -AWS and Grafana Monitoring Tutorial – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

AWS and Grafana Monitoring Tutorial

-

Instructions & Guidance for AWS and Grafana Integration

-
- - - -
- -
-
Author
-
-

Infrastructure Team

-
-
- -
-
Published
-
-

October 20, 2025

-
-
- - -
- - - -
- - -
-

AWS and Grafana Monitoring Tutorial

-

This page provides comprehensive instructions and guidance for integrating Amazon Web Services (AWS) with Grafana for monitoring and observability.

-
-
-
- -
-
-NoteAbout This Tutorial -
-
-
-

This presentation covers AWS and Grafana monitoring setup, configuration, and best practices. The presentation is hosted on Google Slides and embedded here for easy access.

-

Controls: - Use arrow keys or click arrows to navigate slides - Click the β€œοΈ™β€ menu for additional options - Press Esc to exit fullscreen mode

-

Version: V1.0, Updated Oct. 25, 2025

-
-
-
-

Tutorial Presentation

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Fullscreen mode: Click the fullscreen button in the embedded player above

  4. -
  5. Download: Open the link above and look for download options if available

  6. -
-
-
-
-
-
-
-
-

What You’ll Learn

-

This tutorial covers the following topics:

-
-

πŸ”§ Setup and Configuration

-
    -
  • AWS account setup and IAM configuration
  • -
  • Grafana installation and initial setup
  • -
  • CloudWatch data source configuration
  • -
  • Authentication and security best practices
  • -
-
-
-

πŸ“Š Monitoring and Dashboards

-
    -
  • Creating custom Grafana dashboards
  • -
  • CloudWatch metrics integration
  • -
  • Log aggregation and analysis
  • -
  • Setting up alerts and notifications
  • -
-
-
-

πŸš€ Advanced Topics

-
    -
  • Multi-account AWS monitoring
  • -
  • Performance optimization
  • -
  • Cost management and optimization
  • -
  • Troubleshooting common issues
  • -
-
-
-

πŸ’‘ Best Practices

-
    -
  • Security and compliance
  • -
  • Dashboard design principles
  • -
  • Scalability considerations
  • -
  • Operational excellence
  • -
-
-
-
-
-

Prerequisites

-

Before starting this tutorial, ensure you have:

-
    -
  • AWS Account with appropriate IAM permissions
  • -
  • Basic understanding of AWS services (EC2, CloudWatch, IAM)
  • -
  • Grafana installed or access to a Grafana instance
  • -
  • Network access to AWS APIs and Grafana
  • -
-
-
-
-

Technical Details

-
-

Embedding Method

-

This presentation is embedded using Google Slides’ publish-to-web feature with auto-advance enabled:

-
<iframe src="https://docs.google.com/presentation/d/e/[ID]/pubembed?start=true&loop=false&delayms=3000"
-        width="1280"
-        height="749"
-        allowfullscreen="true">
-</iframe>
-
-
-

URL Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterValueDescription
starttrueAuto-start presentation when loaded
loopfalseDon’t loop slides continuously
delayms30003-second delay between auto-advanced slides
-
-
-

Embed Features

-

This embed uses: - Published URL (/pubembed) - Publicly accessible without authentication - Auto-advance - Presentation starts automatically - Large format - 1280x749 for better readability - Fullscreen support - Expandable for detailed viewing

-
-
-
- -
-

Getting Started Checklist

-
-
-
- -
-
-ImportantBefore You Begin -
-
-
-

Complete these steps to get the most out of this tutorial:

-
    -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
-
-
-
-

Support and Questions

-
-

Need Help?

-

If you encounter issues or have questions:

-
    -
  1. Review the presentation - Most common questions are addressed in the slides
  2. -
  3. Check AWS documentation - Official docs have detailed troubleshooting
  4. -
  5. Grafana community - Active community forums for Grafana-specific questions
  6. -
  7. NASA Disasters team - Contact the infrastructure team for project-specific help
  8. -
-
-
-

Feedback

-

We welcome feedback on this tutorial! If you have suggestions for improvements or find any issues, please reach out to the infrastructure team.

-
-
-
-
-

Conclusion

-

This embedded tutorial provides comprehensive guidance for setting up and using AWS with Grafana for monitoring and observability. The combination of AWS’s robust cloud infrastructure and Grafana’s powerful visualization capabilities creates a strong foundation for modern monitoring solutions.

-

Key Takeaways: - AWS and Grafana integration enables powerful monitoring - Proper configuration is essential for security and performance - Following best practices ensures scalable, maintainable solutions - Continuous learning and improvement drive operational excellence

-

Good luck with your AWS and Grafana monitoring journey!

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/aws-presentation-embed.html b/_site/aws-presentation-embed.html deleted file mode 100644 index e2e83d9..0000000 --- a/_site/aws-presentation-embed.html +++ /dev/null @@ -1,1680 +0,0 @@ - - - - - - - - - - - -NASA Disasters PowerPoint Template – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

NASA Disasters PowerPoint Template

-

Instructions and Guidance for Design and Implementation

-
- - - -
- -
-
Author
-
-

Infrastructure Team

-
-
- -
-
Published
-
-

October 20, 2025

-
-
- - -
- - - -
- - -
-

Embedded AWS Presentation

-

This page demonstrates embedding an external PowerPoint presentation hosted on Google Drive.

-
-
-
- -
-
-NoteAbout This Presentation -
-
-
-

This presentation is hosted on Google Drive and embedded here as a proof of concept. The presentation will load directly in the page below.

-

Controls: - Use arrow keys or click arrows to navigate slides - Click the β€œοΈ™β€ menu for additional options

-
-
-
-

Presentation Viewer

-
- -
-
- -
-
-

If the embedded presentation doesn’t load properly, you can:

-
    -
  1. Open in new tab: View presentation in Google Slides β†’

  2. -
  3. Download: Click the link above, then go to File β†’ Download β†’ Microsoft PowerPoint (.pptx)

  4. -
  5. Present mode: Click the link above and press the β€œPresent” button in Google Slides for full-screen mode

  6. -
-
-
-
-
-
-
-
-

Technical Details

-
-

Embedding Method

-

This presentation is embedded using an HTML <iframe> element that points to the Google Slides embed URL:

-
<iframe src="https://docs.google.com/presentation/d/[ID]/embed?start=false&loop=false&delayms=3000"
-        width="960"
-        height="569"
-        allowfullscreen="true">
-</iframe>
-
-
-

URL Parameters

- - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterValueDescription
startfalseDon’t auto-start presentation
loopfalseDon’t loop slides
delayms3000Delay between slides in auto-play (ms)
-
-
-

Embedding Other Presentations

-

To embed your own Google Slides presentation:

-
    -
  1. Get the presentation ID from your Google Slides URL:

    -
    https://docs.google.com/presentation/d/[THIS-IS-THE-ID]/edit
  2. -
  3. Create the embed URL:

    -
    https://docs.google.com/presentation/d/[YOUR-ID]/embed?start=false&loop=false&delayms=3000
  4. -
  5. Add to your .qmd file:

    -
    <iframe src="YOUR-EMBED-URL"
    -        width="960"
    -        height="569"
    -        allowfullscreen="true">
    -</iframe>
  6. -
  7. Ensure sharing is enabled: The presentation must be set to β€œAnyone with the link can view”

  8. -
-
-
-

Responsive Sizing

-

For responsive iframe sizing, you can use CSS:

-
.responsive-iframe {
-  position: relative;
-  width: 100%;
-  padding-bottom: 56.25%; /* 16:9 aspect ratio */
-  height: 0;
-}
-
-.responsive-iframe iframe {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-}
-

Then wrap your iframe:

-
<div class="responsive-iframe">
-  <iframe src="..."></iframe>
-</div>
-
-
-
-

Limitations and Considerations

-
-
-
- -
-
-WarningImportant Limitations -
-
-
-
    -
  1. Requires internet connection - Embedded presentations load from Google servers
  2. -
  3. Sharing permissions - Presentation must be publicly accessible or shared with viewers
  4. -
  5. Google account dependency - If the presentation owner deletes their account or changes permissions, the embed will break
  6. -
  7. Limited offline support - Unlike locally hosted files, embedded presentations won’t work offline
  8. -
  9. Third-party dependency - Relies on Google’s infrastructure and terms of service
  10. -
-
-
-
-

Best Practices

-

βœ… Do: - Use for external presentations you don’t control - Test embedding before sharing widely - Provide alternative download/view links - Document the source and owner

-

❌ Don’t: - Embed sensitive or proprietary information - Rely solely on embedded content for critical documentation - Assume it will work indefinitely without maintenance - Embed presentations without permission

-
-
-
-

Alternative Embedding Methods

-
-

Option 1: PDF Embed

-

Convert PowerPoint to PDF and embed:

-
<iframe src="presentation.pdf"
-        width="100%"
-        height="600px">
-</iframe>
-
-
-

Option 2: Quarto Native Presentation

-

Create a native Quarto presentation using .qmd files with presentation formats like PowerPoint or Reveal.js.

-

Advantages: - Full version control - Offline support - Customizable with Quarto features - No external dependencies

-

See the Quarto Guide for Beginners for more details on creating presentations.

-
-
-

Option 3: Static Images

-

Export slides as images and display them:

-
![Slide 1](images/slide-1.png)
-
-![Slide 2](images/slide-2.png)
-
-
-
-
-

Conclusion

-

This page successfully demonstrates embedding a PowerPoint presentation from Google Drive into a Quarto document. This method works well for:

-
    -
  • Sharing presentations created by others
  • -
  • Quick embedding without conversion
  • -
  • Maintaining a single source presentation
  • -
-

For production use, consider the tradeoffs between embedded content and native Quarto presentations based on your needs for control, offline access, and long-term maintenance.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/aws.html b/_site/aws.html deleted file mode 100644 index efc8fcd..0000000 --- a/_site/aws.html +++ /dev/null @@ -1,1581 +0,0 @@ - - - - - - - - - -AWS Authentication and S3 Operations Guides – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

AWS Authentication and S3 Operations Guides

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for AWS access configuration and data management resources.
-This collection of guides provides step-by-step instructions for securely managing AWS authentication (using MFA or SSO) and for operating with Amazon S3 using the AWS Command Line Interface (CLI).

-

Each guide is designed to help users configure secure AWS environments, automate access through scripts or profiles, and perform efficient data operations across AWS services.

-
-

AWS Access and Security Configuration Guides

-

Tutorial-style guides demonstrating secure authentication methods and credential management for AWS users.

-
    -
  • AWS Multi-Factor Authentication (MFA) Setup and Usage -
      -
    • Guide
      -Learn how to enable and use AWS MFA for secure, temporary session credentials.
      -This guide explains how to:
    • -
    • Configure MFA devices (virtual or hardware)
      -
    • -
    • Create and use the aws_mfa.sh script for automatic token-based authentication
      -
    • -
    • Integrate temporary credentials into your shell or Jupyter notebooks
      -
    • -
    • Implement best practices for session management and credential security
      -
    • -
  • -
  • AWS Single Sign-On (SSO) Configuration with AWS Identity Center -
      -
    • Guide
      -Step-by-step instructions for setting up and using AWS Identity Center (formerly AWS SSO) for passwordless, secure access.
      -This guide includes:
    • -
    • AWS CLI SSO configuration walkthrough
      -
    • -
    • Using browser-based authentication
      -
    • -
    • Managing multiple AWS accounts and IAM roles
      -
    • -
    • Daily login and logout workflow for SSO sessions
      -
    • -
    • Best practices for avoiding plain-text credentials and ensuring secure session management
      -
    • -
  • -
-
-
-

AWS Data Operations and Management

-

Practical reference for working with Amazon S3 using the AWS CLI, including data upload, access control, and cost optimization.

-
    -
  • AWS S3 Commands and Operations Guide -
      -
    • Guide
      -A complete reference of commonly used AWS S3 CLI commands for bucket and object management.
      -Key sections include:
    • -
    • CLI installation and configuration
      -
    • -
    • File operations (cp, mv, rm, sync)
      -
    • -
    • Recursive uploads and downloads
      -
    • -
    • Access control, encryption, and bucket policies
      -
    • -
    • Performance and cost management techniques
      -
    • -
    • Security best practices and troubleshooting methods
      -
    • -
  • -
-
-
-

Best Practices Summary

-

When working with AWS authentication and S3: - Use temporary credentials through MFA or SSO β€” avoid storing permanent keys.
-- Enable encryption and versioning for critical S3 data.
-- Regularly rotate access keys and restrict IAM permissions by least privilege.
-- Test access with aws sts get-caller-identity and validate your session before running commands.
-- Review CloudTrail and CloudWatch logs to monitor activity.

-
-
-

Community-Contributed Scripts and Tools

-

Community utilities and automation scripts for enhanced AWS usability may be added here in the future.
-These will include: - MFA and SSO integration helpers
-- Automated credential refreshers
-- Advanced S3 sync and cost-analysis scripts

-
-
-

Contact

-

For questions, feedback, or contribution inquiries, please contact your AWS system administrator or submit requests through your organization’s AWS support channel.
-Always follow internal security policies and AWS best practices when managing credentials or data access.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/casagfed-carbonflux-monthgrid-v3.html b/_site/cog_transformation/casagfed-carbonflux-monthgrid-v3.html deleted file mode 100644 index a182a3f..0000000 --- a/_site/cog_transformation/casagfed-carbonflux-monthgrid-v3.html +++ /dev/null @@ -1,1418 +0,0 @@ - - - - - - - - - - - - -CASA-GFED3 Land Carbon Flux – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

CASA-GFED3 Land Carbon Flux

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 30, 2023

-
-
- - -
- - - -
- - -

Code used to transform CASA-GFED3 Land Carbon Flux data from netcdf to Cloud Optimized Geotiff.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = "ghgc-data-store-dev"
-date_fmt = "%Y%m"
-
-files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])
-for name in os.listdir("geoscarb"):
-    xds = xarray.open_dataset(
-        f"geoscarb/{name}",
-        engine="netcdf4",
-    )
-    xds = xds.assign_coords(
-        longitude=(((xds.longitude + 180) % 360) - 180)
-    ).sortby("longitude")
-    variable = [var for var in xds.data_vars]
-
-    for time_increment in range(0, len(xds.time)):
-        for var in variable[:-1]:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = getattr(xds.isel(time=time_increment), var)
-            data = data.isel(latitude=slice(None, None, -1))
-            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            date = data.time.dt.strftime(date_fmt).item(0)
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = date
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"GEOS-Carbs/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key="GEOS-Carbs/metadata.json",
-    )
-files_processed.to_csv(
-    f"s3://{bucket_name}/GEOS-Carbs/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/ct-ch4-monthgrid-v2023.html b/_site/cog_transformation/ct-ch4-monthgrid-v2023.html deleted file mode 100644 index 34562ca..0000000 --- a/_site/cog_transformation/ct-ch4-monthgrid-v2023.html +++ /dev/null @@ -1,1438 +0,0 @@ - - - - - - - - - - - - -CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-from datetime import datetime
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "tm5-ch4-inverse-flux"
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(FOLDER_NAME):
-    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
-    xds = xds.rename({"latitude": "lat", "longitude": "lon"})
-    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-    variable = [var for var in xds.data_vars if "global" not in var]
-
-    for time_increment in range(0, len(xds.months)):
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        start_time = datetime(int(filename_elements[-2]), time_increment + 1, 1)
-        for var in variable:
-            data = getattr(xds.isel(months=time_increment), var)
-            data = data.isel(lat=slice(None, None, -1))
-            data.rio.set_spatial_dims("lon", "lat", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = start_time.strftime("%Y%m")
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{FOLDER_NAME}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{FOLDER_NAME}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html b/_site/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html deleted file mode 100644 index 92a6071..0000000 --- a/_site/cog_transformation/eccodarwin-co2flux-monthgrid-v5.html +++ /dev/null @@ -1,1451 +0,0 @@ - - - - - - - - - - - - -Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5 – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the Air-Sea COβ‚‚ Flux, ECCO-Darwin Mode dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-import rasterio
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "ecco-darwin"
-s3_fol_name = "ecco_darwin"
-
-# Reading the raw netCDF files from local machine
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-for name in os.listdir(FOLDER_NAME):
-    xds = xarray.open_dataset(
-        f"{FOLDER_NAME}/{name}",
-        engine="netcdf4",
-    )
-    xds = xds.rename({"y": "latitude", "x": "longitude"})
-    xds = xds.assign_coords(longitude=((xds.longitude / 1440) * 360) - 180).sortby(
-        "longitude"
-    )
-    xds = xds.assign_coords(latitude=((xds.latitude / 721) * 180) - 90).sortby(
-        "latitude"
-    )
-
-    variable = [var for var in xds.data_vars]
-
-    for time_increment in xds.time.values:
-        for var in variable[2:]:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = xds[var]
-
-            data = data.reindex(latitude=list(reversed(data.latitude)))
-            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            # generate COG
-            COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-
-            filename_elements.pop()
-            filename_elements[-1] = filename_elements[-2] + filename_elements[-1]
-            filename_elements.pop(-2)
-            # # insert date of generated COG into filename
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(temp_file.name, **COG_PROFILE)
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{s3_fol_name}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-            del data
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key="s3_fol_name/metadata.json",
-    )
-
-# A csv file to store the names of all the files converted.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{s3_fol_name}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/emit-ch4plume-v1.html b/_site/cog_transformation/emit-ch4plume-v1.html deleted file mode 100644 index 2037df7..0000000 --- a/_site/cog_transformation/emit-ch4plume-v1.html +++ /dev/null @@ -1,1398 +0,0 @@ - - - - - - - - - - - - -EMIT Methane Point Source Plume Complexes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

EMIT Methane Point Source Plume Complexes

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to read the EMIT Methane Point Source Plume Complexes dataset provided in Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-
-
-
session_ghgc = boto3.session.Session(profile_name="ghg_user")
-s3_client_ghgc = session_ghgc.client("s3")
-session_veda_smce = boto3.session.Session()
-s3_client_veda_smce = session_veda_smce.client("s3")
-
-# Since the plume emissions were already COGs, we just had to transform their naming convention to be stored in the STAC collection.
-SOURCE_BUCKET_NAME = "ghgc-data-staging-uah"
-TARGET_BUCKET_NAME = "ghgc-data-store-dev"
-
-
-keys = []
-resp = s3_client_ghgc.list_objects_v2(Bucket=SOURCE_BUCKET_NAME)
-for obj in resp["Contents"]:
-    if "l3" in obj["Key"]:
-        keys.append(obj["Key"])
-
-for key in keys:
-    s3_obj = s3_client_ghgc.get_object(Bucket=SOURCE_BUCKET_NAME, Key=key)[
-        "Body"
-    ]
-    filename = key.split("/")[-1]
-    filename_elements = re.split("[_ .]", filename)
-
-    date = re.search("t\d\d\d\d\d\d\d\dt", key).group(0)
-    filename_elements.insert(-1, date[1:-1])
-    filename_elements.pop()
-
-    cog_filename = "_".join(filename_elements)
-    # # add extension
-    cog_filename = f"{cog_filename}.tif"
-    s3_client_veda_smce.upload_fileobj(
-        Fileobj=s3_obj,
-        Bucket=TARGET_BUCKET_NAME,
-        Key=f"plum_data/{cog_filename}",
-    )
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/epa-ch4emission-grid-v2express.html b/_site/cog_transformation/epa-ch4emission-grid-v2express.html deleted file mode 100644 index cdda1c7..0000000 --- a/_site/cog_transformation/epa-ch4emission-grid-v2express.html +++ /dev/null @@ -1,1708 +0,0 @@ - - - - - - - - - - - - -U.S. Gridded Anthropogenic Methane Emissions Inventory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Gridded Anthropogenic Methane Emissions Inventory

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory monthly dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-from datetime import datetime
-import numpy as np
-
-from dotenv import load_dotenv
-
-load_dotenv()
-
-
True
-
-
-
-
# session = boto3.session.Session()
-session = boto3.Session(
-    aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
-    aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY"),
-    aws_session_token=os.environ.get("AWS_SESSION_TOKEN"),
-)
-s3_client = session.client("s3")
-bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are stored after transformation
-FOLDER_NAME = "../data/epa_emissions_express_extension"
-s3_folder_name = "epa_express_extension_Mg_km2_yr"
-# raw gridded data [molec/cm2/s] * 1/6.022x10^23 [molec/mol] * 16.04x10^-6 [ Mg/mol] * 366 [days/yr] * 1x10^10 [cm2/km2]
-
-files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(FOLDER_NAME):
-    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
-    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-    variable = [var for var in xds.data_vars]
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), 1, 1)
-
-    for time_increment in range(0, len(xds.time)):
-        for var in variable:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = getattr(xds.isel(time=time_increment), var)
-            data.values[data.values==0] = np.nan
-            data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10)*86400)
-            data = data.fillna(-9999)
-            data = data.isel(lat=slice(None, None, -1))
-            data.rio.set_spatial_dims("lon", "lat", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = start_time.strftime("%Y")
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{s3_folder_name}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{s3_folder_name}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
-)
-print("Done generating COGs")
-
-
Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2015.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2020.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2014.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2013.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2017.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2016.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2012.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2019.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Mobile_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1A_Combustion_Stationary_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Abandoned_Coal_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Surface_Coal_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B1a_Underground_Coal_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Exploration_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Production_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Refining_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2a_Petroleum_Systems_Transport_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2ab_Abandoned_Oil_Gas_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Distribution_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Exploration_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Processing_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_Production_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_1B2b_Natural_Gas_TransmissionStorage_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_2B8_Industry_Petrochemical_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_2C2_Industry_Ferroalloy_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_3A_Enteric_Fermentation_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_3B_Manure_Management_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_3C_Rice_Cultivation_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_3F_Field_Burning_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_Industrial_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_5A1_Landfills_MSW_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_5B1_Composting_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Domestic_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_5D_Wastewater_Treatment_Industrial_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_emi_ch4_Supp_1B2b_PostMeter_Gridded_GHGI_Methane_v2_2018.tif
-Generated and saved COG: Express_Extension_grid_cell_area_Gridded_GHGI_Methane_v2_2018.tif
-Done generating COGs
-
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html b/_site/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html deleted file mode 100644 index 4e3dcb3..0000000 --- a/_site/cog_transformation/epa-ch4emission-grid-v2express_layers_update.html +++ /dev/null @@ -1,1494 +0,0 @@ - - - - - - - - - - - - -Gridded Anthropogenic Methane Emissions Inventory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Gridded Anthropogenic Methane Emissions Inventory

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to add concatenated layers and transform Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-from datetime import datetime
-import numpy as np
-
-from dotenv import load_dotenv
-
-load_dotenv()
-
-
True
-
-
-
-
# session = boto3.session.Session()
-session = boto3.Session(
-    aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"),
-    aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY"),
-    aws_session_token=os.environ.get("AWS_SESSION_TOKEN"),
-)
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "../data/epa_emissions_express_extension"
-s3_folder_name = "epa_express_extension_Mg_km2_yr"
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(FOLDER_NAME):
-    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
-    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-    variable = [var for var in xds.data_vars]
-    new_variables = {
-        "all-variables": variable[:-1],
-        "agriculture": variable[17:21],
-        "natural-gas-systems": variable[10:15] + [variable[26]],
-        "petroleum-systems": variable[5:9],
-        "waste": variable[21:26],
-        "coal-mines": variable[2:5],
-        "other": variable[:2] + [variable[9]] + variable[15:17],
-    }
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), 1, 1)
-
-    for time_increment in range(0, len(xds.time)):
-        for key, value in new_variables.items():
-            data = np.zeros(dtype=np.float32, shape=(len(xds.lat), len(xds.lon)))
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            for var in value:
-                data = data + getattr(xds.isel(time=time_increment), var)
-            # data = np.round(data / pow(10, 9), 2)
-            data.values[data.values==0] = np.nan
-            data = data*((1/(6.022*pow(10,23)))*(16.04*pow(10,-6))*366*pow(10,10)*86400)
-            data = data.fillna(-9999)
-            data = data.isel(lat=slice(None, None, -1))
-            data.rio.set_spatial_dims("lon", "lat", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = start_time.strftime("%Y")
-            filename_elements.insert(2, key)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{s3_folder_name}/{cog_filename}",
-                )
-
-                files_processed = files_processed._append(
-                    {"file_name": name, "COGs_created": cog_filename},
-                    ignore_index=True,
-                )
-
-                print(f"Generated and saved COG: {cog_filename}")
-print("Done generating COGs")
-
-
Traceback (most recent call last):
-  File "_pydevd_bundle/pydevd_cython.pyx", line 1078, in _pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch
-  File "_pydevd_bundle/pydevd_cython.pyx", line 297, in _pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend
-  File "/Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 1976, in do_wait_suspend
-    keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)
-  File "/Users/vgaur/miniconda3/envs/cmip6/lib/python3.9/site-packages/debugpy/_vendored/pydevd/pydevd.py", line 2011, in _do_wait_suspend
-    time.sleep(0.01)
-KeyboardInterrupt
-
-
-
-
---------------------------------------------------------------------------
-KeyboardInterrupt                         Traceback (most recent call last)
-/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb Cell 4 line 4
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=45'>46</a> # data = data*(9.74*pow(10,-11))
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=46'>47</a> # data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=47'>48</a> data = data.fillna(-9999)
----> <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=48'>49</a> data = data.isel(lat=slice(None, None, -1))
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=49'>50</a> data.rio.set_spatial_dims("lon", "lat", inplace=True)
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=50'>51</a> data.rio.write_crs("epsg:4326", inplace=True)
-
-/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb Cell 4 line 4
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=45'>46</a> # data = data*(9.74*pow(10,-11))
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=46'>47</a> # data.values[data.values<=np.nanpercentile(data.values, 50)] = np.nan
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=47'>48</a> data = data.fillna(-9999)
----> <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=48'>49</a> data = data.isel(lat=slice(None, None, -1))
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=49'>50</a> data.rio.set_spatial_dims("lon", "lat", inplace=True)
-     <a href='vscode-notebook-cell:/Users/vgaur/ghgc-docs/cog_transformation/epa-ch4emission-grid-v2express_layers_update.ipynb#W3sZmlsZQ%3D%3D?line=50'>51</a> data.rio.write_crs("epsg:4326", inplace=True)
-
-File _pydevd_bundle/pydevd_cython.pyx:1363, in _pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__()
-
-File _pydevd_bundle/pydevd_cython.pyx:662, in _pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch()
-
-File _pydevd_bundle/pydevd_cython.pyx:1087, in _pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch()
-
-File _pydevd_bundle/pydevd_cython.pyx:1078, in _pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch()
-
-File _pydevd_bundle/pydevd_cython.pyx:297, in _pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend()
-
-File ~/miniconda3/envs/cmip6/lib/python3.9/site-packages/debugpy/_vendored/pydevd/pydevd.py:1976, in PyDB.do_wait_suspend(self, thread, frame, event, arg, exception_type)
-   1973             from_this_thread.append(frame_custom_thread_id)
-   1975     with self._threads_suspended_single_notification.notify_thread_suspended(thread_id, stop_reason):
--> 1976         keep_suspended = self._do_wait_suspend(thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)
-   1978 frames_list = None
-   1980 if keep_suspended:
-   1981     # This means that we should pause again after a set next statement.
-
-File ~/miniconda3/envs/cmip6/lib/python3.9/site-packages/debugpy/_vendored/pydevd/pydevd.py:2011, in PyDB._do_wait_suspend(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)
-   2008         self._call_mpl_hook()
-   2010     self.process_internal_commands()
--> 2011     time.sleep(0.01)
-   2013 self.cancel_async_evaluation(get_current_thread_id(thread), str(id(frame)))
-   2015 # process any stepping instructions
-
-KeyboardInterrupt: 
-
-
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/epa-ch4emission-monthgrid-v2.html b/_site/cog_transformation/epa-ch4emission-monthgrid-v2.html deleted file mode 100644 index bcdc6ce..0000000 --- a/_site/cog_transformation/epa-ch4emission-monthgrid-v2.html +++ /dev/null @@ -1,1428 +0,0 @@ - - - - - - - - - - - - -Gridded Anthropogenic Methane Emissions Inventory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Gridded Anthropogenic Methane Emissions Inventory

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the Gridded Anthropogenic Methane Emissions Inventory dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "epa_emissions/monthly_scale"
-s3_folder_name = "epa-emissions-monthly-scale-factors"
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(FOLDER_NAME):
-    xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
-    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-    variable = [var for var in xds.data_vars]
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), 1, 1)
-
-    for time_increment in range(0, len(xds.time)):
-        for var in variable:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = getattr(xds.isel(time=time_increment), var)
-            data = data.isel(lat=slice(None, None, -1))
-            data.rio.set_spatial_dims("lon", "lat", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-            date = start_time + relativedelta(months=+time_increment)
-
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = date.strftime("%Y%m")
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{s3_folder_name}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{s3_folder_name}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/goes-ch4plume-v1.html b/_site/cog_transformation/goes-ch4plume-v1.html deleted file mode 100644 index df87490..0000000 --- a/_site/cog_transformation/goes-ch4plume-v1.html +++ /dev/null @@ -1,4318 +0,0 @@ - - - - - - - - - - - - -Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

November 15, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the GOES Methane Point Source Plume dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import numpy as np
-import glob
-import os
-import rasterio
-from rasterio.warp import calculate_default_transform, reproject, Resampling
-from pyproj import CRS
-import xarray as xr
-import rioxarray  
-from datetime import datetime, timedelta
-from rasterio.enums import Resampling
-from rio_cogeo.cogeo import cog_translate
-from rio_cogeo.profiles import cog_profiles
-import tempfile
-
-
-
all_files= glob.glob("labelled_plumes2/*/*/*.nc")
-
-
-
plume_metadata = {
-    "BV1": {
-        "2019-04-07": {
-            "Plume_id": "BV1-1",
-            "Plume_Lat": "26.298" ,
-            "Plume_Lon": "-104.530" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-21": {
-            "Plume_id": "BV1-2",
-            "Plume_Lat": "26.298", 
-            "Plume_Lon": "-104.530",
-            "state": "Durango",
-            "country": "Mexico"
-        }
-    },
-    "BV2": {
-        "2019-04-09": {
-            "Plume_id": "BV2-1",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.317",
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-04-10": {
-            "Plume_id": "BV2-2",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.317" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-04-18": {
-            "Plume_id": "BV2-3",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.317" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-11": {
-            "Plume_id": "BV2-4", 
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.317" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-12": {
-            "Plume_id": "BV2-5",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.317" ,
-            "state": "Durango",
-            "country": "Mexico"
-        }
-    },
-    "BV4": {
-        "2019-05-16": {
-            "Plume_id": "BV4-1",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.356" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-22": {
-            "Plume_id": "BV4-2",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.356" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-23": {
-            "Plume_id": "BV4-3",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.356" ,
-            "state": "Durango",
-            "country": "Mexico"
-        },
-        "2019-05-24": {
-            "Plume_id": "BV4-4",
-            "Plume_Lat": "26.086", 
-            "Plume_Lon": "-104.356" ,
-            "state": "Durango",
-            "country": "Mexico"
-        }
-    },
-    "IN-1": {
-        "2020-06-15": {
-            "Plume_id": "IN-1",
-            "Plume_Lat": "40.650", 
-            "Plume_Lon": "-87.000" ,
-            "state": "Indiana",
-            "country": "USA"
-        }
-    },
-    "IN-2": {
-    "2020-06-15": {
-        "Plume_id": "IN-2",
-        "Plume_Lat": "40.650", 
-        "Plume_Lon": "-87.000" ,
-            "state": "Indiana",
-            "country": "USA"
-    }
-},
-    "Permian": {
-        "2023-07-26": {
-            "Plume_id": "PB-1",
-            "Plume_Lat": "33.645", 
-            "Plume_Lon": "-104.779" ,
-            "state": "Texas",
-            "country": "USA"
-        }
-    }
-}
-
-
-
src_crs = CRS.from_wkt('PROJCS[\"unknown\",GEOGCS[\"unknown\",DATUM[\"unknown\",SPHEROID[\"GRS 1980\",6378137,298.2572221]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]],PROJECTION[\"Geostationary_Satellite\"],PARAMETER[\"central_meridian\",-75],PARAMETER[\"satellite_height\",35786023],PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],EXTENSION[\"PROJ4\",\"+proj=geos +a=6378137.0 +rf=298.2572221 +lon_0=-75.0 +lat_0=0.0 +h=35786023.0 +x_0=0 +y_0=0 +units=m +sweep=x +no_defs\"]]')
-dst_crs = CRS.from_epsg(4326) 
-for file in all_files:
-
-    site_name= file.split('/')[-3].split("_")[0]
-    original_time = file.split('/')[-1].split('.')[0]
-    parsed_time = datetime.strptime(original_time, '%Y-%m-%dT%Hh%M')
-    formatted_time = parsed_time.strftime('%Y-%m-%dT%H:%M:%S') + 'Z'
-
-    try:
-        plume_id = plume_metadata[site_name][formatted_time.split('T')[0]]["Plume_id"]
-        state = plume_metadata[site_name][formatted_time.split('T')[0]]["state"]
-        country = plume_metadata[site_name][formatted_time.split('T')[0]]["country"]
-    except KeyError:
-        print(f"KeyError for file", file)
-        
-    ds = xr.open_dataset(file)
-    all_zero = np.all( ds['CH4_plume_mask'] == 0)
-    if ~(all_zero):
-            
-        data_array = ds['Rad'] * ds['CH4_plume_mask']
-
-        # Identify the bounding box where CH4_plume_mask is 1
-        y, x = np.where(ds['CH4_plume_mask'].values == 1)
-        latitudes = ds['y'].values[y]
-        longitudes = ds['x'].values[x]
-
-        # Calculate the bounding box coordinates
-        min_lon, max_lon = longitudes.min(), longitudes.max()
-        min_lat, max_lat = latitudes.min(), latitudes.max()
-
-        # Assign the spatial coordinates (for rioxarray to work properly)
-        data_array = data_array.rio.write_crs(src_crs)  # Update CRS as needed
-        
-        # Crop the data array to the bounding box
-        data_array = data_array.rio.clip_box(
-            minx=min_lon,
-            miny=min_lat,
-            maxx=max_lon,
-            maxy=max_lat
-        )
-
-        data_array.rio.write_nodata(0, inplace=True)
-        
-        data_array.rio.write_crs(src_crs.to_string(), inplace=True)
-        reprojected_data = data_array.rio.reproject(dst_crs.to_string())
-        reprojected_data.rio.set_spatial_dims("x", "y", inplace=True)
-        
-        reprojected_data.where(reprojected_data != 0,-9999 )
-        reprojected_data.rio.write_nodata(0, inplace=True)
-        if '_FillValue' in reprojected_data.attrs:
-            del reprojected_data.attrs['_FillValue']
-
-    
-        if site_name in ["IN-1", "IN-2"]:
-            site_name="Indiana"
-    
-        filename = f"GOES-CH4_{country}_{state}_{site_name}_{plume_id}_{formatted_time}"
-        print(filename)
-        output_file = f"output3/{filename}.tif"
-        reprojected_data.rio.to_raster(output_file,  compress='deflate', nodata=0, driver="COG")
-
-
GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:11:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:01:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:21:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:31:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:41:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:51:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:41:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:51:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:46:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:56:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:36:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T18:01:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:46:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:56:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:26:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:36:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:16:00Z
-GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:06:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:46:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:56:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:26:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:06:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:36:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:16:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:46:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:56:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:16:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:06:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:26:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:36:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:21:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:31:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:11:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:01:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:41:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:51:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:01:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:21:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:31:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:11:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:41:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:26:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:26:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:21:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:21:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:21:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:21:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:26:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:21:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:31:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:26:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:41:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:51:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:56:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:26:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:11:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:01:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:36:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:16:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:06:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:46:00Z
-GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T16:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T18:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T18:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T16:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T18:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:16:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:06:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:26:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:01:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:41:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:36:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:51:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:21:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:56:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:46:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:31:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:11:00Z
-GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:01:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:46:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:56:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:26:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:36:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:16:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:46:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:56:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:16:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:06:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:26:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:36:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:21:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:31:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:11:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:01:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:41:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:51:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T16:01:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:21:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:31:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:41:00Z
-GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:51:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:21:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:56:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:46:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:41:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:01:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:36:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:26:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:11:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:31:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:06:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:16:00Z
-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:21:00Z
-
-
-
-
# Add overviews
-COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-OVERVIEW_LEVELS = 3
-OVERVIEW_RESAMPLING = 'average'
-
-for file in glob.glob("output3/*.tif"):
-    output_path = f"output3/{file.split("/")[-1]}"
-    
-    # Create a temporary file to hold the COG
-    with tempfile.NamedTemporaryFile(suffix='.tif', delete=False) as temp_file:       
-        # Create COG with overviews and nodata value
-        cog_translate(
-            file,
-            temp_file.name,
-            cog_profiles.get("deflate"),
-            overview_level=OVERVIEW_LEVELS,
-            overview_resampling=OVERVIEW_RESAMPLING,
-            nodata=0
-        )
-        # Move the temporary file to the desired local path
-        os.rename(temp_file.name, output_path)
-
-
Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpd1a7ggu6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpagktrif4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1ymy0puz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxevevopk.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpg3kb8b5h.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfnk7pa2v.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbnhwz15w.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjtor1vso.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3srhwzr5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxpgpkddp.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpyct7nyda.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpj8dhbbq8.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpi0ptkuqs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdjiiqn2j.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp28wg0vjc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpf74d_330.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpymyzeh0e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpkqwiv5r7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpifas1w3_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7a1r4raq.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8tlazkr1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprmr0nppd.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp11b5nwuy.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8pffmfd9.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2u_k97hj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3rwdyz2u.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpc46pr66a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqzeow0s3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph5c861y1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9z40ins0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgu0ubpw6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_vcysm5x.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpaknzk830.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp12wn0yqs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8zqx_v28.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9khlc6p7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpsc18iq4k.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpt5wh14k6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpta3jk9ji.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3qdrmbl1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvyv7j1x3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp4w0zndhz.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp72k3i0ha.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_ngq02gy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpu91c6b7p.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvss_pjs8.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph868r7yi.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxg3cjv_e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpu8abd374.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvq0fjrts.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp76j9nk8u.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwko8zw83.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7fzc0vfq.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgotc8ulv.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmr7da9g7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfqvk_ze4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpspy_bnje.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpulc2twu_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpg2ihudn2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphbuzzk77.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpd3253n_3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_7lhkuym.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1o70f5eo.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2yau47kt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdpmi6guj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpowupxn84.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpk31yc_5w.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpuduu9n50.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph65k_rv0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpp1bkcq41.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0oc53vqy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpkfzz5ldv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp50isjnpr.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp4mkb6n21.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmamzp6xw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3v32czc1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpg5k7bm7p.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpndj_qmv3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnuf9nfwo.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpf3qnmgq6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7cxa79fk.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprabv8v16.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph_yp0wrp.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxdup00sz.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvv0bef0e.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfp3auk89.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpclmogkje.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphvwybmjl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpce_d0kgz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqg71c46e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwnhzapif.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpu7fprjd4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpkgx6rpiy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpimkacign.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbsartupd.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzuzh6rtf.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9_fwu7y6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1bhjj357.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqypxs3in.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzbxeklg7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo3v72lna.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpuyo7uhao.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpa93aj00e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2htwlj2c.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0fby5cge.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpozfzq1_7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0erv5avi.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfr7ztool.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmptin06xnu.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0u892fop.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7shse6w9.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1w_vq9xj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprp_a4k1k.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwj7bpmcm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdi15hsgm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpt2zp0mpt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpe1w38e1h.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpsarzqjnw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpazwx43qn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_au5vxea.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmptymkejt2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpobtb0ady.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1a1mxztb.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpf8fku52n.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2xejfzqj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7hc8cqib.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphqmjtil2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpld0d_4ll.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo3_c242c.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2zzsjuzx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvfr8ns1x.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxpd35k4o.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5q1etn9h.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmxp4117r.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpccqgbsd3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmn6xe9jj.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp4xo84rdn.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpeop5szlg.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgdqa50v_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfaitm5p9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpga3dniuv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpk9bgye9c.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpa47g28gk.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3r7ar8wc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpa7bmuj3a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2wo1azdv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2jjnx2np.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnayeagpw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphk7_0cwe.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqnv8zxlf.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpg4xd4bd_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgc_7q509.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwle1g31e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmppfj668ob.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9daudogw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoymlutuv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpx_x_qke5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpy3jeu9z1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdnmswt2j.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpl3pbai0m.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8251ngwc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5tmo938o.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0bc_t5yp.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnxyocbgb.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0v3fyz0a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprnbk1p6r.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo69n61ls.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfgun5h6d.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpr7713tq9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmppg43aklq.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp49d0zsvs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprnn2qzjm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzbe7otzi.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmplvkcmosp.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph2k4oz9_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbc1kjvt4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbvcl9_sh.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpx9rp8hoh.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0v5igr2v.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9ceqe7lb.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpajsurghb.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprqnpx5ue.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpiwigceg7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwgicxhof.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdk4a4nlb.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjlzqbxpx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpygw8k5p4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpsqxythbx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpl3hq5n2l.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpn6jlu33f.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2uuvp9xw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5lyw286k.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpohi7nxvz.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1cj3lhe2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo68jb_uh.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqycppww4.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpprqyqk0x.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqgi_cxit.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmps4j7eogr.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqpnlhk07.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprdo0vre2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbeg331dv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpto7znk6t.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpodgt2065.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9sxap_vj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp96iu1w3a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpftkumy25.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpe1cmh1oq.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpeuzv3s8q.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0_9phvs7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxchneni0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpyn9tawf3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmps46_ehdu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp6kgxmm4i.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzeyfaqrn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpepjhfgfj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpsx7twdls.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3hwg3o90.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphi2sis1q.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmplezfxo88.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpre_zjvm9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvjq3r8f5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7nvdh9gt.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxklaozh_.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpy9dvrufu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxqocw8q2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9pd_ut__.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwl1u4nm4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpe064ni6j.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpv55rev9b.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpt59ghjku.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9zlam255.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T16:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwj28zp_u.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0ngwz92s.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmqf3l3jj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbx0xe4h3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoodase5r.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpk_vj_nby.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpuunbqre5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmptuaqlpo7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmplji70f0a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph1ss4us3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprifep3pc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_r4u5spd.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmhm746fc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgpr458y4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbj7rmhnx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjvb3jnnl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpr8pat38m.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmplrd1jfc6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7g4rm6xx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvd09cc9m.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpu3w1h9al.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvsot_phu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjqk_istn.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpkz6t4m2f.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpah8zi_xl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmperki2n7q.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphqo5uwn0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0lcjkx2n.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpyb2r6_ii.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpy8bvoa7d.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzp3oi25c.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_j818cbu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9y1whuxl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpglas301y.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmc451281.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgcin2hy4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmxi7fksz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpm6zyr2nu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0fbkpow2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5pum7kxt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp80zkxm5d.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbr241xx_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoge53h7m.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpju4dcpri.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpj57_hr0z.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoc67uroi.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpe94sf2lj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_p5bm2hv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfwm2melu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfiu1n0dy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpen_ltqlu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_b8k2g4k.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpq_0uzzny.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpprhzxfb1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7y48vhw0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmphotvixgj.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbnkcvea6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpams_hqkr.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjfae7xc7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp950kd_7m.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp600_d8wd.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbnxdnj_5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T22:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1xl67ck5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpevjot2pl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfb8jw2xr.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpenyg8n9r.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoiwrd5o4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvjnkhzoh.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpz9e4njqf.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpr8p_zep5.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmzi210q_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp69ageozy.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpyfp9p70m.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp4krfm0vq.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T16:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7ou46n13.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp09nr3kqx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpsy2x5dn6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpw5l9p88q.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpofnqclx4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0l4lqzvt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpf9j63sln.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfmwiqr4f.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9c97rl9e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvwlg0xxs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqy6hgtbc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7nm_mr_7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoquwq1xn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoa4t5j6y.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpadmr8zyg.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpkg4isd2n.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp63hmoh08.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpb8bu39gm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmptiojiuyz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0y3qy9ad.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpzz7wsqmz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpky0nd90o.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpoz5b56iy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxotz81sx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpw52ei2j6.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpf9oxzqxz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9vq46g6o.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpr46k7x55.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpy0lwg_hn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp30rbszv4.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpya38tma6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnpv29phv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpimmk2b9x.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpy5d_494r.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpp2qx7odm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8bzjmyai.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T15:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpptz90o1f.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwcre8b71.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp23vzgd20.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpj8v64pg8.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8xchimzi.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpujjf4phe.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_6pjjxe1.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdbd3pmsy.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpx4rj7zvo.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdu3vohes.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T15:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8hrnbw6w.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp9wsx5qil.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T21:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpse79k7kg.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp4v87iwst.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvfboja09.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3axo_gv9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T19:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp20dvx0gz.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpqnd1i73_.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp97tp4v8a.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpilbq8wrd.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwsj8ig26.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpub3wvooz.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T14:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpp8aveywa.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2pgfov1n.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvzhjnopa.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1oh4vnml.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5j7_tro6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmq6ib83e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdm3fzpa3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmprbbhomj9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T19:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo7s1ecrk.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0g_oqqf5.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjv_r7k3n.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgz8flp8i.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpmogy_d8v.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_vn86y0o.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpl3q2nt88.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T19:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_0la453b.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpilue2c1b.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpg73td4h_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0nlqcnti.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp25i0i5b_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T21:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_0zf4jfv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdpp_4cpu.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T16:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpiabnzsvg.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph3t6i9k3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpu2ov3osm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnr5ropqs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpeblgz12x.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmplidmnbpj.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmph5_27lf_.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5zfubhmz.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpneawfqgo.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T14:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpohmpp1nu.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpn5vfkgf9.tif
-Reading input: output3/GOES-CH4_USA_Texas_Permian_PB-1_2023-07-26T17:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpuj9yy5do.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp6gqp0alg.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-1_2019-05-16T17:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpfk5we9i2.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpk7qxw931.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvoqwux0k.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T14:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpdnuv13nn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T20:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgctoypwp.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbcnkjd6e.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T18:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnc9b1to3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpl2n9oq5q.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T19:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpo4_r1q5d.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjrwho2e_.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp20gra5yk.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T16:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp248vmvc3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmptm2rfmrv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmps5txqrrs.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpw3bc4sm3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2hudjqqz.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpjz07fb2q.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T20:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp59_es0lh.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T18:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnne02ctt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp50hmvjp9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-4_2019-05-24T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp1zpx2te0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmppr8lrcr3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T20:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpx_8bziv7.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp426rsm9l.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T17:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpcontz4je.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3ni1rts9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpi2zccga0.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-2_2020-06-15T15:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp_65q7ojg.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp7qkji7sl.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T20:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgsi3dgkn.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbqvaiz3w.tif
-Reading input: output3/GOES-CH4_USA_Indiana_Indiana_IN-1_2020-06-15T15:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpvqmv5ous.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:31:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp607u8q_n.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T19:21:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpual3if3k.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:11:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpgn32czxx.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpws4vcjbt.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-3_2019-04-18T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5fj8jgmd.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-3_2019-05-23T15:01:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp75o7hkrc.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2h1qa719.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpotblwjjm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T16:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5qsykxj3.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T22:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpiswbcw_0.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:36:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpxlt9j6pq.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T21:26:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpd_jqkvum.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3gktfhrw.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV4_BV4-2_2019-05-22T18:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp3q0y1hxm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:56:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwhm6uek6.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-2_2019-04-10T17:46:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp5h4ja8pe.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:16:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpwou143zv.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp8b6_11q2.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T19:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpk0ekejzd.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T17:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbq2sf6ge.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-2_2019-05-21T20:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpbkr29yqn.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-4_2019-05-11T16:06:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpnkf12cca.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp2247hazr.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV1_BV1-1_2019-04-07T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmpm_4y1ih9.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:51:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmppbp5pdzm.tif
-Reading input: output3/GOES-CH4_Mexico_Durango_BV2_BV2-1_2019-04-09T18:41:00Z.tif
-
-Adding overviews...
-Updating dataset tags...
-Writing output to: /var/folders/6f/r0g105hx7l5g3qw69th62h100000gp/T/tmp0chyrnfg.tif
-
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html b/_site/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html deleted file mode 100644 index a9a1993..0000000 --- a/_site/cog_transformation/gosat-based-ch4budget-yeargrid-v1.html +++ /dev/null @@ -1,1447 +0,0 @@ - - - - - - - - - - - - -GOSAT-based Top-down Total and Natural Methane Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GOSAT-based Top-down Total and Natural Methane Emissions

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

November 14, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the GOSAT-based Top-down Total and Natural Methane Emissions dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-import rasterio
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-year_ = datetime(2019, 1, 1)
-folder_name = "new_data/CH4-inverse-flux"
-
-COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(folder_name):
-    ds = xarray.open_dataset(
-        f"{folder_name}/{name}",
-        engine="netcdf4",
-    )
-
-    ds = ds.rename({"dimy": "lat", "dimx": "lon"})
-    # assign coords from dimensions
-    ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby("lon")
-    ds = ds.assign_coords(lat=((ds.lat / 180) * 180) - 90).sortby("lat")
-
-    variable = [var for var in ds.data_vars]
-
-    for var in variable[2:]:
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        data = ds[var]
-        filename_elements.pop()
-        filename_elements.insert(2, var)
-        cog_filename = "_".join(filename_elements)
-        # # add extension
-        cog_filename = f"{cog_filename}.tif"
-
-        data = data.reindex(lat=list(reversed(data.lat)))
-
-        data.rio.set_spatial_dims("lon", "lat")
-        data.rio.write_crs("epsg:4326", inplace=True)
-
-        # generate COG
-        COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-
-        with tempfile.NamedTemporaryFile() as temp_file:
-            data.rio.to_raster(temp_file.name, **COG_PROFILE)
-            s3_client.upload_file(
-                Filename=temp_file.name,
-                Bucket=bucket_name,
-                Key=f"ch4_inverse_flux/{cog_filename}",
-            )
-
-        files_processed = files_processed._append(
-            {"file_name": name, "COGs_created": cog_filename},
-            ignore_index=True,
-        )
-
-        print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(ds.attrs, fp)
-    json.dump({"data_dimensions": dict(ds.dims)}, fp)
-    json.dump({"data_variables": list(ds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key="ch4_inverse_flux/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/ch4_inverse_flux/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/gra2pes-ghg-monthgrid-v1.html b/_site/cog_transformation/gra2pes-ghg-monthgrid-v1.html deleted file mode 100644 index 8f5e721..0000000 --- a/_site/cog_transformation/gra2pes-ghg-monthgrid-v1.html +++ /dev/null @@ -1,1481 +0,0 @@ - - - - - - - - - - - - -GRAΒ²PES Greenhouse Gas and Air Quality Species – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GRAΒ²PES Greenhouse Gas and Air Quality Species

-
- -
-
- Monthly, 0.036 degree resolution emissions of fossil fuel carbon dioxide (ffCOβ‚‚), carbon monoxide (CO), nitrogen oxide (NOβ‚“), sulfur dioxide (SOβ‚‚), and particulate matter (PMβ‚‚.β‚…) emissions for the year 2021 over the Contiguous United States from the Greenhouse gas And Air Pollutants Emissions System (GRAΒ²PES). -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

August 30, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the GRA2PES dataset to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import xarray as xr
-import os
-import glob
-from  datetime import datetime
-import boto3
-import s3fs
-import tempfile
-import numpy as np
-
-import rasterio
-from rasterio.enums import Resampling
-from rio_cogeo.cogeo import cog_translate
-from rio_cogeo.profiles import cog_profiles
-
-
-
config = {
-    "data_acquisition_method": "s3",
-    "raw_data_bucket" : "gsfc-ghg-store",
-    "raw_data_prefix": "GRA2PES/monthly_subset_regrid/2021", 
-    "cog_data_bucket": "ghgc-data-store-develop",
-    "cog_data_prefix": "transformed_cogs/GRAAPES",
-    "date_fmt" :"%Y%m",
-    "transformation": {}
-}
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-
-raw_data_bucket = config["raw_data_bucket"]
-raw_data_prefix= config["raw_data_prefix"]
-
-cog_data_bucket = config['cog_data_bucket']
-cog_data_prefix= config["cog_data_prefix"]
-
-date_fmt=config['date_fmt']
-
-fs = s3fs.S3FileSystem()
-
-
-
def get_all_s3_keys(bucket, model_name, ext):
-    """Get a list of all keys in an S3 bucket."""
-    keys = []
-
-    kwargs = {"Bucket": bucket, "Prefix": f"{model_name}/"}
-    while True:
-        resp = s3_client.list_objects_v2(**kwargs)
-        for obj in resp["Contents"]:
-            if obj["Key"].endswith(ext) and "historical" not in obj["Key"]:
-                keys.append(obj["Key"])
-
-        try:
-            kwargs["ContinuationToken"] = resp["NextContinuationToken"]
-        except KeyError:
-            break
-
-    return keys
-
-keys = get_all_s3_keys(raw_data_bucket, raw_data_prefix, ".nc4")
-
-def download_s3_objects(bucket, keys, download_dir):
-    """Download all S3 objects listed in keys to the specified local directory."""
-    if not os.path.exists(download_dir):
-        os.makedirs(download_dir)
-
-    for key in keys:
-        local_filename = os.path.join(download_dir, os.path.basename(key))
-        try:
-            s3_client.download_file(bucket, key, local_filename)
-            print(f"Downloaded {key} to {local_filename}")
-        except (NoCredentialsError, PartialCredentialsError) as e:
-            print(f"Credentials error: {e}")
-        except Exception as e:
-            print(f"Failed to download {key}: {e}")
-
-download_s3_objects(raw_data_bucket, keys, "data")
-
-
-
-
def extract_date_from_key(key):
-    # Split the key to isolate the part that contains the date
-    parts = key.split('_')
-    for part in parts:
-        # Check if the part is numeric and has the length of 6 (YYYYMM format)
-        if part.isdigit() and len(part) == 6:
-            return part
-    return None
-
-
-
COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-OVERVIEW_LEVELS = 4 
-OVERVIEW_RESAMPLING = 'average'
-
-for key in glob.glob("data/*.nc4"):
-    xds= xr.open_dataset(key)
-    xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-    
-    for var in ["PM25-PRI","CO2","CO","NOX","SOX"]:
-        yearmonth = extract_date_from_key(key)
-        filename = f"output/GRA2PESv1.0_total_{("-").join(var.split('_'))}_{yearmonth}.tif"
-        data = getattr(xds,var)
-        data.rio.set_spatial_dims("lon", "lat", inplace=True)
-        data.rio.write_crs("epsg:4326", inplace=True)
-        
-        # Create a temporary file to hold the COG
-        with tempfile.NamedTemporaryFile(suffix='.tif', delete=False) as temp_file:
-            data.rio.to_raster(f"temp_{yearmonth}_{var}.tif", **COG_PROFILE, nodata=-9999)
-            # Create COG with overviews and nodata value
-            cog_translate(
-                f"temp_{yearmonth}_{var}.tif",
-                temp_file.name,
-                cog_profiles.get("deflate"),
-                overview_level=OVERVIEW_LEVELS,
-                overview_resampling=OVERVIEW_RESAMPLING,
-                nodata=-9999
-            )
-            
-            # Move the temporary file to the desired local path
-            os.rename(temp_file.name, filename)
-    
-        if os.path.exists(f"temp_{yearmonth}_{var}.tif"):
-            os.remove(f"temp_{yearmonth}_{var}.tif")
-        del data
-        print(f"Done for: {filename}")
-    
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/influx-testbed-ghg-concentrations.html b/_site/cog_transformation/influx-testbed-ghg-concentrations.html deleted file mode 100644 index 906e3e0..0000000 --- a/_site/cog_transformation/influx-testbed-ghg-concentrations.html +++ /dev/null @@ -1,1543 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX) – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX)

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the NIST INFLUX dataset into meaningful csv files for ingestion to vector dataset.

-
-
import pandas as pd
-import glob
-import os
-import zipfile
-import wget
-from collections import defaultdict
-from io import StringIO
-import re
-import warnings
-import warnings
-from datetime import datetime, timedelta
-# Ignore the FutureWarning
-warnings.filterwarnings("ignore", category=FutureWarning)
-
-
-

-selected_level="level1"
-base_dir = "data/"
-output_dir = "output/"
-dat_file_pattern = f"{base_dir}/*/*.dat"
-output_base_dataset_name = "PSU_INFLUX_INSITU" 
-constant_variables = ["datetime","latitude","longitude","level","elevation_m","intake_height_m","Instr"]
-variables =[['CO2(ppm)'],['CH4(ppb)']] # exclude CO
-metadata_link= "UrbanTestBed-Metadata - INFLUX.csv"
-
-
-
# Functions
-def filter_dict(site_dict, selected_level):
-    return {key: [x for x in value if selected_level in x] for key, value in site_dict.items()}
-
-def flag_desired_level(df, desired_level):
-    df['is_max_height_data'] = df['level']== desired_level
-    return df
-
-def add_location(link, site_number):
-    meta= pd.read_csv(link)
-    location =meta[meta['Station Code']==f"Site {site_number[-2:]}"][['City','State']]#(get the actual site number)
-    return location['City'].item()+","+location['State'].item()
-
-def convert_to_datetime(row):
-    year = int(row['Year'])
-    doy = int(row['DOY'])
-    hour = int(row['Hour'])
-    
-    # Create a datetime object for the start of the year
-    date = datetime(year, 1, 1) + timedelta(days=doy - 1)
-    # Add the hours
-    datetime_obj = date + timedelta(hours=hour)
-    # Format as yyyy-mm-ddThh:mm:ssZ
-    return datetime_obj.strftime('%Y-%m-%dT%H:%M:%SZ')
-
-def download_and_extract_zip_files(base_dir, levels):
-    """
-    Download, extract, and delete zip files for the specified levels.
-
-    Parameters:
-    base_dir (str): The base directory for storing the downloaded files.
-    levels (list): A list of levels to download and extract.
-    """
-    # Ensure the base directory exists
-    os.makedirs(base_dir, exist_ok=True)
-
-    # Loop through the levels and handle the download and extraction
-    for level in levels:
-        download_link = f"https://www.datacommons.psu.edu/download/meteorology/influx/influx-tower-data/wmo-x2019-scale/level{level}.zip"
-        fname = download_link.split("/")[-1]
-        target_path = os.path.join(base_dir, fname)
-        
-        # Download the zip file
-        wget.download(download_link, target_path)
-        print(f"Downloaded {download_link} to {target_path}")
-
-        # Extract the zip file
-        with zipfile.ZipFile(target_path, 'r') as zip_ref:
-            zip_ref.extractall(base_dir)
-            print(f"Extracted {fname}")
-
-        # Delete the zip file after extraction
-        os.remove(target_path)
-
-def create_site_dict(pattern):
-    """
-    Creates a dictionary where keys are site numbers extracted from file paths,
-    and values are lists of file paths corresponding to each site number.
-    
-    Args:
-    - pattern (str): Glob pattern to match files.
-    
-    Returns:
-    - dict: Dictionary mapping site numbers to lists of file paths.
-    """
-    all_files = glob.glob(pattern)
-    site_dict = defaultdict(list)
-    
-    for file_path in all_files:
-        site_number = file_path.split('_')[-4]
-        site_dict[site_number].append(file_path)
-    
-    return dict(site_dict)
-
-def process_site_files(site_number, file_list):
-    """
-    Process files for a given site number and save the combined DataFrame to CSV.
-    
-    Args:
-    - site_number (str): Site number to process.
-    - file_list (list): List of file paths corresponding to the site number.
-    """
-    df = pd.DataFrame()
-    
-    for file_path in file_list:
-        with open(file_path, 'r') as file:
-            data = file.read()
-            
-        contents = data.split("\nSite")
-        lat = float((re.search(r'LATITUDE:\s*([0-9.]+)\s*[NS]', contents[0])).group(1))
-        lat_hemisphere = (re.search(r'LATITUDE:\s*([0-9.]+)\s*[NS]', contents[0])).group(0)[-1]
-        
-        lon = float((re.search(r'LONGITUDE:\s*([0-9.]+)\s*[EW]', contents[0])).group(1))
-        lon_hemisphere = (re.search(r'LONGITUDE:\s*([0-9.]+)\s*[EW]', contents[0])).group(0)[-1]
-        
-        level= file_path.split("/")[-2]
-        
-        elevation= re.search(r'ALTITUDE:\s*([0-9.]+)\s*m\s*ASL', contents[0]).group(1)
-        intake_height= re.search(r'SAMPLING HEIGHT:\s*([0-9.]+)\s*m\s*AGL', contents[0]).group(1)
-
-        
-        data_io = StringIO(contents[1])
-        tmp_data = pd.read_csv(data_io, delim_whitespace=True)
-        tmp_data = tmp_data.reset_index().rename(columns={'index': 'Site'})
-        tmp= tmp_data.query("Flag==1").copy()# 1 means no known problem, 0 is not recommemded, 9 is instrument issue (unrealistic)
-        #tmp['SiteCode'] = int(re.search(r'\d+', site_number).group()) 
-        tmp['latitude'] = lat
-        tmp['longitude'] = lon
-        tmp['level'] = int(re.search(r'\d+', level).group())
-        tmp['elevation_m'] = elevation
-        tmp['intake_height_m']= intake_height
-
-        if lat_hemisphere == 'S':
-            tmp['latitude'] = -1* tmp["latitude"]
-        if lon_hemisphere == 'W':
-            tmp['longitude'] = -1* tmp["longitude"]
-
-        df = pd.concat([df, tmp], ignore_index=True)
-
-    # Ensure the output directory exists
-    os.makedirs(output_dir, exist_ok=True)
-    os.makedirs(output_dir+"PSU_INFLUX_INSITU/", exist_ok=True)
-    
-
-    df['datetime'] = df[["Year","DOY","Hour"]].apply(convert_to_datetime, axis=1)
-    df.reset_index(drop=True, inplace=True)
-    for v in variables:
-        tmp_file=df[constant_variables + v].copy()
-        tmp_file['unit'] = v[0][-4:-1] #CO2(ppm) get  the unit only
-        
-        tmp_file.rename(columns={v[0]: 'value'}, inplace=True)
-        tmp_file['location']= add_location(metadata_link, site_number)
-        tmp_file = flag_desired_level(tmp_file, 1) # Flagging only level 1 data
-
-        # Remove nan
-        tmp_file.dropna(subset=["value"], inplace=True)
-
-        #filter 0 values
-        tmp_file[tmp_file["value"]!=0].to_csv(f"{output_dir}/PSU_INFLUX_INSITU/NIST-FLUX-IN-{site_number}-{v[0][:-5]}-hourly-concentrations.csv", index=False)
-        print(f"CSV Created for Site {site_number}-{v[0][:-5]}!!!")
-    return 
-
-
-
-
-
-

-# Download and extract zip files
-levels_to_download = range(1, 5)
-#download_and_extract_zip_files(base_dir=base_dir, levels=levels_to_download)
-
-# Create site dictionary
-site_dict = create_site_dict(dat_file_pattern)
-
-# Comment if you want data from all levels
-#site_dict = filter_dict(site_dict, selected_level)
-
-# Process each site's files
-for site_number, file_list in site_dict.items():
-    print(f"Processing Site Number: {site_number}, Total Files: {len(file_list)}")
-    process_site_files(site_number, file_list)
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/lam-testbed-ghg-concentrations.html b/_site/cog_transformation/lam-testbed-ghg-concentrations.html deleted file mode 100644 index ac50a3b..0000000 --- a/_site/cog_transformation/lam-testbed-ghg-concentrations.html +++ /dev/null @@ -1,1432 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the the Los Angeles Megacity Carbon Project dataset into meaningful csv files for ingestion to vector dataset.

-
-
import pandas as pd
-import glob
-import os
-import warnings
-import warnings 
-warnings.filterwarnings("ignore", category=RuntimeWarning)
-
-
-
# download data from https://data.nist.gov/od/id/mds2-2388 into your desired_folder
-source_dir = "CA"
-
-
-
# Grouping the files for preparation
-config_ca = pd.read_csv("LAM_sites-2.csv") #metadata from providers
-all_files= glob.glob(f"{source_dir}/*.csv")
-all_files = [i.split("/")[-1].split('.')[0] for i in glob.glob(f"{source_dir}/*.csv") ]
-my_dict={}
-for site in list(config_ca.SiteCode):
-    # for each site and variable, append into the dict
-    if (config_ca[config_ca["SiteCode"]==site]["Tower"].item()) ==1 :
-
-        co2_files = [f for f in all_files if site in f and "upwind" not in f and "all" not in f and "co2" in f]
-        my_dict[f"{site}-co2"] = co2_files
-        # Find the files that do not have "upwind" or "all" and have "ch4"
-        ch4_files = [f for f in all_files if site in f and "upwind" not in f and "all" not in f and "ch4" in f]
-        my_dict[f"{site}-ch4"] = ch4_files
-    else:
-        co2_upwind_files = [f for f in all_files if site in f and "upwind" in f and "co2" in f]
-        my_dict[f"{site}-co2"] = co2_upwind_files
-        
-        # Find the files that have "upwind" and "ch4"
-        ch4_upwind_files = [f for f in all_files if site in f and "upwind" in f and "ch4" in f]
-        my_dict[f"{site}-ch4"] = ch4_upwind_files
-
-        if site in ["IRV","RAN"]:
-            co2_files = [f for f in all_files if site in f and "all" in f and "co2" in f]
-            my_dict[f"{site}-co2"] = co2_files
-            ch4_files = [f for f in all_files if site in f and "all" in f and "ch4" in f]
-            my_dict[f"{site}-ch4"] = ch4_files
-        
-del my_dict['USC2-co2']
-del my_dict['USC2-ch4']
-
-for key in my_dict:
-    my_dict[key] = sorted(my_dict[key])
-
-
-
# code to generate transformed data for CA
-output_dir = "output_LAM"
-os.makedirs(output_dir,exist_ok=True)
-for key, value in my_dict.items():
-    df=pd.DataFrame()
-    variable = key.split("-")[-1]
-    val = f"{variable}_ppm" if variable == 'co2' else f"{variable}_ppb"
-    columns = ["latitude","longitude","intake_height_m","elevation_m","datetime",val ]
-    for file in value:
-        tmp = pd.read_csv(f"CA/{file}.csv")
-        tmp.dropna(subset=[val], inplace=True)
-        tmp.rename(columns={'datetime_UTC': 'datetime'}, inplace=True)
-        tmp= tmp[columns]
-        tmp.rename(columns={val: 'value'}, inplace=True)
-        tmp['datetime'] = pd.to_datetime(tmp['datetime'])
-        tmp['datetime'] = tmp['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%SZ')
-        tmp['location'] = config_ca[config_ca['SiteCode']==site]["Location"].item()
-        df = pd.concat([df, tmp], ignore_index=True)
-        
-    df['year']= df['datetime'].apply(lambda x: x[:4])
-    result = df.groupby("year").agg(max_height= ("intake_height_m","max"))
-    if result['max_height'].std() !=0:
-        print(f"More than one max height for {file}",result['max_height'].unique())
-    merged_df=pd.merge(df, result, on='year')
-    merged_df["is_max_height_data"]= merged_df["max_height"] == merged_df["intake_height_m"]
-    merged_df=merged_df.drop(columns=['year','max_height'])
-    merged_df.reset_index(drop=True, inplace=True)
-    merged_df.to_csv(f"{output_dir}/NIST-testbed-LAM-{key}-hourly-concentrations.csv", index=False)
-    
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html b/_site/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html deleted file mode 100644 index e840e57..0000000 --- a/_site/cog_transformation/lpjwsl-wetlandch4-daygrid-v1.html +++ /dev/null @@ -1,1432 +0,0 @@ - - - - - - - - - - - - -Wetland Methane Emissions, LPJ-wsl Model – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Wetland Methane Emissions, LPJ-wsl Model

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-from datetime import datetime, timedelta
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "NASA_GSFC_ch4_wetlands_daily"
-directory = "ch4_wetlands_daily"
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(directory):
-    xds = xarray.open_dataset(
-        f"{directory}/{name}", engine="netcdf4", decode_times=False
-    )
-    xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(
-        "longitude"
-    )
-    variable = [var for var in xds.data_vars]
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), 1, 1)
-
-    for time_increment in range(0, len(xds.time)):
-        for var in variable:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = getattr(xds.isel(time=time_increment), var)
-            data = data.isel(latitude=slice(None, None, -1))
-            data = data * 1000
-            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-            date = start_time + timedelta(hours=data.time.item(0))
-
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = date.strftime("%Y%m%d")
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{FOLDER_NAME}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{FOLDER_NAME}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html b/_site/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html deleted file mode 100644 index 78b2a53..0000000 --- a/_site/cog_transformation/lpjwsl-wetlandch4-monthgrid-v1.html +++ /dev/null @@ -1,1434 +0,0 @@ - - - - - - - - - - - - -Wetland Methane Emissions, LPJ-wsl Model – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Wetland Methane Emissions, LPJ-wsl Model

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the Wetland Methane Emissions, LPJ-wsl Model dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "NASA_GSFC_ch4_wetlands_monthly"
-directory = "ch4_wetlands_monthly"
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(directory):
-    xds = xarray.open_dataset(
-        f"{directory}/{name}", engine="netcdf4", decode_times=False
-    )
-    xds = xds.assign_coords(longitude=(((xds.longitude + 180) % 360) - 180)).sortby(
-        "longitude"
-    )
-    variable = [var for var in xds.data_vars]
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-
-    for time_increment in range(0, len(xds.time)):
-        for var in variable:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            data = getattr(xds.isel(time=time_increment), var)
-            data = data.isel(latitude=slice(None, None, -1))
-            data = data * 1000
-            data.rio.set_spatial_dims("longitude", "latitude", inplace=True)
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            date = (
-                f"0{int((data.time.item(0)/732)+1)}"
-                if len(str(int((data.time.item(0) / 732) + 1))) == 1
-                else f"{int((data.time.item(0)/732)+1)}"
-            )
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements[-1] = filename_elements[-1] + date
-            filename_elements.insert(2, var)
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(
-                    temp_file.name,
-                    driver="COG",
-                )
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"{FOLDER_NAME}/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{FOLDER_NAME}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{FOLDER_NAME}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/nec-testbed-ghg-concentrations.html b/_site/cog_transformation/nec-testbed-ghg-concentrations.html deleted file mode 100644 index 16ebc7a..0000000 --- a/_site/cog_transformation/nec-testbed-ghg-concentrations.html +++ /dev/null @@ -1,1444 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the Northeast Corridor (NEC) Urban Test Bed dataset into meaningful csv files for ingestion to vector dataset.

-
-
import pandas as pd
-import glob
-import os
-import warnings
-import subprocess
-import tarfile
-import warnings 
-import requests
-warnings.filterwarnings("ignore", category=RuntimeWarning)
-
-
-
config = pd.read_csv("NEC_sites.csv")  #https://data.nist.gov/od/id/mds2-3012
-
-
-
# Code to download the files into csv folder 
-sites = list(config.SiteCode)
-for SiteCode in config.SiteCode[:2]:
-    print(SiteCode)
-    download_link = f"https://data.nist.gov/od/ds/ark:/88434/mds2-3012/{SiteCode}.tgz"
-    
-    # Check if the file exists on the server
-    response = requests.head(download_link)
-    if response.status_code != 404:
-        # File exists, proceed with download
-        result = subprocess.run(["wget", download_link, "-O", f"{SiteCode}.tgz"], 
-                                stdout=subprocess.DEVNULL,
-                                stderr=subprocess.DEVNULL)
-
-        # Check if wget succeeded
-        if result.returncode == 0:
-            # Ensure the file is not empty
-            if os.path.getsize(f"{SiteCode}.tgz") > 0:
-                # Extract the files
-                with tarfile.open(f"{SiteCode}.tgz", "r:gz") as tar:
-                    tar.extractall()
-
-                # Delete the .tgz file
-                os.remove(f"{SiteCode}.tgz")
-            else:
-                print(f"File {SiteCode}.tgz is empty.")
-                sites.remove(SiteCode)
-                os.remove(f"{SiteCode}.tgz")  # Remove the empty file
-        else:
-            print(f"Failed to download {SiteCode}.tgz.")
-            sites.remove(SiteCode)
-    else:
-        print(f"File {SiteCode}.tgz does not exist on the server.")
-        sites.remove(SiteCode)
-
-
-
sites = list(config.SiteCode)
-# These are not available
-sites.remove('AWS')
-sites.remove('BVA')
-sites.remove('DNC')
-
-
-
variables = ['ch4','co2']
-output_dir ="output_NEC"
-os.makedirs(output_dir,exist_ok=True)
-
-
-
for site in sites:
-    for variable in variables:
-        df = pd.DataFrame()
-        files = glob.glob(f"csv/{site}-*-{variable}-*.csv")
-        val = f"{variable}_ppm" if variable == 'co2' else f"{variable}_ppb"
-        for file in files:
-            tmp = pd.read_csv(file)
-            tmp.dropna(subset=[val], inplace=True)
-            tmp.rename(columns={'datetime_UTC': 'datetime'}, inplace=True)
-            columns = ["latitude","longitude","intake_height_m","elevation_m","datetime",val ]
-            tmp= tmp[columns]
-            tmp.rename(columns={val: 'value'}, inplace=True)
-            tmp['datetime'] = pd.to_datetime(tmp['datetime'])
-            tmp['datetime'] = tmp['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%SZ')
-            tmp['location'] = config[config['SiteCode']==site]["Location"].item()
-            df = pd.concat([df, tmp], ignore_index=True)
-            
-        df['year']= df['datetime'].apply(lambda x: x[:4])
-        result = df.groupby("year").agg(max_height= ("intake_height_m","max"))
-        if result['max_height'].std() !=0:
-            print(f"More than one max height for {file}",result['max_height'].unique())
-        merged_df=pd.merge(df, result, on='year')
-        merged_df["is_max_height_data"]= merged_df["max_height"] == merged_df["intake_height_m"]
-        merged_df=merged_df.drop(columns=['year','max_height'])
-        merged_df.reset_index(drop=True, inplace=True)
-        merged_df.to_csv(f"{output_dir}/NIST-testbed-NEC-{site}-{variable}-hourly-concentrations.csv", index=False)
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/noaa-gggrn-concentrations.html b/_site/cog_transformation/noaa-gggrn-concentrations.html deleted file mode 100644 index 8bee9c5..0000000 --- a/_site/cog_transformation/noaa-gggrn-concentrations.html +++ /dev/null @@ -1,1528 +0,0 @@ - - - - - - - - - - - - -Atmospheric Carbon Dioxide and Methane Concentrations from NOAA Global Monitoring Laboratory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Atmospheric Carbon Dioxide and Methane Concentrations from NOAA Global Monitoring Laboratory

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Sanjog Thapa

-
-
- -
-
Published
-
-

April 24, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the COβ‚‚ and CHβ‚„ datasets in txt format with hourly granularity to JSON in daily and monthly granularity for visualization in the Greenhouse Gas (GHG) Center.

-
-
import sys
-import json
-import pandas as pd
-
-
-
def daily_aggregate(filepath):
-    """
-    Reads hourly data from a .txt file, aggregates it to daily, and returns a list of JSON objects that can be readily visualized in chart.
-
-    Parameters:
-        filepath (str): The path to the file containing the data to be aggregated.
-
-    Returns:
-        list: A list of dictionaries representing aggregated data, with each dictionary containing
-              'date' and 'value' keys.
-
-    Description:
-        This function reads data from the specified file, aggregates it, and returns a list of JSON objects.
-        The function performs the following steps:
-        - Reads the content of the file.
-        - Extracts the header lines from the file to determine the structure of the data.
-        - Processes the data into a DataFrame.
-        - Filters and aggregates the data.
-        - Converts the aggregated data into a list of JSON objects, where each object contains 'date' and 'value' keys.
-
-    Exceptions:
-        - FileNotFoundError: If the specified file is not found.
-        - Exception: If any other exception occurs during the processing, the exception message is returned.
-
-    Note:
-        - The input file is expected to have a .txt format with header lines indicating the structure of the data.
-        - The function aggregates data from hourly to daily intervals.
-        - The returned JSON list is suitable for use in frontend applications to visualize the aggregated data.
-
-    Example:
-        aggregated_data = daily_aggregate("/path/to/data_file.txt")
-    """
-    try:
-        with open(filepath, "r", encoding="utf-8") as file:
-            file_content_str = file.read()
-            # split the string text based on new line
-            file_content_list = file_content_str.split("\n")
-            # get the header lines. its mentioned in the file's first line.
-            header_lines = file_content_list[0].split(":")[-1]
-            header_lines = int(header_lines)
-            # Slice the non header part of the data. and the last empty element
-            str_datas = file_content_list[header_lines - 1: -1]
-            data = [data.replace("\n", "").split(" ") for data in str_datas]
-            # seperate table body and head to form dataframe
-            table_head = data[0]
-            table_body = data[1:]
-            dataframe = pd.DataFrame(table_body, columns=table_head)
-            dataframe['value'] = dataframe['value'].astype(float)
-            # Filter data
-            mask = (dataframe["qcflag"] == "...") & (dataframe["value"] != 0) & (dataframe["value"] != -999)
-            filtered_df = dataframe[mask].reset_index(drop=True)
-            # Aggregate data (hourly into daily)
-            aggregated_df = filtered_df.groupby(['year', 'month', 'day'])['value'].mean().reset_index()
-            aggregated_df['value'] = aggregated_df['value'].round(2)
-            # necessary columns, processed df
-            aggregated_df['datetime'] = pd.to_datetime(aggregated_df[['year', 'month', 'day']])
-            aggregated_df['datetime'] = aggregated_df['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%SZ')
-            processed_df = aggregated_df[['datetime', 'value']]
-            processed_df = processed_df.sort_values(by='datetime')
-            # dict formation, needed for frontend [{date: , value: }]
-            json_list = []
-            for _, row in processed_df.iterrows():
-                json_obj = {'date': row['datetime'], 'value': row['value']}
-                json_list.append(json_obj)
-            return json_list
-    except FileNotFoundError:
-        return "File not found"
-    except Exception as e:
-        return f"Exception occured {e}"
-
-
-def monthly_aggregate(filepath):
-    """
-    Reads hourly data from a .txt file, aggregates it to monthly, and returns a list of JSON objects that can be readily visualized in chart.
-
-    Parameters:
-        filepath (str): The path to the file containing the data to be aggregated.
-
-    Returns:
-        list: A list of dictionaries representing aggregated data, with each dictionary containing
-              'date' and 'value' keys.
-
-    Description:
-        This function reads data from the specified file, aggregates it, and returns a list of JSON objects.
-        The function performs the following steps:
-        - Reads the content of the file.
-        - Extracts the header lines from the file to determine the structure of the data.
-        - Processes the data into a DataFrame.
-        - Filters and aggregates the data.
-        - Converts the aggregated data into a list of JSON objects, where each object contains 'date' and 'value' keys.
-
-    Exceptions:
-        - FileNotFoundError: If the specified file is not found.
-        - Exception: If any other exception occurs during the processing, the exception message is returned.
-
-    Note:
-        - The input file is expected to have a .txt format with header lines indicating the structure of the data.
-        - The function aggregates data from hourly to daily intervals.
-        - The returned JSON list is suitable for use in frontend applications to visualize the aggregated data.
-
-    Example:
-        aggregated_data = monthly_aggregate("/path/to/data_file.txt")
-    """
-    try:
-        with open(filepath, "r", encoding="utf-8") as file:
-            file_content_str = file.read()
-            # split the string text based on new line
-            file_content_list = file_content_str.split("\n")
-            # get the header lines. its mentioned in the file's first line.
-            header_lines = file_content_list[0].split(":")[-1]
-            header_lines = int(header_lines)
-            # Slice the non header part of the data. and the last empty element
-            str_datas = file_content_list[header_lines - 1: -1]
-            data = [data.replace("\n", "").split(" ") for data in str_datas]
-            # seperate table body and head to form dataframe
-            table_head = data[0]
-            table_body = data[1:]
-            dataframe = pd.DataFrame(table_body, columns=table_head)
-            dataframe['value'] = dataframe['value'].astype(float)
-            # Filter data
-            mask = (dataframe["qcflag"] == "...") & (dataframe["value"] != 0) & (dataframe["value"] != -999)
-            filtered_df = dataframe[mask].reset_index(drop=True)
-            # Aggregate data (hourly into monthly)
-            aggregated_df = filtered_df.groupby(['year', 'month'])['value'].mean().reset_index()
-            aggregated_df['value'] = aggregated_df['value'].round(2)
-            # necessary columns, processed df
-            aggregated_df['datetime'] = pd.to_datetime(aggregated_df[['year', 'month']].assign(day=1))
-            aggregated_df['datetime'] = aggregated_df['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%SZ')
-            processed_df = aggregated_df[['datetime', 'value']]
-            processed_df = processed_df.sort_values(by='datetime')
-            # dict formation, needed for frontend [{date: , value: }]
-            json_list = []
-            for _, row in processed_df.iterrows():
-                json_obj = {'date': row['datetime'], 'value': row['value']}
-                json_list.append(json_obj)
-            return json_list
-    except FileNotFoundError:
-        return "File not found"
-    except Exception as e:
-        return f"Exception occured {e}"
-
-
-if __name__ == "__main__":
-    # Check if filepath argument is provided
-    if len(sys.argv) != 2:
-        print("Usage: python aggregrate.py <daily|monthly> <filepath>")
-        sys.exit(1)
-
-    # Get the filepath from command line argument
-    frequency = sys.argv[1]
-    hourly_data_filepath = sys.argv[2]
-
-    # Call the aggregate function with the provided filepath
-    if (frequency == "daily"):
-        result = daily_aggregate(hourly_data_filepath)
-    elif (frequency == "monthly"):
-        result = monthly_aggregate(hourly_data_filepath)
-    else:
-        print("Usage: python aggregrate.py <daily|monthly> <filepath>")
-        sys.exit(1)
-
-    if result is not None:
-        print(result)
-        # save the json file for reference
-        out_path = f"{hourly_data_filepath.split("/")[-1]}.json"
-        with open(out_path, "w", encoding="utf-8") as file:
-            json.dump(result, file)
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html b/_site/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html deleted file mode 100644 index 04f3c9f..0000000 --- a/_site/cog_transformation/oco2-mip-co2budget-yeargrid-v1.html +++ /dev/null @@ -1,1440 +0,0 @@ - - - - - - - - - - - - -OCO-2 MIP Top-Down COβ‚‚ Budgets – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 MIP Top-Down COβ‚‚ Budgets

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the OCO-2 MIP Top-Down COβ‚‚ Budgets dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-import rasterio
-from datetime import datetime
-from dateutil.relativedelta import relativedelta
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are to be stored
-year_ = datetime(2015, 1, 1)    # Initialize the starting date time of the dataset.
-
-COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-
-# Reading the raw netCDF files from local machine
-files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that are converted into COGs
-for name in os.listdir("new_data"):
-    ds = xarray.open_dataset(
-        f"new_data/{name}",
-        engine="netcdf4",
-    )
-    ds = ds.rename({"latitude": "lat", "longitude": "lon"})
-    # assign coords from dimensions
-    ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby("lon")
-    ds = ds.assign_coords(lat=list(ds.lat))
-
-    variable = [var for var in ds.data_vars]
-
-    for time_increment in range(0, len(ds.year)):
-        for var in variable[2:]:
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            try:
-                data = ds[var].sel(year=time_increment)
-                date = year_ + relativedelta(years=+time_increment)
-                filename_elements[-1] = date.strftime("%Y")
-                # # insert date of generated COG into filename
-                filename_elements.insert(2, var)
-                cog_filename = "_".join(filename_elements)
-                # # add extension
-                cog_filename = f"{cog_filename}.tif"
-            except KeyError:
-                data = ds[var]
-                date = year_ + relativedelta(years=+(len(ds.year) - 1))
-                filename_elements.pop()
-                filename_elements.append(year_.strftime("%Y"))
-                filename_elements.append(date.strftime("%Y"))
-                filename_elements.insert(2, var)
-                cog_filename = "_".join(filename_elements)
-                # # add extension
-                cog_filename = f"{cog_filename}.tif"
-
-            data = data.reindex(lat=list(reversed(data.lat)))
-
-            data.rio.set_spatial_dims("lon", "lat")
-            data.rio.write_crs("epsg:4326", inplace=True)
-
-            # generate COG
-            COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-            with tempfile.NamedTemporaryFile() as temp_file:
-                data.rio.to_raster(temp_file.name, **COG_PROFILE)
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"ceos_co2_flux/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/ceos_co2_flux/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/oco2geos-co2-daygrid-v10r.html b/_site/cog_transformation/oco2geos-co2-daygrid-v10r.html deleted file mode 100644 index 0167c9d..0000000 --- a/_site/cog_transformation/oco2geos-co2-daygrid-v10r.html +++ /dev/null @@ -1,1444 +0,0 @@ - - - - - - - - - - - - -OCO-2 GEOS Column COβ‚‚ Concentrations – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 GEOS Column COβ‚‚ Concentrations

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the OCO-2 GEOS Column COβ‚‚ Concentrations dataset from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import xarray
-import re
-import pandas as pd
-import json
-import tempfile
-import boto3
-import os
-
-
-
session = boto3.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-FOLDER_NAME = "earth_data/geos_oco2"
-s3_folder_name = "geos-oco2"
-
-error_files = []
-count = 0
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for name in os.listdir(FOLDER_NAME):
-    try:
-        xds = xarray.open_dataset(f"{FOLDER_NAME}/{name}", engine="netcdf4")
-        xds = xds.assign_coords(lon=(((xds.lon + 180) % 360) - 180)).sortby("lon")
-        variable = [var for var in xds.data_vars]
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-
-        for time_increment in range(0, len(xds.time)):
-            for var in variable:
-                filename = name.split("/ ")[-1]
-                filename_elements = re.split("[_ .]", filename)
-                data = getattr(xds.isel(time=time_increment), var)
-                data = data.isel(lat=slice(None, None, -1))
-                data.rio.set_spatial_dims("lon", "lat", inplace=True)
-                data.rio.write_crs("epsg:4326", inplace=True)
-
-                # # insert date of generated COG into filename
-                filename_elements[-1] = filename_elements[-3]
-                filename_elements.insert(2, var)
-                filename_elements.pop(-3)
-                cog_filename = "_".join(filename_elements)
-                # # add extension
-                cog_filename = f"{cog_filename}.tif"
-
-                with tempfile.NamedTemporaryFile() as temp_file:
-                    data.rio.to_raster(
-                        temp_file.name,
-                        driver="COG",
-                    )
-                    s3_client.upload_file(
-                        Filename=temp_file.name,
-                        Bucket=bucket_name,
-                        Key=f"{s3_folder_name}/{cog_filename}",
-                    )
-
-                files_processed = files_processed._append(
-                    {"file_name": name, "COGs_created": cog_filename},
-                    ignore_index=True,
-                )
-        count += 1
-        print(f"Generated and saved COG: {cog_filename}")
-    except OSError:
-        error_files.append(name)
-        pass
-
-# Generate the json file with the metadata that is present in the netCDF files.
-with tempfile.NamedTemporaryFile(mode="w+") as fp:
-    json.dump(xds.attrs, fp)
-    json.dump({"data_dimensions": dict(xds.dims)}, fp)
-    json.dump({"data_variables": list(xds.data_vars)}, fp)
-    fp.flush()
-
-    s3_client.upload_file(
-        Filename=fp.name,
-        Bucket=bucket_name,
-        Key=f"{s3_folder_name}/metadata.json",
-    )
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/{s3_folder_name}/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/odiac-ffco2-monthgrid-v2022.html b/_site/cog_transformation/odiac-ffco2-monthgrid-v2022.html deleted file mode 100644 index ab58376..0000000 --- a/_site/cog_transformation/odiac-ffco2-monthgrid-v2022.html +++ /dev/null @@ -1,1402 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform the ODIAC Fossil Fuel COβ‚‚ Emissions dataset from GeoTIFF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-
-import tempfile
-import boto3
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = "ghgc-data-store-dev" # S3 bucket where the COGs are stored after transformation
-
-fold_names = os.listdir("ODIAC")
-
-files_processed = pd.DataFrame(columns=["file_name", "COGs_created"])   # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for fol_ in fold_names:
-    for name in os.listdir(f"ODIAC/{fol_}"):
-        xds = xarray.open_dataarray(f"ODIAC/{fol_}/{name}")
-
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        # # insert date of generated COG into filename
-        filename_elements.pop()
-        filename_elements[-1] = fol_ + filename_elements[-1][-2:]
-
-        xds.rio.set_spatial_dims("x", "y", inplace=True)
-        xds.rio.write_nodata(-9999, inplace=True)
-        xds.rio.write_crs("epsg:4326", inplace=True)
-
-        cog_filename = "_".join(filename_elements)
-        # # add extension
-        cog_filename = f"{cog_filename}.tif"
-
-        with tempfile.NamedTemporaryFile() as temp_file:
-            xds.rio.to_raster(
-                temp_file.name,
-                driver="COG",
-            )
-            s3_client.upload_file(
-                Filename=temp_file.name,
-                Bucket=bucket_name,
-                Key=f"ODIAC_geotiffs_COGs/{cog_filename}",
-            )
-
-        files_processed = files_processed._append(
-            {"file_name": name, "COGs_created": cog_filename},
-            ignore_index=True,
-        )
-
-        print(f"Generated and saved COG: {cog_filename}")
-
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/ODIAC_COGs/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/odiac-ffco2-monthgrid-v2023.html b/_site/cog_transformation/odiac-ffco2-monthgrid-v2023.html deleted file mode 100644 index ac61f4c..0000000 --- a/_site/cog_transformation/odiac-ffco2-monthgrid-v2023.html +++ /dev/null @@ -1,1529 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

July 19, 2024

-
-
- - -
- - - -
- - -

This script was used to transform the ODIAC Fossil Fuel COβ‚‚ Emissions dataset from GeoTIFF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import xarray
-import re
-import tempfile
-import numpy as np
-import boto3
-import os
-import gzip,shutil, wget
-import s3fs
-import hashlib
-import json
-
-
-

-session = boto3.session.Session()
-s3_client = session.client("s3")
-fs = s3fs.S3FileSystem()
-
-data_dir = "data/"
-dataset_name = "odiac-ffco2-monthgrid-v2023"
-cog_data_bucket = "ghgc-data-store-develop"
-cog_data_prefix= f"transformed_cogs/{dataset_name}"
-cog_checksum_prefix= "checksum"
-
-
-
# Retrieve the checksum of raw files
-checksum_dict ={}
-for year in range(2000,2023):
-    checksum_url = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2023/1km_tiff/{year}/odiac2023_1km_checksum_{year}.md5.txt"
-    response = requests.get(checksum_url)
-    content = response.text
-    tmp={}
-    
-    # Split the content into lines
-    lines = content.splitlines()
-    
-    for line in lines:
-        checksum, filename = line.split()
-        tmp[filename[:-3]] = checksum
-    checksum_dict.update(tmp)
-checksum_dict = {k: v for k, v in checksum_dict.items() if k.endswith('.tif')}
-
-
-

-def calculate_md5(file_path):
-    """
-    Calculate the MD5 hash of a file.
-
-    Parameters:
-    file_path (str): The path to the file.
-
-    Returns:
-    str: The MD5 hash of the file.
-    """
-    hash_md5 = hashlib.md5()
-    with open(file_path, "rb") as f:
-        for chunk in iter(lambda: f.read(4096), b""):
-            hash_md5.update(chunk)
-    return hash_md5.hexdigest()
-
-
-
#Code to download raw ODIAC data in your local machine
-
-# Creating  a base directory for ODIAC data
-if not os.path.exists(data_dir):
-        os.makedirs(data_dir)
-
-checksum_dict_local={}
-# Download and unzip data for the years you want
-for year in range(2000,2023):
-    year_dir = os.path.join(data_dir, str(year))
-    checksum_download_link = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2023/1km_tiff/{year}/odiac2023_1km_checksum_{year}.md5.txt"
-    wget.download(checksum_download_link, year_dir)
-    # Make a subfolder for each year
-    if not os.path.exists(year_dir):
-        os.makedirs(year_dir)
-
-    for month in range(1,13):
-        month = f"{month:02d}"
-        download_link = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2023/1km_tiff/{year}/odiac2023_1km_excl_intl_{str(year)[-2:]}{month}.tif.gz"
-        target_folder = f"{data_dir}/{year}/"
-        fname = os.path.basename(download_link)
-        target_path = os.path.join(target_folder, fname)
-
-        # Download the file
-        wget.download(download_link, target_path)
-
-        # Unzip the file
-        with gzip.open(target_path, 'rb') as f_in:
-            with open(target_path[:-3], 'wb') as f_out:
-                shutil.copyfileobj(f_in, f_out)
-                
-        # Calculate checksum of the .gz file 
-        checksum_dict_local[target_path.split("/")[-1][:-3]]=calculate_md5(target_path)
-        
-        # Remove the zip file
-        os.remove(target_path)
-    
-
-
-
# check if the checksums match
-checksum_dict_local == checksum_dict
-
-
-
# List of years you want to run the transformation on
-fold_names=[str(i) for i in range(2020,2023)]
-
-for fol_ in fold_names:
-    names= os.listdir(f"{data_dir}{fol_}")
-    names= [name for name in names if name.endswith('.tif')]
-    print("For year: " ,fol_)
-    for name in names:
-        xds = xarray.open_dataarray(f"{data_dir}{fol_}/{name}")
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        
-        # Remove the extension
-        filename_elements.pop()
-        # Extract and insert date of generated COG into filename
-        filename_elements[-1] = fol_ + filename_elements[-1][-2:]
-
-        # Replace 0 values  with -9999
-        xds = xds.where(xds!=0, -9999)
-        xds.rio.set_spatial_dims("x", "y", inplace=True)
-        xds.rio.write_nodata(-9999, inplace=True)
-        xds.rio.write_crs("epsg:4326", inplace=True)
-
-        cog_filename = "_".join(filename_elements)
-        cog_filename = f"{cog_filename}.tif"
-
-        # Write the cog file to s3 
-        with tempfile.NamedTemporaryFile() as temp_file:
-            xds.rio.to_raster(
-                temp_file.name,
-                driver="COG",
-                compress="DEFLATE"
-            )
-            s3_client.upload_file(
-                Filename=temp_file.name,
-                Bucket=cog_data_bucket,
-                Key=f"{cog_data_prefix}/{cog_filename}",
-            )
-
-        print(f"Generated and saved COG: {cog_filename}")
-
-print("ODIAC COGs generation completed!!!")
-
-
-
# This block is used to calculate the SHA for each COG file and store in a JSON.
-
-def get_all_s3_keys(bucket, model_name, ext):
-    """Get a list of all keys in an S3 bucket."""
-    keys = []
-
-    kwargs = {"Bucket": bucket, "Prefix": f"{model_name}/"}
-    while True:
-        resp = s3_client.list_objects_v2(**kwargs)
-        for obj in resp["Contents"]:
-            if obj["Key"].endswith(ext) and "historical" not in obj["Key"]:
-                keys.append(obj["Key"])
-
-        try:
-            kwargs["ContinuationToken"] = resp["NextContinuationToken"]
-        except KeyError:
-            break
-
-    return keys
-
-keys = get_all_s3_keys(cog_data_bucket, cog_data_prefix,".tif")
-
-
-def compute_sha256(url):
-    """Compute SHA-256 checksum for a given file."""
-    sha256_hash = hashlib.sha256()
-    with fs.open(url) as f:
-        for byte_block in iter(lambda: f.read(4096), b""):
-            sha256_hash.update(byte_block)
-    return sha256_hash.hexdigest()
-
-sha_mapping = {}
-for key in keys:
-    sha_mapping[key.split("/")[-1]]=compute_sha256(f"s3://{cog_data_bucket}/{key}")
-
-
-json_data = json.dumps(sha_mapping, indent=4)
-s3_client.put_object(Bucket=cog_data_bucket, Key=f"{cog_checksum_prefix}/{dataset_name}.json", Body=json_data)
-
-print("Checksums created for ODIAC!!!")
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/odiac-ffco2-monthgrid-v2024.html b/_site/cog_transformation/odiac-ffco2-monthgrid-v2024.html deleted file mode 100644 index 5c00ae2..0000000 --- a/_site/cog_transformation/odiac-ffco2-monthgrid-v2024.html +++ /dev/null @@ -1,1543 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

July 1, 2025

-
-
- - -
- - - -
- - -

This script was used to transform the ODIAC Fossil Fuel COβ‚‚ Emissions dataset from GeoTIFF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import xarray
-import re
-import tempfile
-import numpy as np
-import boto3
-import os
-import gzip,shutil, wget
-import s3fs
-import hashlib
-import json
-
-
-

-session = boto3.session.Session()
-s3_client = session.client("s3")
-fs = s3fs.S3FileSystem()
-
-data_dir = "data/"
-dataset_name = "odiac-ffco2-monthgrid-v2024"
-cog_data_bucket = "ghgc-data-store-develop"
-cog_data_prefix= f"transformed_cogs/{dataset_name}"
-cog_checksum_prefix= "checksum"
-
-
-
# Retrieve the checksum of raw files
-checksum_dict ={}
-for year in range(2000,2023):
-    checksum_url = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2024/1km_tiff/{year}/odiac2024_1km_checksum_{year}.md5.txt"
-    response = requests.get(checksum_url)
-    content = response.text
-    tmp={}
-    
-    # Split the content into lines
-    lines = content.splitlines()
-    
-    for line in lines:
-        checksum, filename = line.split()
-        tmp[filename[:-3]] = checksum
-    checksum_dict.update(tmp)
-checksum_dict = {k: v for k, v in checksum_dict.items() if k.endswith('.tif')}
-
-
-

-def calculate_md5(file_path):
-    """
-    Calculate the MD5 hash of a file.
-
-    Parameters:
-    file_path (str): The path to the file.
-
-    Returns:
-    str: The MD5 hash of the file.
-    """
-    hash_md5 = hashlib.md5()
-    with open(file_path, "rb") as f:
-        for chunk in iter(lambda: f.read(4096), b""):
-            hash_md5.update(chunk)
-    return hash_md5.hexdigest()
-
-
-
#Code to download raw ODIAC data in your local machine
-
-# Creating  a base directory for ODIAC data
-if not os.path.exists(data_dir):
-        os.makedirs(data_dir)
-
-checksum_dict_local={}
-# Download and unzip data for the years you want
-for year in range(2000,2023):
-    year_dir = os.path.join(data_dir, str(year))
-    checksum_download_link = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2024/1km_tiff/{year}/odiac2024_1km_checksum_{year}.md5.txt"
-    wget.download(checksum_download_link, year_dir)
-    # Make a subfolder for each year
-    if not os.path.exists(year_dir):
-        os.makedirs(year_dir)
-
-    for month in range(1,13):
-        month = f"{month:02d}"
-        download_link = f"https://db.cger.nies.go.jp/nies_data/10.17595/20170411.001/odiac2024/1km_tiff/{year}/odiac2024_1km_excl_intl_{str(year)[-2:]}{month}.tif.gz"
-        target_folder = f"{data_dir}/{year}/"
-        fname = os.path.basename(download_link)
-        target_path = os.path.join(target_folder, fname)
-
-        # Download the file
-        wget.download(download_link, target_path)
-
-        # Unzip the file
-        with gzip.open(target_path, 'rb') as f_in:
-            with open(target_path[:-3], 'wb') as f_out:
-                shutil.copyfileobj(f_in, f_out)
-                
-        # Calculate checksum of the .gz file 
-        checksum_dict_local[target_path.split("/")[-1][:-3]]=calculate_md5(target_path)
-        
-        # Remove the zip file
-        os.remove(target_path)
-    
-
-
-
# check if the checksums match
-checksum_dict_local == checksum_dict
-
-
-
# List of years you want to run the transformation on
-fold_names=[str(i) for i in range(2000,2024)]
-
-for fol_ in fold_names:
-    names= os.listdir(f"{data_dir}{fol_}")
-    names= [name for name in names if name.endswith('.tif')]
-    print("For year: " ,fol_)
-    for name in names:
-        xds = xarray.open_dataarray(f"{data_dir}{fol_}/{name}")
-        filename = name.split("/ ")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        
-        # Remove the extension
-        filename_elements.pop()
-        # Extract and insert date of generated COG into filename
-        filename_elements[-1] = fol_ + filename_elements[-1][-2:]
-
-        # Replace 0 values  with -9999
-        xds = xds.where(xds!=0, -9999)
-        xds.rio.set_spatial_dims("x", "y", inplace=True)
-        xds.rio.write_nodata(-9999, inplace=True)
-        xds.rio.write_crs("epsg:4326", inplace=True)
-
-        cog_filename = "_".join(filename_elements)
-        cog_filename = f"{cog_filename}.tif"
-
-        # Write the cog file to s3 
-        with tempfile.NamedTemporaryFile() as temp_file:
-            xds.rio.to_raster(
-                temp_file.name,
-                driver="COG",
-                compress="DEFLATE"
-            )
-            s3_client.upload_file(
-                Filename=temp_file.name,
-                Bucket=cog_data_bucket,
-                Key=f"{cog_data_prefix}/{cog_filename}",
-            )
-
-        print(f"Generated and saved COG: {cog_filename}")
-
-print("ODIAC COGs generation completed!!!")
-
-
-
# This block is used to calculate the SHA for each COG file and store in a JSON.
-
-def get_all_s3_keys(bucket, model_name, ext):
-    """Get a list of all keys in an S3 bucket."""
-    keys = []
-
-    kwargs = {"Bucket": bucket, "Prefix": f"{model_name}/"}
-    while True:
-        resp = s3_client.list_objects_v2(**kwargs)
-        for obj in resp["Contents"]:
-            if obj["Key"].endswith(ext) and "historical" not in obj["Key"]:
-                keys.append(obj["Key"])
-
-        try:
-            kwargs["ContinuationToken"] = resp["NextContinuationToken"]
-        except KeyError:
-            break
-
-    return keys
-
-keys = get_all_s3_keys(cog_data_bucket, cog_data_prefix,".tif")
-
-
-def compute_sha256(url):
-    """Compute SHA-256 checksum for a given file."""
-    sha256_hash = hashlib.sha256()
-    with fs.open(url) as f:
-        for byte_block in iter(lambda: f.read(4096), b""):
-            sha256_hash.update(byte_block)
-    return sha256_hash.hexdigest()
-
-sha_mapping = {}
-for key in keys:
-    sha_mapping[key.split("/")[-1]]=compute_sha256(f"s3://{cog_data_bucket}/{key}")
-
-
-json_data = json.dumps(sha_mapping, indent=4)
-s3_client.put_object(Bucket=cog_data_bucket, Key=f"{cog_checksum_prefix}/{dataset_name}.json", Body=json_data)
-
-print("Checksums created for ODIAC!!!")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html b/_site/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html deleted file mode 100644 index 91bdf7f..0000000 --- a/_site/cog_transformation/sedac-popdensity-yeargrid5yr-v4.11.html +++ /dev/null @@ -1,1417 +0,0 @@ - - - - - - - - - - - - -SEDAC Gridded World Population Data – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

SEDAC Gridded World Population Data

-
- -
-
- Documentation of data transformation -
-
- - -
- -
-
Author
-
-

Vishal Gaur

-
-
- -
-
Published
-
-

August 31, 2023

-
-
- - -
- - - -
- - -

This script was used to transform SEDAC Gridded World Population Data from netCDF to Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center.

-
-
import os
-import xarray
-import re
-import pandas as pd
-
-import tempfile
-import boto3
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-bucket_name = (
-    "ghgc-data-store-dev"  # S3 bucket where the COGs are stored after transformation
-)
-
-fold_names = os.listdir("gpw")
-
-files_processed = pd.DataFrame(
-    columns=["file_name", "COGs_created"]
-)  # A dataframe to keep track of the files that we have transformed into COGs
-
-# Reading the raw netCDF files from local machine
-for fol_ in fold_names:
-    for name in os.listdir(f"gpw/{fol_}"):
-        if name.endswith(".tif"):
-            xds = xarray.open_dataarray(f"gpw/{fol_}/{name}")
-
-            filename = name.split("/ ")[-1]
-            filename_elements = re.split("[_ .]", filename)
-            # # insert date of generated COG into filename
-            filename_elements.pop()
-            filename_elements.append(filename_elements[-3])
-
-            xds.rio.set_spatial_dims("x", "y", inplace=True)
-            xds.rio.write_crs("epsg:4326", inplace=True)
-
-            cog_filename = "_".join(filename_elements)
-            # # add extension
-            cog_filename = f"{cog_filename}.tif"
-
-            with tempfile.NamedTemporaryFile() as temp_file:
-                xds.rio.to_raster(temp_file.name, driver="COG")
-                s3_client.upload_file(
-                    Filename=temp_file.name,
-                    Bucket=bucket_name,
-                    Key=f"gridded_population_cog/{cog_filename}",
-                )
-
-            files_processed = files_processed._append(
-                {"file_name": name, "COGs_created": cog_filename},
-                ignore_index=True,
-            )
-
-            print(f"Generated and saved COG: {cog_filename}")
-
-
-# creating the csv file with the names of files transformed.
-files_processed.to_csv(
-    f"s3://{bucket_name}/gridded_population_cog/files_converted.csv",
-)
-print("Done generating COGs")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/cog_transformation/vulcan-ffco2-yeargrid-v4.html b/_site/cog_transformation/vulcan-ffco2-yeargrid-v4.html deleted file mode 100644 index de7a15d..0000000 --- a/_site/cog_transformation/vulcan-ffco2-yeargrid-v4.html +++ /dev/null @@ -1,1648 +0,0 @@ - - - - - - - - - - - - -Vulcan Fossil Fuel COβ‚‚ Emissions v4.0 – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Vulcan Fossil Fuel COβ‚‚ Emissions v4.0

-
- -
-
- Documentation of data transformation & Validation -
-
- - -
- -
-
Author
-
-

Paridhi Parajuli

-
-
- -
-
Published
-
-

August 20, 2024

-
-
- - -
- - - -
- - -

Updated on : June 17, 2025

-

This script was used to transform the VULCAN dataset provided in Cloud Optimized GeoTIFF (COG) format for display in the Greenhouse Gas (GHG) Center with the calaulation of validation statistics.

-
-
import xarray
-import re
-import pandas as pd
-import boto3
-import glob
-import s3fs
-import tempfile
-from datetime import datetime
-import os
-import boto3
-from pyproj import CRS
-from rasterio.io import MemoryFile
-import numpy as np
-
-import rasterio
-from rasterio.warp import calculate_default_transform, reproject, Resampling
-from rasterio.enums import Resampling
-from rio_cogeo.cogeo import cog_translate
-from rio_cogeo.profiles import cog_profiles
-
-
-
config = {
-    "data_acquisition_method": "s3",
-    "raw_data_bucket" : "gsfc-ghg-store",
-    "raw_data_prefix": "Vulcan/v4.0/grid.1km.mn",
-    "cog_data_bucket": "ghgc-data-store-develop",
-    "cog_data_prefix": "transformed_cogs/VULCAN_v4",
-    "date_fmt" :"%Y",
-    "transformation": {}
-}
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-
-raw_data_bucket = config["raw_data_bucket"]
-raw_data_prefix= config["raw_data_prefix"]
-
-cog_data_bucket = config['cog_data_bucket']
-cog_data_prefix= config["cog_data_prefix"]
-
-date_fmt=config['date_fmt']
-
-fs = s3fs.S3FileSystem()
-
-
-
def get_all_s3_keys(bucket, model_name, ext):
-    """Get a list of all keys in an S3 bucket."""
-    keys = []
-
-    kwargs = {"Bucket": bucket, "Prefix": f"{model_name}/"}
-    while True:
-        resp = s3_client.list_objects_v2(**kwargs)
-        for obj in resp["Contents"]:
-            if obj["Key"].endswith(ext) and "historical" not in obj["Key"]:
-                keys.append(obj["Key"])
-
-        try:
-            kwargs["ContinuationToken"] = resp["NextContinuationToken"]
-        except KeyError:
-            break
-
-    return keys
-
-keys = get_all_s3_keys(raw_data_bucket, raw_data_prefix, ".tif")
-
-
-
keys=[k for k in keys if len(k)<72] # ommiting the not required files
-
-
-
len(keys)
-
-
-
# To calculate the validation stats
-overall= pd.DataFrame(columns=["data","min","max","mean","std"])
-
-
-
# Step 1: Reproject the data 
-# Define the source and target CRS
-# Also calculate raw - monthly validation stats
-os.makedirs("reproj", exist_ok=True)
-src_crs = CRS.from_wkt('PROJCS["unknown",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["latitude_of_origin",40],PARAMETER["central_meridian",-97],PARAMETER["standard_parallel_1",33],PARAMETER["standard_parallel_2",45],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]')
-dst_crs = CRS.from_epsg(4326)  # WGS 84
-df = pd.DataFrame(columns=['filename', 'min(raw)', 'max(raw)', 'mean(raw)', 'std(raw)'])
-overall_raw= []
-for key in keys:
-    url = f"s3://{raw_data_bucket}/{key}"
-    with rasterio.open(url) as src:
-        filename_elements = key.split("/")[-1].split(".")[:-1]
-        output_tif = "_".join(filename_elements) + ".tif"
-        data = src.read(1)  # Read the first band
-        overall_raw.append(data)
-        
-        # Calculate statistics while ignoring NaN values
-        min_val = np.nanmin(data)
-        max_val = np.nanmax(data)
-        mean_val = np.nanmean(data)
-        std_val = np.nanstd(data)  
-        stats = [output_tif, min_val, max_val, mean_val, std_val]
-        df.loc[len(df)] = stats
-        
-        transform, width, height = calculate_default_transform(
-        src.crs, dst_crs, src.width, src.height, *src.bounds)
-        kwargs = src.meta.copy()
-        kwargs.update({
-        'crs': dst_crs,
-        'transform': transform,
-        'width': width,
-        'height': height,
-        'nodata': -9999
-        })
-
-        with rasterio.open(f"reproj/{output_tif}", 'w', **kwargs) as dst:
-            for i in range(1, src.count + 1):
-                reproject(
-                source=rasterio.band(src, i),
-                destination=rasterio.band(dst, i),
-                src_transform=src.transform,
-                src_crs=src.crs,
-                dst_transform=transform,
-                dst_crs=dst_crs,
-                resampling=Resampling.nearest)
-        print(f"Done for {output_tif}")
-
-
-
-
-
# overall validation of raw data
-overall_raw= np.array(overall_raw)
-nan_min = np.nanmin(overall_raw)
-nan_max = np.nanmax(overall_raw)
-nan_mean = np.nanmean(overall_raw)
-nan_std = np.nanstd(overall_raw)
-overall.loc[len(overall)] = ["raw",nan_min,nan_max,nan_mean,nan_std]
-
-
-
# validation for reprojected data - yearly calculation
-overall_reproj = []
-files = glob.glob("reproj/*.tif")
-df1 = pd.DataFrame(columns=['filename', 'min(reprojected)', 'max(reprojected)', 'mean(reprojected)', 'std(reprojected)'])
-for file in files:
-    with rasterio.open(file) as src:
-        filename_elements = file.split("/")[-1].split(".")[:-1]
-        output_tif = "_".join(filename_elements) + ".tif"
-        data = src.read(1)  
-        data = np.ma.masked_equal(data, -9999)
-        overall_reproj.append(data)
-        
-        # Calculate statistics while ignoring NaN values
-        min_val = np.nanmin(data)
-        max_val = np.nanmax(data)
-        mean_val = np.nanmean(data)
-        std_val = np.nanstd(data)  
-        stats = [output_tif, min_val, max_val, mean_val, std_val]
-        df1.loc[len(df1)] = stats
-
-
-
# overall validation of reprojected  data
-overall_reproj= np.array(overall_reproj)
-overall_reproj = np.ma.masked_equal(overall_reproj, -9999)
-nan_min = np.nanmin(overall_reproj)
-nan_max = np.nanmax(overall_reproj)
-nan_mean = np.nanmean(overall_reproj)
-nan_std = np.nanstd(overall_reproj)
-overall.loc[len(overall)] = ["reprojected",nan_min,nan_max,nan_mean,nan_std]
-
-
-
# Step 2: Replace nan and 0 values with -9999 and multiply 
-os.makedirs("reproj2", exist_ok=True)
-files = glob.glob("reproj/*.tif")
-for file in files:
-    filename = file.split('/')[-1]
-    xda = xarray.open_dataarray(file).sel(band=1)
-    # Multiply data
-    xda = xda.where(xda == -9999, xda * (44/12))
-
-
-     
-    data = xda.where(xda != 0, -9999)  # Replace 0 with -9999
-    #data = data.where(data != -3.4e+38, -9999)  # Replace -3.4e+38 with -9999
-    data = data.fillna(-9999)  # Ensure all NaNs are replaced with -9999
-    data_array = data.values
-    
-    
-
-    # Open the source raster to get metadata
-    with rasterio.open(file) as src:
-        meta = src.meta
-        meta.update({
-            'nodata': -9999,
-            'dtype': 'float32',
-            'driver': 'COG'
-        })
-        with rasterio.open(f"reproj2/{filename}", 'w', **meta) as dst:
-            dst.write(data_array, 1)
-
-
-
# validation for reprojected data (non zero) - monthly calculation
-overall_reproj2=[]
-files = glob.glob("reproj/*.tif")
-df11 = pd.DataFrame(columns=['filename', 'min(reproj_nonzero)', 'max(reproj_nonzero)', 'mean(reproj_nonzero)', 'std(reproj_nonzero)'])
-for file in files:
-    with rasterio.open(file) as src:
-        filename_elements = file.split("/")[-1].split(".")[:-1]
-        output_tif = "_".join(filename_elements) + ".tif"
-        data = src.read(1)  
-        data = np.ma.masked_where((data == -9999) | (data == 0), data)
-       
-
-        overall_reproj2.append(data)
-        # Calculate statistics while ignoring NaN values
-        min_val = np.nanmin(data)
-        max_val = np.nanmax(data)
-        mean_val = np.nanmean(data)
-        std_val = np.nanstd(data)  
-        stats = [output_tif, min_val, max_val, mean_val, std_val]
-        df11.loc[len(df11)] = stats
-
-
-
# validation for reprojected data (non zero) - overall calculation
-overall_reproj2= np.array(overall_reproj2)
-overall_reproj2 = np.ma.masked_where((overall_reproj2 == -9999) | (overall_reproj2 == 0), overall_reproj2)
-nan_min = np.nanmin(overall_reproj2)
-nan_max = np.nanmax(overall_reproj2)
-nan_mean = np.nanmean(overall_reproj2)
-nan_std = np.nanstd(overall_reproj2)
-overall.loc[len(overall)] = ["reprojected_non_zero",nan_min,nan_max,nan_mean,nan_std]
-
-
-
# Step 3: To put overviews
-COG_PROFILE = {"driver": "COG", "compress": "DEFLATE"}
-OVERVIEW_LEVELS = 9
-OVERVIEW_RESAMPLING = 'average'
-
-for file in glob.glob("reproj2/*.tif"):
-    output_path = f"output/{file.split("/")[-1]}"
-    
-    # Create a temporary file to hold the COG
-    with tempfile.NamedTemporaryFile(suffix='.tif', delete=False) as temp_file:       
-        # Create COG with overviews and nodata value
-        cog_translate(
-            file,
-            temp_file.name,
-            cog_profiles.get("deflate"),
-            overview_level=OVERVIEW_LEVELS,
-            overview_resampling=OVERVIEW_RESAMPLING,
-            nodata=-9999
-        )
-        # Move the temporary file to the desired local path
-        os.rename(temp_file.name, output_path)
-
-
-
# validation for final data with overviews - overall calculation
-overall_final=[]
-files = glob.glob("output/*.tif")
-df2 = pd.DataFrame(columns=['filename', 'min(transformed)', 'max(transformed)', 'mean(transformed)', 'std(transformed)'])
-for file in files:
-    with rasterio.open(file) as src:
-        filename_elements = file.split("/")[-1].split(".")[:-1]
-        output_tif = "_".join(filename_elements) + ".tif"
-        data = src.read(1)  # Read the first band
-        
-        # Mask -9999 values and NaNs for statistics calculation
-        data = np.ma.masked_where((data == -9999) | np.isnan(data), data)
-        # Multiply data - undo the multiplication done during transformation
-        data = data *( 12/44)
-        overall_final.append(data)
-        
-        # Calculate statistics while ignoring NaN values
-        min_val = np.nanmin(data)
-        max_val = np.nanmax(data)
-        mean_val = np.nanmean(data)
-        total = np.nansum(data) 
-        std_val = np.nanstd(data)  
-        stats = [output_tif, min_val, max_val, mean_val, std_val]
-        df2.loc[len(df2)] = stats
-
-
-
# validation for final data (with overviews) - overall calculation
-overall_final= np.array(overall_final)
-overall_final = np.ma.masked_where((overall_final == -9999) | np.isnan(overall_final), overall_final)
-nan_min = np.nanmin(overall_final)
-nan_max = np.nanmax(overall_final)
-nan_mean = np.nanmean(overall_final)
-nan_std = np.nanstd(overall_final)
-overall.loc[len(overall)] = ["Transformed",nan_min,nan_max,nan_mean,nan_std]
-
-
-
# Save to json
-overall.to_json("overall_stats.json")
-pd.merge(pd.merge(df,df1, on='filename', how='inner'), pd.merge(df11,df2, on='filename', how='inner'), how='inner',on='filename' ).to_json("yearly_stats.json")
-
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_transformation_plugins/sample_transformation.html b/_site/data_transformation_plugins/sample_transformation.html deleted file mode 100644 index 53dc029..0000000 --- a/_site/data_transformation_plugins/sample_transformation.html +++ /dev/null @@ -1,1892 +0,0 @@ - - - - - - - - - -Instructions on how to transform a single file – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Instructions on how to transform a single file

-
- - - -
- - - - -
- - - -
- - -

Install the required libraries in an isolated environment

-
-
import xarray
-import re
-from datetime import datetime
-
-
-
# Read a file of the new dataset
-name = '/Users/vgaur/Downloads/CTCH4_methane_emis_1998.nc'
-ds = xarray.open_dataset(name) # open the file
-print('The netcdf file contains information as shown below')
-ds
-
-
The netcdf file contains information as shown below
-
-
-
- - - - - - - - - - - - - - -
<xarray.Dataset>
-Dimensions:               (latitude: 180, longitude: 360, months: 12)
-Coordinates:
-  * latitude              (latitude) float64 -89.5 -88.5 -87.5 ... 88.5 89.5
-  * longitude             (longitude) float64 -179.5 -178.5 ... 178.5 179.5
-  * months                (months) int32 1 2 3 4 5 6 7 8 9 10 11 12
-Data variables:
-    fossil                (months, latitude, longitude) float64 ...
-    fossil_global_sum     (months) float64 ...
-    microbial             (months, latitude, longitude) float64 ...
-    microbial_global_sum  (months) float64 ...
-    pyrogenic             (months, latitude, longitude) float64 ...
-    pyrogenic_global_sum  (months) float64 ...
-    total                 (months, latitude, longitude) float64 ...
-    total_global_sum      (months) float64 ...
-    surface_area          (latitude, longitude) float64 ...
-Attributes:
-    email:        carbontracker.team@noaa.gov
-    url:          http://gml.noaa.gov/ccgg/carbontracker-ch4/
-    institution:  NOAA Global Monitoring Laboratory
-    version:      CTCH4 v2023 1x1 monthly fluxes as of 08-Nov-2024 01:58:47 UTC
-
-
-
-
# Explore the netCDF file
-print('Data valriables in the netCDF file are', ds.data_vars)
-print('Dimensions mentioned in the netCDF file are', ds.dims)
-#..... explore the netCDf file for more information
-
-
Data valriables in the netCDF file are Data variables:
-    fossil                (months, latitude, longitude) float64 ...
-    fossil_global_sum     (months) float64 ...
-    microbial             (months, latitude, longitude) float64 ...
-    microbial_global_sum  (months) float64 ...
-    pyrogenic             (months, latitude, longitude) float64 ...
-    pyrogenic_global_sum  (months) float64 ...
-    total                 (months, latitude, longitude) float64 ...
-    total_global_sum      (months) float64 ...
-    surface_area          (latitude, longitude) float64 ...
-Dimensions mentioned in the netCDF file are Frozen({'latitude': 180, 'longitude': 360, 'months': 12})
-
-
-
-
# once explored, look at the latitude, longitude and other values and comvert them if needed.
-ds = ds.rename({"latitude": "lat", "longitude": "lon"})
-ds = ds.assign_coords(lon=(((ds.lon + 180) % 360) - 180)).sortby("lon")
-variable = [var for var in ds.data_vars]
-
-
-
# Parse through the time variable to extract single timestamp and create a dataarray for the given timestamp.
-for time_increment in range(0, len(ds.months)):
-    # split the original file name to create a unique COG name
-    filename = name.split("/ ")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), time_increment + 1, 1)
-    for var in variable: # Parse through the data variables
-        data = getattr(ds.isel(months=time_increment), var)
-        data = data.isel(lat=slice(None, None, -1))
-        data.rio.set_spatial_dims("lon", "lat", inplace=True)
-        data.rio.write_crs("epsg:4326", inplace=True)
-
-        # # insert date of generated COG into filename
-        filename_elements.pop()
-        filename_elements[-1] = start_time.strftime("%Y%m")
-        filename_elements.insert(2, var)
-        cog_filename = "_".join(filename_elements)
-        # # add extension
-        cog_filename = f"{cog_filename}.tif"
-
-
-
variable = [var for var in ds.data_vars if "global" not in var]
-
-for time_increment in range(0, len(ds.months)):
-    filename = name.split("/")[-1]
-    filename_elements = re.split("[_ .]", filename)
-    start_time = datetime(int(filename_elements[-2]), time_increment + 1, 1)
-    for var in variable:
-        filename = name.split("/")[-1]
-        filename_elements = re.split("[_ .]", filename)
-        data = getattr(ds.isel(months=time_increment), var)
-        data = data.isel(lat=slice(None, None, -1))
-        data = data.where(data != -9999, -9999)
-        data.rio.set_spatial_dims("lon", "lat", inplace=True)
-        data.rio.write_crs("epsg:4326", inplace=True)
-        data.rio.write_nodata(-9999, inplace=True)
-
-        # # insert date of generated COG into filename
-        filename_elements.pop()
-        filename_elements[-1] = start_time.strftime("%Y%m")
-        filename_elements.insert(2, var)
-        cog_filename = "_".join(filename_elements)
-        # # add extension
-        cog_filename = f"{cog_filename}.tif"
-
-
CTCH4_methane_fossil_emis_199801.tif
-CTCH4_methane_microbial_emis_199801.tif
-CTCH4_methane_pyrogenic_emis_199801.tif
-CTCH4_methane_total_emis_199801.tif
-CTCH4_methane_surface_area_emis_199801.tif
-CTCH4_methane_fossil_emis_199802.tif
-CTCH4_methane_microbial_emis_199802.tif
-CTCH4_methane_pyrogenic_emis_199802.tif
-CTCH4_methane_total_emis_199802.tif
-CTCH4_methane_surface_area_emis_199802.tif
-CTCH4_methane_fossil_emis_199803.tif
-CTCH4_methane_microbial_emis_199803.tif
-CTCH4_methane_pyrogenic_emis_199803.tif
-CTCH4_methane_total_emis_199803.tif
-CTCH4_methane_surface_area_emis_199803.tif
-CTCH4_methane_fossil_emis_199804.tif
-CTCH4_methane_microbial_emis_199804.tif
-CTCH4_methane_pyrogenic_emis_199804.tif
-CTCH4_methane_total_emis_199804.tif
-CTCH4_methane_surface_area_emis_199804.tif
-CTCH4_methane_fossil_emis_199805.tif
-CTCH4_methane_microbial_emis_199805.tif
-CTCH4_methane_pyrogenic_emis_199805.tif
-CTCH4_methane_total_emis_199805.tif
-CTCH4_methane_surface_area_emis_199805.tif
-CTCH4_methane_fossil_emis_199806.tif
-CTCH4_methane_microbial_emis_199806.tif
-CTCH4_methane_pyrogenic_emis_199806.tif
-CTCH4_methane_total_emis_199806.tif
-CTCH4_methane_surface_area_emis_199806.tif
-CTCH4_methane_fossil_emis_199807.tif
-CTCH4_methane_microbial_emis_199807.tif
-CTCH4_methane_pyrogenic_emis_199807.tif
-CTCH4_methane_total_emis_199807.tif
-CTCH4_methane_surface_area_emis_199807.tif
-CTCH4_methane_fossil_emis_199808.tif
-CTCH4_methane_microbial_emis_199808.tif
-CTCH4_methane_pyrogenic_emis_199808.tif
-CTCH4_methane_total_emis_199808.tif
-CTCH4_methane_surface_area_emis_199808.tif
-CTCH4_methane_fossil_emis_199809.tif
-CTCH4_methane_microbial_emis_199809.tif
-CTCH4_methane_pyrogenic_emis_199809.tif
-CTCH4_methane_total_emis_199809.tif
-CTCH4_methane_surface_area_emis_199809.tif
-CTCH4_methane_fossil_emis_199810.tif
-CTCH4_methane_microbial_emis_199810.tif
-CTCH4_methane_pyrogenic_emis_199810.tif
-CTCH4_methane_total_emis_199810.tif
-CTCH4_methane_surface_area_emis_199810.tif
-CTCH4_methane_fossil_emis_199811.tif
-CTCH4_methane_microbial_emis_199811.tif
-CTCH4_methane_pyrogenic_emis_199811.tif
-CTCH4_methane_total_emis_199811.tif
-CTCH4_methane_surface_area_emis_199811.tif
-CTCH4_methane_fossil_emis_199812.tif
-CTCH4_methane_microbial_emis_199812.tif
-CTCH4_methane_pyrogenic_emis_199812.tif
-CTCH4_methane_total_emis_199812.tif
-CTCH4_methane_surface_area_emis_199812.tif
-
-
-
-

Validate the COG using QGIS or any other means.

-

Once validated, follow the steps mentioned in the README in the folder data_transformation_plugins

- - -
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.html b/_site/data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.html deleted file mode 100644 index eb98608..0000000 --- a/_site/data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -ct-ch4-monthgrid-v2023_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html b/_site/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html deleted file mode 100644 index 33cf570..0000000 --- a/_site/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html +++ /dev/null @@ -1,1406 +0,0 @@ - - - - - - - - - -eccodarwin-co2flux-monthgrid-v5_data_flow – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/emit-ch4plume-v1_Data_Flow.html b/_site/data_workflow/emit-ch4plume-v1_Data_Flow.html deleted file mode 100644 index da98a29..0000000 --- a/_site/data_workflow/emit-ch4plume-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -emit-ch4plume-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

EMIT Methane Point Source Plume Complexes

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html b/_site/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html deleted file mode 100644 index 5f1417d..0000000 --- a/_site/data_workflow/epa-ch4emission-grid-v2express_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -epa-ch4emission-grid-v2express_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Gridded Anthropogenic Methane Emissions Inventory

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/goes-ch4plume-v1_Data_Flow.html b/_site/data_workflow/goes-ch4plume-v1_Data_Flow.html deleted file mode 100644 index f282574..0000000 --- a/_site/data_workflow/goes-ch4plume-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -goes-ch4plume-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html b/_site/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html deleted file mode 100644 index d26623d..0000000 --- a/_site/data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -gosat-based-ch4budget-yeargrid-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

GOSAT-based Top-down Total and Natural Methane Emissions

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.html b/_site/data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.html deleted file mode 100644 index b264d2d..0000000 --- a/_site/data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -gra2pes-ghg-monthgrid-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

GRAΒ²PES Greenhouse Gas and Air Quality Species

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/influx-testbed-ghg-concentrations_Data_Flow.html b/_site/data_workflow/influx-testbed-ghg-concentrations_Data_Flow.html deleted file mode 100644 index 51a9640..0000000 --- a/_site/data_workflow/influx-testbed-ghg-concentrations_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -influx-testbed-ghg-concentrations_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX)

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/lam-testbed-ghg-concentrations_Data_Flow.html b/_site/data_workflow/lam-testbed-ghg-concentrations_Data_Flow.html deleted file mode 100644 index 57d358a..0000000 --- a/_site/data_workflow/lam-testbed-ghg-concentrations_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -lam-testbed-ghg-concentrations_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.html b/_site/data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.html deleted file mode 100644 index 42f9d52..0000000 --- a/_site/data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.html +++ /dev/null @@ -1,1293 +0,0 @@ - - - - - - - - - -lpjeosim-wetlandch4-grid-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Wetland Methane Emissions, LPJ-EOSIM Model

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png b/_site/data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png deleted file mode 100644 index 97cb832..0000000 Binary files a/_site/data_workflow/media/ceos-co2budget-yeargrid-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png b/_site/data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png deleted file mode 100644 index 940dbf1..0000000 Binary files a/_site/data_workflow/media/ct-ch4-monthgrid-v2023_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png b/_site/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png deleted file mode 100644 index b9d33c8..0000000 Binary files a/_site/data_workflow/media/eccodarwin-co2flux-monthgrid-v5_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/emit-ch4plume-v1_Data_Flow.png b/_site/data_workflow/media/emit-ch4plume-v1_Data_Flow.png deleted file mode 100644 index 9bb5edb..0000000 Binary files a/_site/data_workflow/media/emit-ch4plume-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png b/_site/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png deleted file mode 100644 index 743efd2..0000000 Binary files a/_site/data_workflow/media/epa-ch4emission-grid-v2express_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/goes-ch4plume-v1_Data_Flow.png b/_site/data_workflow/media/goes-ch4plume-v1_Data_Flow.png deleted file mode 100644 index 75ef20f..0000000 Binary files a/_site/data_workflow/media/goes-ch4plume-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png b/_site/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png deleted file mode 100644 index 4a75d09..0000000 Binary files a/_site/data_workflow/media/gosat-based-ch4budget-yeargrid-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png b/_site/data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png deleted file mode 100644 index 5d0c163..0000000 Binary files a/_site/data_workflow/media/gra2pes-ghg-monthgrid-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png b/_site/data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png deleted file mode 100644 index 7a50062..0000000 Binary files a/_site/data_workflow/media/influx-testbed-ghg-concentrations_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png b/_site/data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png deleted file mode 100644 index 57dc340..0000000 Binary files a/_site/data_workflow/media/lam-testbed-ghg-concentrations_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png b/_site/data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png deleted file mode 100644 index 63946f6..0000000 Binary files a/_site/data_workflow/media/lpjeosim-wetlandch4-grid-v2_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png b/_site/data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png deleted file mode 100644 index 270e938..0000000 Binary files a/_site/data_workflow/media/micasa-carbonflux-daygrid-v1_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png b/_site/data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png deleted file mode 100644 index a9615af..0000000 Binary files a/_site/data_workflow/media/nec-testbed-ghg-concentrations_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png b/_site/data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png deleted file mode 100644 index be8645d..0000000 Binary files a/_site/data_workflow/media/noaa-gggrn-ch4-concentrations_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png b/_site/data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png deleted file mode 100644 index 79a6afe..0000000 Binary files a/_site/data_workflow/media/noaa-gggrn-co2-concentrations_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png b/_site/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png deleted file mode 100644 index dc4d2dd..0000000 Binary files a/_site/data_workflow/media/oco2geos-co2-daygrid-v10r_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png b/_site/data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png deleted file mode 100644 index 393b893..0000000 Binary files a/_site/data_workflow/media/odiac-ffco2-monthgrid-v2024_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png b/_site/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png deleted file mode 100644 index a28d8d7..0000000 Binary files a/_site/data_workflow/media/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png b/_site/data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png deleted file mode 100644 index 909c92e..0000000 Binary files a/_site/data_workflow/media/vulcan-ffco2-yeargrid-v4_Data_Flow.png and /dev/null differ diff --git a/_site/data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.html b/_site/data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.html deleted file mode 100644 index d35a9e2..0000000 --- a/_site/data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -micasa-carbonflux-daygrid-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

MiCASA Land Carbon Flux - Data Workflow

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/nec-testbed-ghg-concentrations_Data_Flow.html b/_site/data_workflow/nec-testbed-ghg-concentrations_Data_Flow.html deleted file mode 100644 index 82755c2..0000000 --- a/_site/data_workflow/nec-testbed-ghg-concentrations_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -nec-testbed-ghg-concentrations_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.html b/_site/data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.html deleted file mode 100644 index e0d635c..0000000 --- a/_site/data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -noaa-gggrn-ch4-concentrations_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Atmospheric Methane Concentrations from the NOAA Global Monitoring Laboratory

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.html b/_site/data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.html deleted file mode 100644 index 5a98975..0000000 --- a/_site/data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -noaa-gggrn-co2-concentrations_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html b/_site/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html deleted file mode 100644 index e75460d..0000000 --- a/_site/data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -oco2-mip-co2budget-yeargrid-v1_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

OCO-2 MIP Top-Down COβ‚‚ Budgets

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html b/_site/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html deleted file mode 100644 index d90f3e2..0000000 --- a/_site/data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -oco2geos-co2-daygrid-v10r_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

OCO-2 GEOS Column COβ‚‚ Concentrations

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.html b/_site/data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.html deleted file mode 100644 index e7e2289..0000000 --- a/_site/data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -odiac-ffco2-monthgrid-v2024_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html b/_site/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html deleted file mode 100644 index a225992..0000000 --- a/_site/data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -sedac-popdensity-yeargrid5yr-v4.11_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

SEDAC Gridded World Population Data

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.html b/_site/data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.html deleted file mode 100644 index 67b5c02..0000000 --- a/_site/data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.html +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - - - - - -vulcan-ffco2-yeargrid-v4_data_flow – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Vulcan Fossil Fuel COβ‚‚ Emissions

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow2/NRT_data_download.html b/_site/data_workflow2/NRT_data_download.html deleted file mode 100644 index eee08ac..0000000 --- a/_site/data_workflow2/NRT_data_download.html +++ /dev/null @@ -1,1487 +0,0 @@ - - - - - - - - - -nrt_data_download – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

NRT Data Download

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow2/NRT_directory_structure.html b/_site/data_workflow2/NRT_directory_structure.html deleted file mode 100644 index fda7d30..0000000 --- a/_site/data_workflow2/NRT_directory_structure.html +++ /dev/null @@ -1,1487 +0,0 @@ - - - - - - - - - -nrt_directory_structure – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

NRT Directory Structure

-
-
-

-
Data Flow Diagram Extending From Acquisition/Creation to User Delivery
-
-
- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/data_workflow2/media/NRT_data.png b/_site/data_workflow2/media/NRT_data.png deleted file mode 100644 index 481a016..0000000 Binary files a/_site/data_workflow2/media/NRT_data.png and /dev/null differ diff --git a/_site/data_workflow2/media/NRT_dir.png b/_site/data_workflow2/media/NRT_dir.png deleted file mode 100644 index 78451c5..0000000 Binary files a/_site/data_workflow2/media/NRT_dir.png and /dev/null differ diff --git a/_site/data_workflow2/test.html b/_site/data_workflow2/test.html deleted file mode 100644 index f061ca5..0000000 --- a/_site/data_workflow2/test.html +++ /dev/null @@ -1,1377 +0,0 @@ - - - - - - - - - -test – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - - - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/datatransformationcode.html b/_site/datatransformationcode.html deleted file mode 100644 index e3999b3..0000000 --- a/_site/datatransformationcode.html +++ /dev/null @@ -1,1329 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Data Transformation Notebooks – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Data Transformation Notebooks

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for the U.S. Greenhouse Gas (GHG) Center data transformation notebooks. Our curated collection of GHG datasets are optimized for seamless accessibility and analysis. The GHG Center uses Cloud Optimized Geotiffs (COGs) and other cloud-optimized data formats where applicable to offer a dynamic platform for exploring and analyzing data within the GHG Center Data Catalog.

-

If a dataset was processed from its original format for integration into the GHG Center portal, the code used for this transformation is cataloged below. Click on a dataset name to learn more about the process.

-

Note: Not all datasets have a transformation code

- -
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/datausage.html b/_site/datausage.html deleted file mode 100644 index b7abe61..0000000 --- a/_site/datausage.html +++ /dev/null @@ -1,1524 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Data Usage Notebooks – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Data Usage Notebooks

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for the U.S. Greenhouse Gas (GHG) Center data usage notebooks. Each dataset available in the GHG Center Data Catalog has an associated β€œIntroductory notebook” created by the GHG Center team which demonstrates how to access, visualize, and conduct basic data analysis in a Jupyter Notebook environment. Additional notebooks may be provided with each dataset. Click on a dataset under β€œGHG Center Dataset Tutorials” to learn more about the dataset and to view the associated code notebooks.

-

Along with GHG Center-curated notebooks, science users can also contribute notebooks that use GHG Center datasets. Notebooks submitted by the scientific community can be found under the β€œCommunity-Contributed Tutorials” section.

-
-

GHG Center Dataset Tutorials

-

Tutorial notebooks created by the GHG Center team. Introductory notebooks demonstrate how to access, visualize, and conduct basic data analysis for each dataset available in the GHG Center Data Catalog. Notebooks demonstrating how to conduct additional or more specialized analyses may also be listed under the relevant dataset.

- -
-
-

Community-Contributed Tutorials

-

Notebooks provided by the scientific community that use GHG Center datasets. The GHG Center is in the process of establishing a workflow for community notebook contribution. Once available, the contribution process will be published here. In the meantime, please submit any notebook contribution inquiries through the US GHG Center Contact Form.
-Note: these notebooks are contributed by the scientific community, and are not actively maintained by the GHG Center team.

-
-
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/generating_statistics_for_validation/gra2pes-ghg-monthgrid-v1/gra2pes-ghg-monthgrid-v1-generate-statistics.html b/_site/generating_statistics_for_validation/gra2pes-ghg-monthgrid-v1/gra2pes-ghg-monthgrid-v1-generate-statistics.html deleted file mode 100644 index 8e74295..0000000 --- a/_site/generating_statistics_for_validation/gra2pes-ghg-monthgrid-v1/gra2pes-ghg-monthgrid-v1-generate-statistics.html +++ /dev/null @@ -1,1405 +0,0 @@ - - - - - - - - - -gra2pes-ghg-monthgrid-v1-generate-statistics – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-
import xarray as xr
-import os
-import glob
-from  datetime import datetime
-import boto3
-import s3fs
-import tempfile
-import numpy as np
-import pandas as pd
-import re
-import json
-
-
-
raw_files = glob.glob("data/*.nc4")
-output_files= glob.glob("output_final2/*.tif")
-
-
-
def extract_date_from_key(key):
-    # Split the key to isolate the part that contains the date
-    parts = key.split('_')
-    for part in parts:
-        # Check if the part is numeric and has the length of 6 (YYYYMM format)
-        if part.isdigit() and len(part) == 6:
-            return part
-    return None
-
-
-
overall_raw= []
-raw= pd.DataFrame(columns=['filename','min_raw','max_raw','mean_raw','std_raw'])
-for file in raw_files:
-    xds= xr.open_dataset(file)
-    year_month = extract_date_from_key(file)
-    for var in ["PM25-PRI","CO2","CO","NOX","SOX"]:
-        data = getattr(xds,var)
-        overall_raw.append(data)
-        data = np.ma.masked_where((data == -9999), data)
-        min_val = np.nanmin(data)
-        max_val = np.nanmax(data)
-        mean_val = np.nanmean(data)
-        std_val = np.nanstd(data)
-        stats = [f"{var}_{year_month}", min_val, max_val, mean_val, std_val]
-        raw.loc[len(raw)] = stats
-
-
-
overall_cog=[]
-cog= pd.DataFrame(columns=['filename','min_cog','max_cog','mean_cog','std_cog'])
-for file in output_files:
-    data= xr.open_dataarray(file)
-    
-    year_month = file[:-4][-6:]
-    var = file.split("_")[-2]
-    overall_cog.append(data)
-    data = np.ma.masked_where((data == -9999), data)
-    
-    
-    min_val = np.nanmin(data)
-    max_val = np.nanmax(data)
-    mean_val = np.nanmean(data)
-    std_val = np.nanstd(data)
-    stats = [f"{var}_{year_month}", min_val, max_val, mean_val, std_val]
-    cog.loc[len(cog)] = stats
-
-
-
# validation for reprojected data (non zero) - overall calculation
-overall_raw= np.array(overall_raw)
-overall_raw= np.ma.masked_where((overall_raw == -9999) , overall_raw)
-nan_min = np.nanmin(overall_raw)
-nan_max = np.nanmax(overall_raw)
-nan_mean = np.nanmean(overall_raw)
-nan_std = np.nanstd(overall_raw)
-["overall_raw",nan_min,nan_max,nan_mean,nan_std]
-
-
['overall_raw', 0.0, 110011.766, 5.1753755, 172.26357]
-
-
-
-
overall_cog= np.array(overall_cog)
-nan_min = np.nanmin(overall_cog)
-nan_max = np.nanmax(overall_cog)
-nan_mean = np.nanmean(overall_cog)
-nan_std = np.nanstd(overall_cog)
-["overall_cog",nan_min,nan_max,nan_mean,nan_std]
-
-
['overall_cog', 0.0, 110011.766, 5.1753297, 172.27177]
-
-
-
-
pd.merge(cog, raw, on='filename', how='inner').to_json("monthly_stats.json")
-
-
-

-keys = ["data", "nan_min", "nan_max", "nan_mean", "nan_std"]
-values_set1 = ["overall_raw", 0.0, 110011.766, 5.1753297, 172.27177]
-values_set2 = ["overall_cog", 0.0, 110011.766, 5.1753297, 172.27177]
-
-data_dict = {key: [val1, val2] for key, val1, val2 in zip(keys, values_set1, values_set2)}
-
-# Save the dictionary as a JSON file
-with open("overall_stats.json", "w") as json_file:
-    json.dump(data_dict, json_file, indent=4)
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/generating_statistics_for_validation/odiac-stats-2023/generate_odiac_stats.html b/_site/generating_statistics_for_validation/odiac-stats-2023/generate_odiac_stats.html deleted file mode 100644 index 87b09c4..0000000 --- a/_site/generating_statistics_for_validation/odiac-stats-2023/generate_odiac_stats.html +++ /dev/null @@ -1,1474 +0,0 @@ - - - - - - - - - -generate_odiac_stats – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

-import numpy as np
-import matplotlib.pyplot as plt
-import rasterio
-from glob import glob
-import pathlib
-import boto3
-import pandas as pd
-import calendar
-import seaborn as sns
-import json
-import re
-
-
-
# Enter the year you want to run validation on
-vyear=2022 # summary json files will be later generated for the year you provide here
-data_dir="data/" # make sure you have the data for vyear in your data directory
-
-
-
session = boto3.session.Session()
-s3_client = session.client("s3")
-
-dataset_name= "odiac-ffco2-monthgrid-v2023"
-cog_data_bucket="ghgc-data-store-develop"
-cog_data_prefix = f"transformed_cogs/{dataset_name}"
-
-
-
def get_all_s3_keys(bucket, model_name, ext):
-    """Get a list of all keys in an S3 bucket."""
-    keys = []
-
-    kwargs = {"Bucket": bucket, "Prefix": f"{model_name}/"}
-    while True:
-        resp = s3_client.list_objects_v2(**kwargs)
-        for obj in resp["Contents"]:
-            if obj["Key"].endswith(ext) and "historical" not in obj["Key"]:
-                keys.append(obj["Key"])
-
-        try:
-            kwargs["ContinuationToken"] = resp["NextContinuationToken"]
-        except KeyError:
-            break
-
-    return keys
-
-keys = get_all_s3_keys(cog_data_bucket, cog_data_prefix, ".tif")
-
-# Extract only the COGs for selected year
-pattern = re.compile(rf'{vyear}(0[1-9]|1[0-2])')
-keys = [path for path in keys if pattern.search(path)]
-
-
-
# Initialize the summary variables
-summary_dict_netcdf, summary_dict_cog = {}, {}
-overall_stats_netcdf, overall_stats_cog = {}, {}
-full_data_df_netcdf, full_data_df_cog = pd.DataFrame(), pd.DataFrame()
-
-
-
# Process the COGs to get the statistics
-for key in keys:
-    url=f"s3://{cog_data_bucket}/{key}"
-    with rasterio.open(url) as src:
-        filename_elements = re.split("[_ ? . ]", url)
-        for band in src.indexes:
-            print("_".join(filename_elements[1:6]))
-            idx = pd.MultiIndex.from_product(
-                    [
-                        ["_".join(filename_elements[1:6])],
-                        [filename_elements[5]],
-                        [x for x in np.arange(1, src.height + 1)],
-                    ]
-                )
-            raster_data = src.read(band)
-            raster_data[raster_data == -9999] = 0 # because we did that in the transformation script
-            temp = pd.DataFrame(index=idx, data=raster_data)
-            full_data_df_cog = full_data_df_cog._append(temp, ignore_index=False)
-
-            # Calculate summary statistics
-            min_value = np.float64(temp.values.min())
-            max_value = np.float64(temp.values.max())
-            mean_value = np.float64(temp.values.mean())
-            std_value = np.float64(temp.values.std())
-
-            summary_dict_cog[
-                    f'{"_".join(filename_elements[1:5])}_{filename_elements[5][:4]}_{calendar.month_name[int(filename_elements[5][4:])]}'
-                ] = {
-                    "min_value": min_value,
-                    "max_value": max_value,
-                    "mean_value": mean_value,
-                    "std_value": std_value,
-                }
-
-
-
# Process the raw files for selected year to get the statistics 
-tif_files = glob(f"{data_dir}{vyear}/*.tif", recursive=True)
-for tif_file in tif_files:
-    file_name = pathlib.Path(tif_file).name[:-4]
-    print(file_name)
-    with rasterio.open(tif_file) as src:
-        for band in src.indexes:
-            idx = pd.MultiIndex.from_product(
-                [
-                    [pathlib.Path(tif_file).name[:-9]],
-                    [pathlib.Path(tif_file).name[-8:-4]],
-                    [x for x in np.arange(1, src.height + 1)],
-                ]
-            )
-            # Read the raster data
-            raster_data = src.read(band)
-            #raster_data[raster_data == -9999] = np.nan
-            temp = pd.DataFrame(index=idx, data=raster_data)
-            full_data_df_netcdf = full_data_df_netcdf._append(temp, ignore_index=False)
-
-            # Calculate summary statistics
-            min_value = np.float64(temp.values.min())
-            max_value = np.float64(temp.values.max())
-            mean_value = np.float64(temp.values.mean())
-            std_value = np.float64(temp.values.std())
-
-            summary_dict_netcdf[
-                f'{tif_file.split("/")[-1][:-9]}_{calendar.month_name[int(tif_file.split("/")[-1][-6:-4])]}'
-            ] = {
-                "min_value": min_value,
-                "max_value": max_value,
-                "mean_value": mean_value,
-                "std_value": std_value,
-            }
-            
-
-
-
# Merge monthly stats for COGs and raw files in a csv file 
-cog_df = pd.DataFrame(summary_dict_cog).T.reset_index()
-raw_df = pd.DataFrame(summary_dict_netcdf).T.reset_index()
-cog_df['date']= cog_df["index"].apply(lambda x: (x.split("_")[-1]+x.split("_")[-2]) )
-raw_df['date']= raw_df["index"].apply(lambda x: (x.split("_")[-1]+str(vyear)) )
-check_df=pd.merge(cog_df, raw_df[["min_value","max_value","mean_value","std_value","date"]], how='inner', on='date',suffixes=('', '_raw'))
-check_df.to_csv(f"monthly_stats_{vyear}.csv")
-
-
-
# Calculate the overall data stat for that year
-overall_stats_netcdf["min_value"] = np.float64(full_data_df_netcdf.values.min())
-overall_stats_netcdf["max_value"] = np.float64(full_data_df_netcdf.values.max())
-overall_stats_netcdf["mean_value"] = np.float64(full_data_df_netcdf.values.mean())
-overall_stats_netcdf["std_value"] = np.float64(full_data_df_netcdf.values.std())
-
-overall_stats_cog["min_value"] = np.float64(full_data_df_cog.values.min())
-overall_stats_cog["max_value"] = np.float64(full_data_df_cog.values.max())
-overall_stats_cog["mean_value"] = np.float64(full_data_df_cog.values.mean())
-overall_stats_cog["std_value"] = np.float64(full_data_df_cog.values.std())
-
-
-

-data = {
-    "Stats for raw netCDF files.": summary_dict_netcdf,
-    "Stats for transformed COG files.": summary_dict_cog
-}
-
-# Writing to JSON file
-with open(f"monthly_stats_{vyear}.json", "w") as fp:
-    json.dump(data, fp, indent=4) 
-
-data = {
-    "Stats for raw netCDF files.": overall_stats_netcdf,
-    "Stats for transformed COG files.": overall_stats_cog
-}
-
-# Writing to JSON file
-with open(f"overall_stats_{vyear}.json", "w") as fp:
-    json.dump(data, fp, indent=4) 
-
- - - - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/git-github-comprehensive-guide.html b/_site/git-github-comprehensive-guide.html deleted file mode 100644 index b924bce..0000000 --- a/_site/git-github-comprehensive-guide.html +++ /dev/null @@ -1,1502 +0,0 @@ - - - - - - - - - -git-github-comprehensive-guide – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

Git and GitHub Comprehensive Training Guide

-
-
-

Introduction

-

Git is a distributed version control system that tracks changes in your code over time. GitHub is a cloud-based hosting service that lets you manage Git repositories with additional collaboration features. This guide will walk you through everything you need to know to get started with Git and GitHub on macOS.

-
-

Why Use Git and GitHub?

-
    -
  • Version Control: Track every change made to your code
  • -
  • Collaboration: Work with others without conflicts
  • -
  • Backup: Your code is safely stored in the cloud
  • -
  • Documentation: Built-in wiki and issue tracking
  • -
  • Portfolio: Showcase your work to potential employers
  • -
- - -
-
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/index.html b/_site/index.html deleted file mode 100644 index 050998c..0000000 --- a/_site/index.html +++ /dev/null @@ -1,1499 +0,0 @@ - - - - - - - - - -NASA Disasters: Documentation – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

NASA Disasters: Documentation

-

Resources for Disasters Datasets, Stories, and Visualizations

-
- - - -
- - - - -
- - - -
- - -
-

Welcome

-

The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.

-

On this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.

-
-
-

Contents

-
    -
  1. A guide to access AWS resources, with guidelines to utilize AWS commands and operations.
  2. -
  3. Directions on how to setup GitHub, access a repository, use commands, and understand the GitHub workflow in Disasters.
  4. -
  5. How to use JupyterHub to work collaboratively on notebooks within a repositroy and the Disasters framework.
  6. -
-
-
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/index2.html b/_site/index2.html deleted file mode 100644 index d9a9b1a..0000000 --- a/_site/index2.html +++ /dev/null @@ -1,1448 +0,0 @@ - - - - - - - - - -NASA Disasters: Documentation – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

NASA Disasters: Documentation

-

Resources for Disasters Datasets, Stories, and Visualizations

-
- - - -
- - - - -
- - - -
- - -
-

Welcome

-

The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.

-

On this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.

-
-
-

Contents

-
    -
  1. A guide to access AWS resources, with guidelines to utilize AWS commands and operations.
  2. -
  3. Directions on how to setup GitHub, access a repository, use commands, and understand the GitHub workflow in Disasters.
  4. -
  5. How to use JupyterHub to work collaboratively on notebooks within a repositroy and the Disasters framework.
  6. -
-
-
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/jupyterhub.html b/_site/jupyterhub.html deleted file mode 100644 index f433488..0000000 --- a/_site/jupyterhub.html +++ /dev/null @@ -1,1523 +0,0 @@ - - - - - - - - - -jupyterhub – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - - - - -
-

JupyterHub Training Guide - Disasters Hub

-
-
-

Introduction

-
-

What is JupyterHub?

-

JupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:

-
    -
  • Access powerful computing resources through your web browser
  • -
  • Write and execute code in Python, R, Julia, and other languages
  • -
  • Visualize data with interactive plots and charts
  • -
  • Collaborate with team members on shared projects
  • -
  • Work from anywhere without local setup requirements
  • -
-
-
-

The Disasters Hub

-

The Disasters Hub is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:

-
    -
  • Pre-configured environments for geospatial analysis
  • -
  • Access to disaster-related datasets
  • -
  • Collaboration tools for response teams
  • -
  • Integration with cloud storage services
  • -
  • Scalable computing resources
  • -
-
-
-

Key Benefits

-

βœ… No Installation Required - Everything runs in your browser
-βœ… Pre-configured Environments - Common packages already installed
-βœ… Persistent Storage - Your work is saved between sessions
-βœ… Collaboration Ready - Share notebooks with team members
-βœ… Scalable Resources - Access to GPU and high-memory instances when needed

- - -
-
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/jupyterhub.qmd b/_site/jupyterhub.qmd deleted file mode 100644 index e69de29..0000000 diff --git a/_site/logo/disasters-logo.svg b/_site/logo/disasters-logo.svg deleted file mode 100644 index 0b77887..0000000 --- a/_site/logo/disasters-logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/_site/logo/disasters_logo.png b/_site/logo/disasters_logo.png deleted file mode 100644 index 19644b5..0000000 Binary files a/_site/logo/disasters_logo.png and /dev/null differ diff --git a/_site/logo/ghgc-logo-light.svg b/_site/logo/ghgc-logo-light.svg deleted file mode 100644 index 7e995fb..0000000 --- a/_site/logo/ghgc-logo-light.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/_site/processing_and_verification_reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.html b/_site/processing_and_verification_reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.html deleted file mode 100644 index 28859f8..0000000 --- a/_site/processing_and_verification_reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes

-
- -
-
- Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 2023 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html b/_site/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html deleted file mode 100644 index 99901d8..0000000 --- a/_site/processing_and_verification_reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5 – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5

-
- -
-
- Global, monthly average air-sea COβ‚‚ flux at ~1/3Β° resolution from 2020 to 2022 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html deleted file mode 100644 index 7f95830..0000000 --- a/_site/processing_and_verification_reports/emit-ch4plume-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -EMIT Methane Point Source Plume Complexes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

EMIT Methane Point Source Plume Complexes

-
- -
-
- Methane point source plume complexes measured by the EMIT imaging spectrometer on the International Space Station (ISS) -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html b/_site/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html deleted file mode 100644 index 01da677..0000000 --- a/_site/processing_and_verification_reports/epa-ch4emission-grid-v2express_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Gridded Anthropogenic Methane Emissions Inventory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Gridded Anthropogenic Methane Emissions Inventory

-
- -
-
- Spatially disaggregated 0.1Β°x 0.1Β° annual maps of U.S. anthropogenic methane emissions, consistent with the U.S. Inventory of Greenhouse Gas Emissions and Sinks -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/goes-ch4plume-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/goes-ch4plume-v1_Processing and Verification Report.html deleted file mode 100644 index 22e1619..0000000 --- a/_site/processing_and_verification_reports/goes-ch4plume-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure

-
- -
-
- A sample of methane plumes from point sources observed since 2019 by the U.S. Geostationary Operational Environmental Satellites (GOES) over North and South America -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html deleted file mode 100644 index dbfad46..0000000 --- a/_site/processing_and_verification_reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -GOSAT-based Top-down Total and Natural Methane Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GOSAT-based Top-down Total and Natural Methane Emissions

-
- -
-
- Total and wetland yearly methane emissions derived using the GEOS-Chem global chemistry transport model with inclusion of GOSAT data for 2010 to 2022 on a 4 x 5 degree (lat/lon) grid -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.html deleted file mode 100644 index 93e27e6..0000000 --- a/_site/processing_and_verification_reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -GRAΒ²PES Greenhouse Gas and Air Quality Species – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GRAΒ²PES Greenhouse Gas and Air Quality Species

-
- -
-
- Monthly, 0.036 degree resolution emissions of carbon dioxide (COβ‚‚), carbon monoxide (CO), nitrogen oxide (NOβ‚“), sulfur dioxide (SOβ‚‚), and particulate matter (PM2.5) emissions for the year 2021 over the Contiguous United States from the Greenhouse gas And Air Pollutants Emissions System (GRAΒ²PES). -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/influx-testbed-ghg-concentrations_Processing and Verification Report.html b/_site/processing_and_verification_reports/influx-testbed-ghg-concentrations_Processing and Verification Report.html deleted file mode 100644 index 8a5a8f7..0000000 --- a/_site/processing_and_verification_reports/influx-testbed-ghg-concentrations_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX) – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX)

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at Indianapolis Flux Experiment (INFLUX) tower sites -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/lam-testbed-ghg-concentrations_Processing and Verification Report.html b/_site/processing_and_verification_reports/lam-testbed-ghg-concentrations_Processing and Verification Report.html deleted file mode 100644 index 5287baf..0000000 --- a/_site/processing_and_verification_reports/lam-testbed-ghg-concentrations_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower and rooftop sites in California’s South Coast Air Basin -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/lpjeosim-wetlandch4-grid-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/lpjeosim-wetlandch4-grid-v1_Processing and Verification Report.html deleted file mode 100644 index c038f06..0000000 --- a/_site/processing_and_verification_reports/lpjeosim-wetlandch4-grid-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Wetland Methane Emissions, LPJ-EOSIM Model – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Wetland Methane Emissions, LPJ-EOSIM Model

-
- -
-
- Global, daily and monthly 0.5 degree resolution estimates of wetland methane emissions from the LPJ-EOSIM model -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.html deleted file mode 100644 index 8bcba49..0000000 --- a/_site/processing_and_verification_reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -MiCASA Land Carbon Flux – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

MiCASA Land Carbon Flux

-
- -
-
- Global, daily 0.1 degree resolution carbon fluxes from net primary production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), fuel wood burning emissions (FUEL), net ecosystem exchange (NEE), and net biosphere exchange (NBE) derived from the MiCASA model, version 1 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/nec-testbed-ghg-concentrations_Processing and Verification Report.html b/_site/processing_and_verification_reports/nec-testbed-ghg-concentrations_Processing and Verification Report.html deleted file mode 100644 index 85df9b7..0000000 --- a/_site/processing_and_verification_reports/nec-testbed-ghg-concentrations_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower sites in the Northeastern U.S. -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.html b/_site/processing_and_verification_reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.html deleted file mode 100644 index 99d5016..0000000 --- a/_site/processing_and_verification_reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Atmospheric Methane Concentrations from the NOAA Global Monitoring Laboratory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Atmospheric Methane Concentrations from the NOAA Global Monitoring Laboratory

-
- -
-
- Atmospheric concentrations of methane (CHβ‚„) collected since 1976 at globally distributed surface sites -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.html b/_site/processing_and_verification_reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.html deleted file mode 100644 index f7f2b4a..0000000 --- a/_site/processing_and_verification_reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) collected since 1968 at globally distributed surface sites -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html b/_site/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html deleted file mode 100644 index bce5c97..0000000 --- a/_site/processing_and_verification_reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -OCO-2 MIP Top-Down COβ‚‚ Budgets – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 MIP Top-Down COβ‚‚ Budgets

-
- -
-
- Global, 1 degree resolution pilot top-down budgets of carbon dioxide emissions at 5 year intervals and national scales, version 1 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html b/_site/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html deleted file mode 100644 index e26d39d..0000000 --- a/_site/processing_and_verification_reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -OCO-2 GEOS Column COβ‚‚ Concentrations – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 GEOS Column COβ‚‚ Concentrations

-
- -
-
- Daily, global 0.5 x 0.625 degree column COβ‚‚ concentrations derived from OCO-2 satellite data, version 10r -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.html b/_site/processing_and_verification_reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.html deleted file mode 100644 index b534ec2..0000000 --- a/_site/processing_and_verification_reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Global, monthly 1 km resolution dataset of fossil fuel carbon dioxide emissions, version 2024 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.pdf deleted file mode 100644 index a7d4f2f..0000000 Binary files a/_site/processing_and_verification_reports/reports/ct-ch4-monthgrid-v2023_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf deleted file mode 100644 index 324b998..0000000 Binary files a/_site/processing_and_verification_reports/reports/eccodarwin-co2flux-monthgrid-v5_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf deleted file mode 100644 index b046eec..0000000 Binary files a/_site/processing_and_verification_reports/reports/emit-ch4plume-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf deleted file mode 100644 index 0c8dded..0000000 Binary files a/_site/processing_and_verification_reports/reports/epa-ch4emission-grid-v2express_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/goes-ch4plume-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/goes-ch4plume-v1_Processing and Verification Report.pdf deleted file mode 100644 index ada4082..0000000 Binary files a/_site/processing_and_verification_reports/reports/goes-ch4plume-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf deleted file mode 100644 index c8ace06..0000000 Binary files a/_site/processing_and_verification_reports/reports/gosat-based-ch4budget-yeargrid-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.pdf deleted file mode 100644 index c819243..0000000 Binary files a/_site/processing_and_verification_reports/reports/gra2pes-ghg-monthgrid-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/influx-testbed-ghg-concentrations_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/influx-testbed-ghg-concentrations_Processing and Verification Report.pdf deleted file mode 100644 index 0da29f3..0000000 Binary files a/_site/processing_and_verification_reports/reports/influx-testbed-ghg-concentrations_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/lam-testbed-ghg-concentrations_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/lam-testbed-ghg-concentrations_Processing and Verification Report.pdf deleted file mode 100644 index ccfb20e..0000000 Binary files a/_site/processing_and_verification_reports/reports/lam-testbed-ghg-concentrations_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/lpjeosim-wetlandch4-grid-v2_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/lpjeosim-wetlandch4-grid-v2_Processing and Verification Report.pdf deleted file mode 100644 index 22922d0..0000000 Binary files a/_site/processing_and_verification_reports/reports/lpjeosim-wetlandch4-grid-v2_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.pdf deleted file mode 100644 index 687bada..0000000 Binary files a/_site/processing_and_verification_reports/reports/micasa-carbonflux-daygrid-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/nec-testbed-ghg-concentrations_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/nec-testbed-ghg-concentrations_Processing and Verification Report.pdf deleted file mode 100644 index 29ce564..0000000 Binary files a/_site/processing_and_verification_reports/reports/nec-testbed-ghg-concentrations_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.pdf deleted file mode 100644 index 551a528..0000000 Binary files a/_site/processing_and_verification_reports/reports/noaa-gggrn-ch4-concentrations_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.pdf deleted file mode 100644 index dc47715..0000000 Binary files a/_site/processing_and_verification_reports/reports/noaa-gggrn-co2-concentrations_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf deleted file mode 100644 index 20a1cf3..0000000 Binary files a/_site/processing_and_verification_reports/reports/oco2-mip-co2budget-yeargrid-v1_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf deleted file mode 100644 index 76fc289..0000000 Binary files a/_site/processing_and_verification_reports/reports/oco2geos-co2-daygrid-v10r_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.pdf deleted file mode 100644 index ef6dfd7..0000000 Binary files a/_site/processing_and_verification_reports/reports/odiac-ffco2-monthgrid-v2024_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf deleted file mode 100644 index 5903fed..0000000 Binary files a/_site/processing_and_verification_reports/reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.pdf b/_site/processing_and_verification_reports/reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.pdf deleted file mode 100644 index 69b94c3..0000000 Binary files a/_site/processing_and_verification_reports/reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.pdf and /dev/null differ diff --git a/_site/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html b/_site/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html deleted file mode 100644 index 3b24200..0000000 --- a/_site/processing_and_verification_reports/sedac-popdensity-yeargrid5yr-v4.11_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -SEDAC Gridded World Population Density – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

SEDAC Gridded World Population Density

-
- -
-
- Global, 1 km resolution human population density estimates based on national censuses and population registers, version 4.11 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processing_and_verification_reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.html b/_site/processing_and_verification_reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.html deleted file mode 100644 index e278bde..0000000 --- a/_site/processing_and_verification_reports/vulcan-ffco2-yeargrid-v4_Processing and Verification Report.html +++ /dev/null @@ -1,1311 +0,0 @@ - - - - - - - - - - -Vulcan Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Vulcan Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Annual (2010 - 2021), 1 km resolution estimates of carbon dioxide emissions from fossil fuel combustion over the contiguous United States, version 4.0 -
-
- - -
- - - - -
- - - -
- - - - -

-This browser does not support PDFs. Please download the PDF to view it: Download PDF. -

- -
- - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/processingreport.html b/_site/processingreport.html deleted file mode 100644 index 363aaf2..0000000 --- a/_site/processingreport.html +++ /dev/null @@ -1,1333 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Processing and Verification Reports – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Processing and Verification Reports

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for the U.S. Greenhouse Gas (GHG) Center processing and verification reports. These reports document the steps taken to verify the accuracy and integrity of each dataset once it’s processed into the U.S. GHG Center.

-

Click on a dataset name to view the processing and verification report for that dataset.

-

Examples of processing that may occur include transforming data from its source format into a could-optimized format, converting the units of the source data into a more common or standard unit, and flagging β€œnodata” values to ensure accurate data visualization. We strive to responsibly handle all data, and share these reports to provide transparency and insight into any processing that is applied, while ensuring accuracy and reliability throughout the process.

-

View the US GHG Center Data Catalog

- -
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/quarto-guide.html b/_site/quarto-guide.html deleted file mode 100644 index 45ac458..0000000 --- a/_site/quarto-guide.html +++ /dev/null @@ -1,3102 +0,0 @@ - - - - - - - - - - - -Quarto Guide for Beginners – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Quarto Guide for Beginners

-

Everything you need to know to get started with Quarto

-
- - - -
- -
-
Author
-
-

Documentation Team

-
-
- -
-
Published
-
-

October 24, 2025

-
-
- - -
- - - -
- - -
-

What is Quarto?

-

Quarto is an open-source scientific and technical publishing system built on Pandoc. It allows you to create dynamic documents that combine:

-
    -
  • Narrative text (written in Markdown)
  • -
  • Code (Python, R, Julia, Observable JS)
  • -
  • Code outputs (plots, tables, results)
  • -
  • Equations, citations, cross-references
  • -
-

Think of Quarto as a powerful tool to create everything from simple documents to complex websites, presentations, and books.

-
-

Key Benefits

-
    -
  • Multiple outputs from one source - Write once, publish to HTML, PDF, Word, PowerPoint
  • -
  • Language agnostic - Works with Python, R, Julia, and more
  • -
  • Reproducible - Code and narrative in the same document
  • -
  • Professional - Publication-quality output
  • -
-
-
-
-

File Types and Formats

-
-

Source Files

-
-

.qmd Files (Quarto Markdown)

-

The primary file type for Quarto documents:

-
---
-title: "My Document"
-format: html
----
-
-## Introduction
-
-This is a Quarto document with **markdown** formatting.
-
-::: {#8c88dc2e .cell execution_count=1}
-``` {.python .cell-code}
-# You can include code
-print("Hello from Python!")
-
-
Hello from Python!
-
-

:::

-

-#### .ipynb Files (Jupyter Notebooks)
-
-Quarto can directly render Jupyter notebooks:
-
-- Keep your existing notebook workflow
-- Add Quarto features through cell metadata
-- Render notebooks to any format
-
-#### .md Files (Plain Markdown)
-
-Standard Markdown files can be rendered by Quarto, though they lack code execution capabilities.
-
-### Output Formats
-
-Quarto can generate:
-
-| Format | Extension | Use Case |
-|--------|-----------|----------|
-| HTML | .html | Websites, interactive documents |
-| PDF | .pdf | Print publications, reports |
-| Word | .docx | Microsoft Word documents |
-| PowerPoint | .pptx | Presentations |
-| Reveal.js | .html | Interactive HTML presentations |
-| EPUB | .epub | E-books |
-| Markdown | .md | GitHub, other platforms |
-
-## Creating Different Types of Documents
-
-### Basic Document
-
-Simplest Quarto document:
-
-```yaml
----
-title: "My First Document"
-author: "Your Name"
-date: today
-format: html
----
-
-## Section 1
-
-Content goes here.
-
-
-
-

Multi-Format Document

-

Output to multiple formats:

-
---
-title: "Multi-Format Document"
-format:
-  html:
-    toc: true
-    code-fold: true
-  pdf:
-    documentclass: article
-  docx:
-    reference-doc: template.docx
----
-
-
-

Presentation (PowerPoint)

-
---
-title: "My Presentation"
-format:
-  pptx:
-    slide-level: 2
----
-
-# Section Title
-
-## Slide 1
-
-- First point
-- Second point
-
-## Slide 2
-
-More content here.
-

Important: Level 1 headers (#) create section dividers, Level 2 headers (##) create new slides.

-
-
-

Presentation (Reveal.js)

-
---
-title: "Interactive Presentation"
-format:
-  revealjs:
-    theme: dark
-    transition: slide
----
-
-
-

Website/Book

-

Requires a _quarto.yml configuration file (covered below).

-
-
-
-

YAML Front Matter

-

Every .qmd file starts with YAML front matter between --- markers. This controls document behavior.

-
-

Essential YAML Options

-
---
-title: "Document Title"           # Required
-subtitle: "Optional subtitle"     # Optional
-author: "Author Name"             # Optional
-date: today                       # or "2024-01-15"
-format: html                      # Output format
----
-
-
-

Format-Specific Options

-
-

HTML Options

-
format:
-  html:
-    toc: true                    # Table of contents
-    toc-depth: 3                 # How many header levels
-    code-fold: false             # Collapsible code
-    code-tools: true             # Code display options
-    theme: cosmo                 # Visual theme
-    css: styles.css              # Custom CSS
-
-
-

PDF Options

-
format:
-  pdf:
-    documentclass: article
-    geometry:
-      - margin=1in
-    toc: true
-    number-sections: true
-
-
-

PowerPoint Options

-
format:
-  pptx:
-    reference-doc: template.pptx  # Custom template
-    slide-level: 2                # Which heading creates slides
-    incremental: true             # Bullets appear one by one
-
-
-
-
-

The _quarto.yml Configuration File

-

The _quarto.yml file controls project-level settings for websites and books.

-
-

Basic Website Configuration

-
project:
-  type: website
-
-website:
-  title: "My Website"
-  navbar:
-    left:
-      - href: index.qmd
-        text: Home
-      - href: about.qmd
-        text: About
-
- -
-

Adding Files to Navigation

-
-

Adding a Single Document

-
website:
-  sidebar:
-    contents:
-      - href: new-document.qmd
-        text: "Display Name"
-
-
-

Adding a Section with Multiple Documents

-
website:
-  sidebar:
-    contents:
-      - section: "Section Name"
-        contents:
-          - doc1.qmd
-          - doc2.qmd
-          - text: "Custom Name"
-            href: doc3.qmd
-
- -
-
-

Global Format Settings

-

Apply settings to all documents:

-
format:
-  html:
-    theme: cosmo
-    css: styles.css
-    toc: true
-    code-copy: true
-
-
-
-

Working with Code

-
-

Code Blocks

-
```python
-# Python code
-import pandas as pd
-data = pd.read_csv('file.csv')
-print(data.head())
-```
-
-
-

Executable vs. Non-Executable Code

-

By default, code blocks in .qmd files are executable. To display code without running:

-

-::: {#f6819db2 .cell execution_count=2}
-``` {.python .cell-code}
-# This code is shown but not executed
-```
-:::
-
-
-
-

Inline Code

-

Execute code inline: 4

-

Output: 4

-
-
-

Code Options

-
#| echo: false        # Hide code, show output
-#| eval: false        # Show code, don't run
-#| warning: false     # Hide warnings
-#| message: false     # Hide messages
-#| label: fig-plot    # For cross-references
-#| fig-cap: "Caption" # Figure caption
-
-
-
-

Markdown Essentials

-
-

Headers

-
# Level 1
-## Level 2
-### Level 3
-
-
-

Text Formatting

-
**bold**
-*italic*
-***bold italic***
-`code`
-~~strikethrough~~
-
-
-

Lists

-
- Unordered list
-- Second item
-  - Nested item
-
-1. Ordered list
-2. Second item
-   1. Nested item
-
- -
-

Tables

-
| Column 1 | Column 2 | Column 3 |
-|----------|----------|----------|
-| Data 1   | Data 2   | Data 3   |
-| Data 4   | Data 5   | Data 6   |
-
-
-

Cross-References

-
See @fig-plot for details.
-
-![My plot](plot.png){#fig-plot}
-
-See @tbl-results for the data.
-
-| Col 1 | Col 2 |
-|-------|-------|
-| A     | B     |
-
-: Results {#tbl-results}
-
-
-
-

Rendering Documents

-
-

Command Line

-
# Render a single document
-quarto render document.qmd
-
-# Render to specific format
-quarto render document.qmd --to pdf
-
-# Render entire project
-quarto render
-
-# Preview with live reload
-quarto preview
-
-# Publish
-quarto publish gh-pages
-
-
-

From RStudio or VS Code

-
    -
  • RStudio: Click the β€œRender” button
  • -
  • VS Code: Click β€œPreview” or use the Quarto extension
  • -
-
-
-

Render Options

-

Control rendering in YAML:

-
execute:
-  echo: true      # Show code
-  warning: false  # Hide warnings
-  error: true     # Show errors
-  cache: true     # Cache results
-
-
-
-

Special Features

-
-

Callout Blocks

-
::: {.callout-note}
-This is a note callout.
-:::
-
-::: {.callout-warning}
-This is a warning!
-:::
-
-::: {.callout-important}
-This is important information.
-:::
-
-
-

Tabsets

-
::: {.panel-tabset}
-
-## Tab 1
-Content for tab 1
-
-## Tab 2
-Content for tab 2
-
-:::
-
-
-

Columns Layout

-
::: {.columns}
-
-::: {.column width="50%"}
-Left column content
-:::
-
-::: {.column width="50%"}
-Right column content
-:::
-
-:::
-
-
-

Diagrams (Mermaid)

-
```{mermaid}
-graph LR
-  A[Start] --> B[Process]
-  B --> C[End]
-```
-
-
-
-

What Quarto Cannot Do

-
-

Limitations

-
    -
  1. No Real-Time Collaboration -
      -
    • Not like Google Docs
    • -
    • Use Git for version control instead
    • -
  2. -
  3. Limited WYSIWYG -
      -
    • Must render to see final output
    • -
    • Not a visual editor (though RStudio has visual mode)
    • -
  4. -
  5. LaTeX Required for PDF -
      -
    • Must install LaTeX distribution for PDF output
    • -
    • Can be large download (several GB)
    • -
  6. -
  7. Code Must Be Installed -
      -
    • Python/R/Julia must be installed separately
    • -
    • Need required packages installed
    • -
  8. -
  9. No Dynamic Forms -
      -
    • Cannot create user input forms in HTML output
    • -
    • Use Shiny for interactive applications
    • -
  10. -
  11. Processing Speed -
      -
    • Large projects can be slow to render
    • -
    • Use caching to speed up
    • -
  12. -
  13. Not a Database -
      -
    • Cannot query data directly in document
    • -
    • Must load data first with code
    • -
  14. -
  15. Limited Styling Control -
      -
    • HTML/CSS knowledge needed for custom designs
    • -
    • PDF styling requires LaTeX knowledge
    • -
  16. -
-
-
-
-

Best Practices

-
-

Project Organization

-
my-project/
-β”œβ”€β”€ _quarto.yml           # Project config
-β”œβ”€β”€ index.qmd             # Homepage
-β”œβ”€β”€ guide1.qmd            # Content files
-β”œβ”€β”€ guide2.qmd
-β”œβ”€β”€ images/               # Images folder
-β”‚   β”œβ”€β”€ logo.png
-β”‚   └── diagram.svg
-β”œβ”€β”€ data/                 # Data folder
-β”‚   └── dataset.csv
-β”œβ”€β”€ scripts/              # Helper scripts
-β”‚   └── utils.py
-└── _site/               # Generated output (don't edit)
-
-
-

File Naming

-
    -
  • Use lowercase, hyphens for spaces: my-document.qmd
  • -
  • Be descriptive: serverless-monitoring.qmd not doc1.qmd
  • -
  • Group related files: tutorial-1.qmd, tutorial-2.qmd
  • -
-
-
-

YAML Best Practices

-
---
-# Put most important info first
-title: "Clear, Descriptive Title"
-subtitle: "Helpful subtitle"
-author: "Author Name"
-date: today
-
-# Group related options
-format:
-  html:
-    toc: true
-    theme: cosmo
-
-# Use comments
-execute:
-  echo: true  # Show code by default
----
-
-
-

Code Best Practices

-
    -
  1. Use meaningful labels: {#fig-scatter} not {#fig-1}
  2. -
  3. Set global options in YAML instead of repeating
  4. -
  5. Cache expensive computations: cache: true
  6. -
  7. Organize code into separate scripts if complex
  8. -
  9. Test frequently - render often to catch errors early
  10. -
-
-
-
-

Common Issues and Solutions

-
-

Issue: β€œFile not found”

-

Problem: Referenced image or data file not found

-

Solution: Use relative paths from the .qmd file location

-
# Good
-![Logo](images/logo.png)
-
-# Bad (absolute paths break portability)
-![Logo](/Users/name/project/images/logo.png)
-
-
-

Issue: Code not executing

-

Problem: Code block shown but not running

-

Solution: Check code block syntax

-
# Correct (with braces)
-
-::: {#65165942 .cell execution_count=3}
-``` {.python .cell-code}
-print("Hello")
-```
-
-::: {.cell-output .cell-output-stdout}
-```
-Hello
-```
-:::
-:::
-
-
-# Wrong (no braces - just displays)
-```python
-print("Hello")
-```
-
- -
-

Issue: Changes not showing

-

Problem: Made changes but don’t see them in preview

-

Solution: - Refresh browser (hard refresh: Cmd+Shift+R or Ctrl+Shift+R) - Stop and restart quarto preview - Check if file is saved

-
-
-

Issue: Table of contents not showing

-

Problem: TOC enabled but not visible

-

Solution: Need at least 2 headers for TOC to appear

-
---
-format:
-  html:
-    toc: true
----
-
-## First Section
-Content
-
-## Second Section
-More content
-
-
-
-

Quick Reference

-
-

Common Quarto Commands

-
quarto render               # Render project
-quarto render file.qmd      # Render single file
-quarto preview              # Live preview
-quarto create project       # New project wizard
-quarto check                # Check installation
-quarto --help               # Help
-
-
-

Common YAML Settings

-
title: "Title"
-author: "Name"
-date: today
-format: html
-toc: true
-number-sections: true
-code-fold: true
-theme: cosmo
-
-
-

Format Options Quick Reference

-
# Multiple formats
-format:
-  html: default
-  pdf: default
-  docx: default
-
-# Or with options
-format:
-  html:
-    theme: cosmo
-  pdf:
-    documentclass: article
-
-
-
-

Next Steps

-
-

Learning Resources

- -
-
-

Practice Exercises

-
    -
  1. Create a simple .qmd document with text and headers
  2. -
  3. Add a code block that creates a simple plot
  4. -
  5. Render to HTML, PDF, and Word
  6. -
  7. Create a presentation with 5 slides
  8. -
  9. Add your document to the website navigation
  10. -
-
-
-

Getting Help

- -
-
-
-
-

Summary

-

Quarto is powerful for creating reproducible, multi-format documents. Key takeaways:

-

βœ… Files: Create .qmd files with YAML + Markdown + Code βœ… Formats: Output to HTML, PDF, Word, PowerPoint, and more βœ… Configuration: Use _quarto.yml for project-level settings βœ… Navigation: Add files to sidebar in _quarto.yml βœ… Rendering: Use quarto render or IDE buttons βœ… Limitations: Know what Quarto can’t do (real-time collab, dynamic forms) βœ… Best Practices: Organize files, use clear names, test often

-

Ready to create? Start with a simple document and experiment!

- - - - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/robots.txt b/_site/robots.txt deleted file mode 100644 index f44e6a8..0000000 --- a/_site/robots.txt +++ /dev/null @@ -1 +0,0 @@ -Sitemap: https://us-ghg-center.github.io/ghgc-docs/sitemap.xml diff --git a/_site/search.json b/_site/search.json deleted file mode 100644 index 3be29f1..0000000 --- a/_site/search.json +++ /dev/null @@ -1,2693 +0,0 @@ -[ - { - "objectID": "workflow.html", - "href": "workflow.html", - "title": "U.S. Greenhouse Gas Center: Data Flow Diagrams", - "section": "", - "text": "Welcome to the homepage for U.S. Greenhouse Gas (GHG) Center data flow diagrams. These diagrams summarize the process a dataset goes through from acquisition to integration in the U.S. GHG Center.\nClick on a dataset name to view the data flow diagram for that dataset.\nView the US GHG Center Data Catalog", - "crumbs": [ - "Data Flow Diagrams" - ] - }, - { - "objectID": "workflow.html#contact", - "href": "workflow.html#contact", - "title": "U.S. Greenhouse Gas Center: Data Flow Diagrams", - "section": "Contact", - "text": "Contact\nFor technical help or general questions, please contact the support team using the feedback form.", - "crumbs": [ - "Data Flow Diagrams" - ] - }, - { - "objectID": "utility.html", - "href": "utility.html", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks Utility Functions", - "section": "", - "text": "Welcome to the U.S. Greenhouse Gas (GHG) Center data usage notebooks utility functions, your gateway to exploring and analyzing curated datasets on greenhouse gas emissions. Our cloud-based system offers seamless access to GHG curated datasets. Dive into the data with our utility functions, which demonstrate how to explore, access, visualize, and conduct basic data analysis for each GHG Center dataset in a code notebook environment.\nJoin us in our mission to make data-driven environmental solutions. Explore, analyze, and make a difference with the US GHG Center.\nView the US GHG Center Data Catalog" - }, - { - "objectID": "utility.html#utilities", - "href": "utility.html#utilities", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks Utility Functions", - "section": "Utilities", - "text": "Utilities\nSection contains multiple utility functions\n\nimport requests\nimport pandas as pd\nimport datetime\nimport matplotlib.pyplot as plt\nfrom matplotlib.colors import rgb2hex\nimport numpy as np\nimport sys\n\nRASTER_API_URL = \"https://earth.gov/ghgcenter/api/raster\"\n\n# Functions mentioned below are defined in stats_module.py\n\ndef generate_stats(item, geojson, asset_name):\n \"\"\"\n Retrieve statistics for a specific granule (item) within a GeoJSON-defined polygon.\n\n Args:\n item (dict): The granule containing item details (including assets and metadata).\n geojson (dict): A GeoJSON Feature or FeatureCollection specifying the bounding box.\n asset_name (str): The asset name or raster identifier to be used.\n\n Returns:\n dict: A dictionary with computed statistics and the item's datetime information.\n \"\"\"\n result = requests.post(\n f\"{RASTER_API_URL}/cog/statistics\",\n params={\"url\": item[\"assets\"][asset_name][\"href\"]},\n json=geojson,\n ).json()\n\n print(result)\n\n # Handle cases where either \"start_datetime\" or \"datetime\" is present\n datetime_value = item[\"properties\"].get(\"start_datetime\", item[\"properties\"].get(\"datetime\"))\n\n return {\n **result[\"properties\"],\n \"datetime\": datetime_value,\n }\n\n\n\ndef clean_stats(stats_json):\n \"\"\"\n Clean and normalize the statistics JSON data and convert it into a pandas DataFrame.\n\n Args:\n stats_json (list of dict): List of statistics dictionaries for each granule.\n\n Returns:\n pd.DataFrame: A DataFrame with flattened and cleaned statistics.\n \"\"\"\n df = pd.json_normalize(stats_json)\n df.columns = [col.replace(\"statistics.b1.\", \"\") for col in df.columns]\n df[\"date\"] = pd.to_datetime(df[\"datetime\"])\n return df\n\n\ndef display_stats(df, num_rows=5):\n \"\"\"\n Display the top rows of the cleaned statistics DataFrame.\n\n Args:\n df (pd.DataFrame): DataFrame containing the cleaned statistics.\n num_rows (int): Number of rows to display (default is 5).\n \"\"\"\n print(df.head(num_rows))\n\n# Functions mentioned below are defined in ghgc_utlis.py\n\ndef raster_stats(item, geojson,**kwargs):\n \"\"\"\n Returns Raster API statistics for an item. Inputs: item, geojson, url = Raster API url, asset = asset name within item. Outputs: dictionary containing statistics over the bounding box and item's datetime information.\n \"\"\"\n\n try:\n url = item[\"assets\"][kwargs[\"asset\"]][\"href\"]\n except TypeError as err:\n url = item.assets[kwargs[\"asset\"]].href\n except KeyError as err:\n print('KeyError in raster_stats: Make sure you include \\'url\\' and \\'asset\\' as keyword arguments!')\n sys.exit() \n \n # A POST request is made to submit the data associated with the item of interest (specific observation) within the boundaries of the polygon to compute its statistics\n result = requests.post(\n\n # Raster API Endpoint for computing statistics\n f\"{kwargs['url']}/cog/statistics\",\n\n # Pass the URL to the item, asset name, and raster identifier as parameters\n params={\"url\": url},\n\n # Send the GeoJSON object (polygon) along with the request\n json=geojson,\n\n # Return the response in JSON format\n ).json()\n\n\n # Print the result\n ##print(result)\n\n # Return a dictionary containing the computed statistics along with the item's datetime information.\n try:\n return {\n **result[\"properties\"],\n \"datetime\": item[\"properties\"][\"start_datetime\"],\n }\n except KeyError as err:\n try:\n return {\n **result[\"features\"][0][\"properties\"],\n 'datetime': item[\"properties\"][\"start_datetime\"],\n }\n except TypeError as err:\n return {\n **result[\"features\"][0][\"properties\"],\n \"datetime\": item.properties[\"start_datetime\"]\n }\n except TypeError as err:\n return {\n **result[\"properties\"],\n \"datetime\": item.properties[\"start_datetime\"]\n }\n\ndef clean_stats(stats_json) -> pd.DataFrame:\n \"\"\"\n Takes dictionary output from generate_stats() and returns a neater, more intuitively-titled pandas DataFrame.\n \"\"\"\n pd.set_option('display.float_format', '{:.20f}'.format)\n stats_json_ = [stats_json[datetime] for datetime in stats_json] \n # Normalize the JSON data \n df = pd.json_normalize(stats_json_)\n\n # Replace the naming \"statistics.b1\" in the columns\n df.columns = [col.replace(\"statistics.b1.\", \"\") for col in df.columns]\n\n # Set the datetime format\n df[\"date\"] = pd.to_datetime(df[\"datetime\"])\n\n # Return the cleaned format\n return df\n\ndef generate_stats(items,geojson,**kwargs):\n \"\"\"\n Runs raster_stats() and clean-stats() on all items. Inputs: List containing multiple items; geojson; url = URL for Raster API, asset = asset name for item field. Outputs: Pandas DataFrame of cleaned statistics for all items in list.\n \"\"\"\n stats = {}\n print('Generating stats...')\n for item in items:\n try:\n date = item[\"properties\"][\"start_datetime\"] # Get the associated date\n except TypeError:\n date = item.properties[\"start_datetime\"]\n year_month = date[:7].replace('-', '') # Convert datetime to year-month\n stats[year_month] = raster_stats(item, geojson,**kwargs)\n df = clean_stats(stats)\n print('Done!')\n return df\n\ndef generate_html_colorbar(color_map,rescale_values,label=None,dark=False):\n \"\"\"\n Creates html-formatted string which can be added to Folium maps to display a colorbar. Required inputs: colormap (matplotlib-accepted string), rescale_values in the form of a dictionary containing keys 'max' and 'min' which specify the desired colorbar range. Optional inputs: label, which will display above the colorbar. Output: html-formatted string detailing construction of the colorbar.\n \"\"\"\n # Pull out colors from our chosen colormap\n cmap = plt.get_cmap(color_map)\n colors = cmap(np.linspace(0,1,11))\n colors = [rgb2hex(c) for c in colors]\n # Define custom tick values for the legend bar\n tick_val = np.round(np.linspace(rescale_values['min'],rescale_values['max'],5),decimals=6)\n # Create a HTML representation\n legend_html = cmap._repr_html_()\n\n # Create a customized HTML structure for the legend\n# legend_html = f'''\n# <div style=\"position: fixed; bottom: 50px; left: 175px; z-index: 1000; width: 400px; height: auto; #background-color: rgba(255, 255, 255, 0.8);\n# border-radius: 5px; border: 1px solid grey; padding: 10px; font-size: 12px; color: black;\">\n# <b>{label}</b><br>\n# <div style=\"display: flex; justify-content: space-between;\">\n# <div>{tick_val[0]}</div> \n# <div>{tick_val[1]}</div> \n# <div>{tick_val[2]}</div> \n# <div>{tick_val[3]}</div> \n# <div>{tick_val[4]}</div> \n# </div>\n# <div style=\"background: linear-gradient(to right,\n# {colors[0]}, {colors[1]} {20}%,\n# {colors[1]} {20}%, {colors[2]} {40}%,\n# {colors[2]} {40}%, {colors[3]} {50}%,\n# {colors[3]} {50}%, {colors[4]} {80}%,\n# {colors[4]} {80}%, {colors[5]}); height: 10px;\"></div>\n# </div>\n# '''\n if dark:\n bg_color = \"rgba(0, 0, 0, 0.8)\"\n font_color=\"white\"\n else:\n bg_color = \"rgba(255, 255, 255, 0.8)\"\n font_color=\"black\"\n \n legend_html = f'''\n <div style=\"position: fixed; bottom: 50px; left: 175px; z-index: 1000; width: 400px; height: auto; background-color: {bg_color};\n border-radius: 5px; border: 1px solid grey; padding: 10px; font-size: 12px; color: {font_color};\">\n <b>{label}</b><br>\n <div style=\"display: flex; justify-content: space-between;\">\n <div>{tick_val[0]}</div> \n <div>{tick_val[1]}</div> \n <div>{tick_val[2]}</div> \n <div>{tick_val[3]}</div> \n <div>{tick_val[4]}</div>\n </div>\n <div style=\"background: linear-gradient(to right,\n {colors[0]}, {colors[1]} {10}%,\n {colors[1]} {10}%, {colors[2]} {20}%,\n {colors[2]} {20}%, {colors[3]} {30}%,\n {colors[3]} {30}%, {colors[4]} {40}%,\n {colors[4]} {40}%, {colors[5]} {50}%,\n {colors[5]} {50}%, {colors[6]} {60}%,\n {colors[6]} {60}%, {colors[7]} {70}%,\n {colors[7]} {70}%, {colors[8]} {80}%,\n {colors[8]} {80}%, {colors[9]} {90}%,\n {colors[9]} {90}%, {colors[10]}); height: 10px;\"></div>\n </div>\n '''\n return legend_html" - }, - { - "objectID": "utility.html#contact", - "href": "utility.html#contact", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks Utility Functions", - "section": "Contact", - "text": "Contact\nFor technical help or general questions, please contact the support team using the feedback form." - }, - { - "objectID": "index.html", - "href": "index.html", - "title": "NASA Disasters: Documentation", - "section": "", - "text": "The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.\nOn this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index.html#welcome", - "href": "index.html#welcome", - "title": "NASA Disasters: Documentation", - "section": "", - "text": "The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.\nOn this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index.html#contents", - "href": "index.html#contents", - "title": "NASA Disasters: Documentation", - "section": "Contents", - "text": "Contents\n\nA guide to access AWS resources, with guidelines to utilize AWS commands and operations.\nDirections on how to setup GitHub, access a repository, use commands, and understand the GitHub workflow in Disasters.\nHow to use JupyterHub to work collaboratively on notebooks within a repositroy and the Disasters framework.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index.html#contact", - "href": "index.html#contact", - "title": "NASA Disasters: Documentation", - "section": "Contact", - "text": "Contact\nFor technical help or general questions, please contact the support team using the feedback form.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "datausage.html", - "href": "datausage.html", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks", - "section": "", - "text": "Welcome to the homepage for the U.S. Greenhouse Gas (GHG) Center data usage notebooks. Each dataset available in the GHG Center Data Catalog has an associated β€œIntroductory notebook” created by the GHG Center team which demonstrates how to access, visualize, and conduct basic data analysis in a Jupyter Notebook environment. Additional notebooks may be provided with each dataset. Click on a dataset under β€œGHG Center Dataset Tutorials” to learn more about the dataset and to view the associated code notebooks.\nAlong with GHG Center-curated notebooks, science users can also contribute notebooks that use GHG Center datasets. Notebooks submitted by the scientific community can be found under the β€œCommunity-Contributed Tutorials” section.", - "crumbs": [ - "Data Usage Notebooks" - ] - }, - { - "objectID": "datausage.html#ghg-center-dataset-tutorials", - "href": "datausage.html#ghg-center-dataset-tutorials", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks", - "section": "GHG Center Dataset Tutorials", - "text": "GHG Center Dataset Tutorials\nTutorial notebooks created by the GHG Center team. Introductory notebooks demonstrate how to access, visualize, and conduct basic data analysis for each dataset available in the GHG Center Data Catalog. Notebooks demonstrating how to conduct additional or more specialized analyses may also be listed under the relevant dataset.\n\nAir-Sea COβ‚‚ Flux, ECCO-Darwin Model v5\n\nIntroductory notebook\n\nAtmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory\n\nIntroductory notebook\n\nCarbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX)\n\nIntroductory notebook\n\nCarbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project\n\nIntroductory notebook\n\nCarbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed\n\nIntroductory notebook\n\nCarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes\n\nIntroductory notebook\n\nEMIT Methane Point Source Plume Complexes\n\nIntroductory notebook\n\nGeostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure\n\nIntroductory notebook\n\nGOSAT-based Top-down Total and Natural Methane Emissions\n\nIntroductory notebook\n\nGRAΒ²PES Greenhouse Gas and Air Quality Species\n\nIntroductory notebook\n\nMiCASA Land Carbon Flux\n\nIntroductory notebook\n\nOCO-2 GEOS Column COβ‚‚ Concentrations\n\nIntroductory notebook\n\nOCO-2 MIP Top-Down COβ‚‚ Budgets\n\nIntroductory notebook\nIntermediate level notebook to read and visualize National COβ‚‚ Budgets using OCO-2 MIP Top-Down COβ‚‚ Budget country total data. This notebook utilizes the country totals available at https://ceos.org/gst/carbon-dioxide.html, which compliment the global 1Β° x 1Β° gridded COβ‚‚ Budget data featured in the US GHG Center.\n\nODIAC Fossil Fuel COβ‚‚ Emissions\n\nIntroductory notebook\n\nSEDAC Gridded World Population Density\n\nIntroductory notebook\n\nU.S. Gridded Anthropogenic Methane Emissions Inventory\n\nIntroductory notebook\n\nVulcan Fossil Fuel COβ‚‚ Emissions\n\nIntroductory notebook\n\nWetland Methane Emissions, LPJ-EOSIM Model\n\nIntroductory notebook", - "crumbs": [ - "Data Usage Notebooks" - ] - }, - { - "objectID": "datausage.html#community-contributed-tutorials", - "href": "datausage.html#community-contributed-tutorials", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks", - "section": "Community-Contributed Tutorials", - "text": "Community-Contributed Tutorials\nNotebooks provided by the scientific community that use GHG Center datasets. The GHG Center is in the process of establishing a workflow for community notebook contribution. Once available, the contribution process will be published here. In the meantime, please submit any notebook contribution inquiries through the US GHG Center Contact Form.\nNote: these notebooks are contributed by the scientific community, and are not actively maintained by the GHG Center team.", - "crumbs": [ - "Data Usage Notebooks" - ] - }, - { - "objectID": "datausage.html#contact", - "href": "datausage.html#contact", - "title": "U.S. Greenhouse Gas Center: Data Usage Notebooks", - "section": "Contact", - "text": "Contact\nFor technical help or general questions, please contact the support team using the feedback form.", - "crumbs": [ - "Data Usage Notebooks" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html", - "href": "AWS/AWS_SSO_Setup_Guide.html", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "This guide walks you through setting up AWS Single Sign-On (SSO) to securely manage your AWS credentials without storing them in plain text which is not encrypted.\n\n\n\n\n\nβœ… AWS CLI v2 installed (version 2.x or higher)\nβœ… Access to AWS Identity Center (formerly AWS SSO)\nβœ… Your organization’s SSO portal URL\n\n\n\n\n\n\n\naws configure sso\n\n\n\nWhen prompted for SSO session name, enter a descriptive name for your profile:\nSSO session name (Recommended): disasters\nπŸ’‘ Tip: Can use meaningful names like prod-admin-disasters, dev-poweruser-disasters, etc. But if you are only using a single profile then it is suggested to use disasters as this is what this tutorial assumes.\n\n\n\nFind your SSO URL in the AWS Identity Center portal and enter it:\nSSO start URL [None]: https://d-9067c5bbc5.awsapps.com/start/#\nπŸ“ Where to find: Navigate to your AWS SSO portal from link within NASA SMCE email β†’ Look for the URL in your browser\n\n\n\nEnter the region where your Identity Center is configured. Although the bucket is located in us-west-2 this is NOT what you should enter. Please enter us-east-1.\nSSO region [None]: us-east-1\n\n\n\nLeave this section blank. Press Enter to accept the default:\nSSO registration scopes [sso:account:access]:\n✨ The default scope is sufficient for most use cases\n\n\n\n🌐 A browser window will open automatically:\n\nLog in with your corporate credentials\nClick β€œAllow” to grant access to AWS CLI (botocore)\nReturn to your terminal\n\n\n\n\nEnter your AWS account ID (12 digits):\nAWS account ID: 867530900000\nπŸ’‘ Tip: Find this in your AWS SSO portal under the accounts tab\n\n\n\nSelect from available roles:\nYou may see up to 3 roles available to you, select the one that you will most commonly use. \n> Project-Power-User\n ReadOnlyAccess\n✨ Use arrow keys to select, then press Enter\n\n\n\nIf region is auto-filled to us-east-1, then leave as it is. Otherwise please input us-east-1:\nCLI default region [us-east-1]: us-east-1\n\n\n\nChoose your preferred output format:\nCLI default output format [None]: json\nOptions: json, yaml, text, table\nπŸ’‘ Tip: It is recommended to use json as the preferred output format\n\n\n\n\n\nTo access data from the AWS S3 bucket, you will need to utilize the --profile disasters-sso flag which tells the AWS command to pull config information from ~/.aws/config.\nTest your configuration:\naws s3 ls --profile disasters-sso\nExpected output:\n PRE browseui/\n PRE california_wildfires_202501/\n PRE disasters/\n ...\n\n\n\n\n\n\naws sso login --profile disasters-sso\n\n\n\n# List S3 buckets\naws s3 ls --profile disasters-sso\n\n# Get caller identity\naws sts get-caller-identity --profile disasters-sso\nThis is especially helpful when running many AWS commands in a session.\n\n\n\naws sso logout\n\n\n\n\n\nYour SSO configuration is stored in ~/.aws/config:\n[profile disasters-sso]\nsso_session = disasters\nsso_account_id = 867530900000\nsso_role_name = Project-Power-User\nregion = us-east-1\noutput = json\n\n[sso-session disasters]\nsso_start_url = https://d-9067c5bbc5.awsapps.com/start/#\nsso_region = us-east-1\nsso_registration_scopes = sso:account:access\n\n\n\n\n\n\n\nAWS SSO provides temporary credentials that expire after 1-12 hours\nCredentials are automatically refreshed when you run commands\nNo permanent credentials are stored on your machine\n\n\n\n\nAWS-Vault expects permanent credentials to generate temporary ones. Since AWS SSO already provides temporary credentials: - Adding SSO temporary credentials to aws-vault causes authentication errors - SSO handles credential refresh automatically, making aws-vault redundant - Use AWS SSO for temporary credential profiles, aws-vault for permanent ones\n\n\n\n\n\n\n\nCause: Trying to use expired temporary credentials Solution: Run aws sso login --profile your-profile to refresh\n\n\n\nSolution: Add --use-device-code flag:\naws sso login --profile disasters-sso --use-device-code\n\n\n\nCreate separate profiles for each account/role combination:\n[profile prod-admin]\nsso_session = mycompany\nsso_account_id = 111111111111\nsso_role_name = Administrator\n\n[profile dev-readonly]\nsso_session = mycompany\nsso_account_id = 222222222222\nsso_role_name = ReadOnlyAccess\n\n\n\n\n\n\nNever store credentials in plain text ❌\nUse SSO for all AWS access βœ…\nLogout when finished working πŸ”’\nUse descriptive profile names πŸ“\nSet up MFA on your SSO account πŸ”\n\n\n\n\n\n\nRemove plain text credentials from ~/.aws/credentials\nUpdate scripts to use --profile flag\nSet default profile: export AWS_PROFILE=disasters-sso\nConsider using aws-sso-util for enhanced SSO features\n\n\n\n\n\n\nAWS CLI SSO Documentation\nIAM Identity Center User Guide\nAWS CLI Command Reference\n\n\nπŸ” Remember: Security is everyone’s responsibility. Keep your credentials safe!", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#secure-your-aws-credentials-with-aws-identity-center-sso", - "href": "AWS/AWS_SSO_Setup_Guide.html#secure-your-aws-credentials-with-aws-identity-center-sso", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "This guide walks you through setting up AWS Single Sign-On (SSO) to securely manage your AWS credentials without storing them in plain text which is not encrypted.", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#prerequisites", - "href": "AWS/AWS_SSO_Setup_Guide.html#prerequisites", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "βœ… AWS CLI v2 installed (version 2.x or higher)\nβœ… Access to AWS Identity Center (formerly AWS SSO)\nβœ… Your organization’s SSO portal URL", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#step-by-step-setup-instructions", - "href": "AWS/AWS_SSO_Setup_Guide.html#step-by-step-setup-instructions", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "aws configure sso\n\n\n\nWhen prompted for SSO session name, enter a descriptive name for your profile:\nSSO session name (Recommended): disasters\nπŸ’‘ Tip: Can use meaningful names like prod-admin-disasters, dev-poweruser-disasters, etc. But if you are only using a single profile then it is suggested to use disasters as this is what this tutorial assumes.\n\n\n\nFind your SSO URL in the AWS Identity Center portal and enter it:\nSSO start URL [None]: https://d-9067c5bbc5.awsapps.com/start/#\nπŸ“ Where to find: Navigate to your AWS SSO portal from link within NASA SMCE email β†’ Look for the URL in your browser\n\n\n\nEnter the region where your Identity Center is configured. Although the bucket is located in us-west-2 this is NOT what you should enter. Please enter us-east-1.\nSSO region [None]: us-east-1\n\n\n\nLeave this section blank. Press Enter to accept the default:\nSSO registration scopes [sso:account:access]:\n✨ The default scope is sufficient for most use cases\n\n\n\n🌐 A browser window will open automatically:\n\nLog in with your corporate credentials\nClick β€œAllow” to grant access to AWS CLI (botocore)\nReturn to your terminal\n\n\n\n\nEnter your AWS account ID (12 digits):\nAWS account ID: 867530900000\nπŸ’‘ Tip: Find this in your AWS SSO portal under the accounts tab\n\n\n\nSelect from available roles:\nYou may see up to 3 roles available to you, select the one that you will most commonly use. \n> Project-Power-User\n ReadOnlyAccess\n✨ Use arrow keys to select, then press Enter\n\n\n\nIf region is auto-filled to us-east-1, then leave as it is. Otherwise please input us-east-1:\nCLI default region [us-east-1]: us-east-1\n\n\n\nChoose your preferred output format:\nCLI default output format [None]: json\nOptions: json, yaml, text, table\nπŸ’‘ Tip: It is recommended to use json as the preferred output format", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#verification", - "href": "AWS/AWS_SSO_Setup_Guide.html#verification", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "To access data from the AWS S3 bucket, you will need to utilize the --profile disasters-sso flag which tells the AWS command to pull config information from ~/.aws/config.\nTest your configuration:\naws s3 ls --profile disasters-sso\nExpected output:\n PRE browseui/\n PRE california_wildfires_202501/\n PRE disasters/\n ...", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#daily-usage", - "href": "AWS/AWS_SSO_Setup_Guide.html#daily-usage", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "aws sso login --profile disasters-sso\n\n\n\n# List S3 buckets\naws s3 ls --profile disasters-sso\n\n# Get caller identity\naws sts get-caller-identity --profile disasters-sso\nThis is especially helpful when running many AWS commands in a session.\n\n\n\naws sso logout", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#configuration-files", - "href": "AWS/AWS_SSO_Setup_Guide.html#configuration-files", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "Your SSO configuration is stored in ~/.aws/config:\n[profile disasters-sso]\nsso_session = disasters\nsso_account_id = 867530900000\nsso_role_name = Project-Power-User\nregion = us-east-1\noutput = json\n\n[sso-session disasters]\nsso_start_url = https://d-9067c5bbc5.awsapps.com/start/#\nsso_region = us-east-1\nsso_registration_scopes = sso:account:access", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#important-notes", - "href": "AWS/AWS_SSO_Setup_Guide.html#important-notes", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "AWS SSO provides temporary credentials that expire after 1-12 hours\nCredentials are automatically refreshed when you run commands\nNo permanent credentials are stored on your machine\n\n\n\n\nAWS-Vault expects permanent credentials to generate temporary ones. Since AWS SSO already provides temporary credentials: - Adding SSO temporary credentials to aws-vault causes authentication errors - SSO handles credential refresh automatically, making aws-vault redundant - Use AWS SSO for temporary credential profiles, aws-vault for permanent ones", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#troubleshooting", - "href": "AWS/AWS_SSO_Setup_Guide.html#troubleshooting", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "Cause: Trying to use expired temporary credentials Solution: Run aws sso login --profile your-profile to refresh\n\n\n\nSolution: Add --use-device-code flag:\naws sso login --profile disasters-sso --use-device-code\n\n\n\nCreate separate profiles for each account/role combination:\n[profile prod-admin]\nsso_session = mycompany\nsso_account_id = 111111111111\nsso_role_name = Administrator\n\n[profile dev-readonly]\nsso_session = mycompany\nsso_account_id = 222222222222\nsso_role_name = ReadOnlyAccess", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#best-practices", - "href": "AWS/AWS_SSO_Setup_Guide.html#best-practices", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "Never store credentials in plain text ❌\nUse SSO for all AWS access βœ…\nLogout when finished working πŸ”’\nUse descriptive profile names πŸ“\nSet up MFA on your SSO account πŸ”", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#next-steps", - "href": "AWS/AWS_SSO_Setup_Guide.html#next-steps", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "Remove plain text credentials from ~/.aws/credentials\nUpdate scripts to use --profile flag\nSet default profile: export AWS_PROFILE=disasters-sso\nConsider using aws-sso-util for enhanced SSO features", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Setup_Guide.html#resources", - "href": "AWS/AWS_SSO_Setup_Guide.html#resources", - "title": "πŸš€ AWS SSO Configuration Guide", - "section": "", - "text": "AWS CLI SSO Documentation\nIAM Identity Center User Guide\nAWS CLI Command Reference\n\n\nπŸ” Remember: Security is everyone’s responsibility. Keep your credentials safe!", - "crumbs": [ - "AWS", - "πŸš€ AWS SSO Configuration Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html", - "href": "AWS/aws-s3-commands-guide.html", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "AWS CLI Installation and Configuration\nBasic S3 Commands\nS3 API Commands\nRecursive Operations\nData Upload and Sync Operations\nBucket Management\nObject Management\nAccess Control and Permissions\nPerformance Optimization\nCost Management\nTroubleshooting\nOfficial AWS Resources\n\n\n\n\n\n\n# macOS using Homebrew\nbrew install awscli\n\n# Using pip\npip install awscli --upgrade --user\n\n# Verify installation\naws --version\n\n\n\n# Configure AWS CLI with credentials\naws configure\n\n# Configure specific profile\naws configure --profile myprofile\n\n# List configuration\naws configure list\n\n# Set region for current session\nexport AWS_DEFAULT_REGION=us-east-1\n\n\n\n\n\n\n# List all buckets\naws s3 ls\n\n# List objects in a bucket\naws s3 ls s3://my-bucket/\n\n# List objects with human-readable sizes\naws s3 ls s3://my-bucket/ --human-readable\n\n# List objects with summary\naws s3 ls s3://my-bucket/ --summarize\n\n# List objects recursively\naws s3 ls s3://my-bucket/ --recursive\n\n# List objects with specific prefix\naws s3 ls s3://my-bucket/prefix/ --recursive\n\n\n\n# Copy file to S3\naws s3 cp file.txt s3://my-bucket/\n\n# Copy from S3 to local\naws s3 cp s3://my-bucket/file.txt ./\n\n# Copy between S3 buckets\naws s3 cp s3://source-bucket/file.txt s3://dest-bucket/\n\n# Copy with specific storage class\naws s3 cp file.txt s3://my-bucket/ --storage-class GLACIER\n\n# Copy with server-side encryption\naws s3 cp file.txt s3://my-bucket/ --sse AES256\n\n\n\n# Move file to S3\naws s3 mv file.txt s3://my-bucket/\n\n# Move from S3 to local\naws s3 mv s3://my-bucket/file.txt ./\n\n# Move between S3 locations\naws s3 mv s3://my-bucket/old-path/ s3://my-bucket/new-path/ --recursive\n\n\n\n# Delete single object\naws s3 rm s3://my-bucket/file.txt\n\n# Delete all objects with prefix\naws s3 rm s3://my-bucket/prefix/ --recursive\n\n# Delete bucket (must be empty)\naws s3 rb s3://my-bucket/\n\n# Force delete bucket with contents\naws s3 rb s3://my-bucket/ --force\n\n\n\n\n\n\n# Create bucket (us-east-1)\naws s3api create-bucket --bucket my-bucket\n\n# Create bucket in specific region\naws s3api create-bucket --bucket my-bucket \\\n --region us-west-2 \\\n --create-bucket-configuration LocationConstraint=us-west-2\n\n# Enable versioning\naws s3api put-bucket-versioning --bucket my-bucket \\\n --versioning-configuration Status=Enabled\n\n# Enable server-side encryption by default\naws s3api put-bucket-encryption --bucket my-bucket \\\n --server-side-encryption-configuration '{\n \"Rules\": [{\n \"ApplyServerSideEncryptionByDefault\": {\n \"SSEAlgorithm\": \"AES256\"\n }\n }]\n }'\n\n\n\n# Put object\naws s3api put-object --bucket my-bucket --key file.txt --body ./file.txt\n\n# Put object with metadata\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --metadata '{\"author\":\"John Doe\",\"version\":\"1.0\"}'\n\n# Put object with content type\naws s3api put-object --bucket my-bucket --key image.jpg \\\n --body ./image.jpg \\\n --content-type image/jpeg\n\n# Put object with tags\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --tagging 'environment=production&team=data'\n\n\n\n# Initiate multipart upload\naws s3api create-multipart-upload --bucket my-bucket --key large-file.zip\n\n# Upload part\naws s3api upload-part --bucket my-bucket \\\n --key large-file.zip \\\n --part-number 1 \\\n --body part1.dat \\\n --upload-id \"upload-id-here\"\n\n# Complete multipart upload\naws s3api complete-multipart-upload --bucket my-bucket \\\n --key large-file.zip \\\n --upload-id \"upload-id-here\" \\\n --multipart-upload file://parts.json\n\n# Abort multipart upload\naws s3api abort-multipart-upload --bucket my-bucket \\\n --key large-file.zip \\\n --upload-id \"upload-id-here\"\n\n\n\n# Get object metadata\naws s3api head-object --bucket my-bucket --key file.txt\n\n# Get object ACL\naws s3api get-object-acl --bucket my-bucket --key file.txt\n\n# Get object tags\naws s3api get-object-tagging --bucket my-bucket --key file.txt\n\n# List object versions\naws s3api list-object-versions --bucket my-bucket --prefix folder/\n\n\n\n\n\n\n# Sync local directory to S3\naws s3 sync ./local-folder s3://my-bucket/folder/\n\n# Sync S3 to local\naws s3 sync s3://my-bucket/folder/ ./local-folder\n\n# Sync with delete (remove files not in source)\naws s3 sync ./local-folder s3://my-bucket/folder/ --delete\n\n# Sync only specific file types\naws s3 sync ./local-folder s3://my-bucket/folder/ \\\n --exclude \"*\" --include \"*.jpg\"\n\n# Sync with size-only comparison (faster)\naws s3 sync ./local-folder s3://my-bucket/folder/ --size-only\n\n# Dry run to preview changes\naws s3 sync ./local-folder s3://my-bucket/folder/ --dryrun\n\n\n\n# Copy entire directory\naws s3 cp ./local-folder s3://my-bucket/folder/ --recursive\n\n# Copy with exclude patterns\naws s3 cp s3://my-bucket/ s3://backup-bucket/ \\\n --recursive \\\n --exclude \"*.tmp\" \\\n --exclude \"logs/*\"\n\n# Copy with include patterns\naws s3 cp s3://my-bucket/ s3://backup-bucket/ \\\n --recursive \\\n --exclude \"*\" \\\n --include \"*.pdf\" \\\n --include \"*.docx\"\n\n# Copy files modified after specific date\naws s3 cp s3://my-bucket/ ./local-folder/ \\\n --recursive \\\n --exclude \"*\" \\\n --include \"*\" \\\n --metadata-directive COPY\n\n\n\n\n\n\n# Upload multiple files with parallel transfers\naws s3 cp ./data-folder s3://my-bucket/data/ \\\n --recursive \\\n --cli-write-timeout 0 \\\n --cli-read-timeout 0\n\n# Upload with progress bar\naws s3 cp large-file.zip s3://my-bucket/ \\\n --no-guess-mime-type \\\n --cli-progress-bar on\n\n# Upload with bandwidth limit (KB/s)\naws configure set s3.max_bandwidth 5000KB/s\naws s3 cp ./large-folder s3://my-bucket/ --recursive\n\n\n\n# Sync with exact timestamps\naws s3 sync ./folder s3://my-bucket/ --exact-timestamps\n\n# Sync with follow symlinks\naws s3 sync ./folder s3://my-bucket/ --follow-symlinks\n\n# Sync with no follow symlinks\naws s3 sync ./folder s3://my-bucket/ --no-follow-symlinks\n\n# Sync with ACL settings\naws s3 sync ./folder s3://my-bucket/ --acl public-read\n\n# Sync with storage class\naws s3 sync ./folder s3://my-bucket/ \\\n --storage-class INTELLIGENT_TIERING\n\n\n\n\n\n\n# Get bucket policy\naws s3api get-bucket-policy --bucket my-bucket\n\n# Put bucket policy\naws s3api put-bucket-policy --bucket my-bucket \\\n --policy file://bucket-policy.json\n\n# Delete bucket policy\naws selman get-bucket-policy --bucket my-bucket\n\n# Example bucket policy (bucket-policy.json)\ncat > bucket-policy.json << 'EOF'\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"PublicReadGetObject\",\n \"Effect\": \"Allow\",\n \"Principal\": \"*\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::my-bucket/*\"\n }\n ]\n}\nEOF\n\n\n\n# Put lifecycle configuration\naws s3api put-bucket-lifecycle-configuration \\\n --bucket my-bucket \\\n --lifecycle-configuration file://lifecycle.json\n\n# Get lifecycle configuration\naws s3api get-bucket-lifecycle-configuration --bucket my-bucket\n\n# Example lifecycle configuration\ncat > lifecycle.json << 'EOF'\n{\n \"Rules\": [\n {\n \"ID\": \"Archive old files\",\n \"Status\": \"Enabled\",\n \"Transitions\": [\n {\n \"Days\": 30,\n \"StorageClass\": \"INTELLIGENT_TIERING\"\n },\n {\n \"Days\": 90,\n \"StorageClass\": \"GLACIER\"\n }\n ]\n }\n ]\n}\nEOF\n\n\n\n# Put CORS configuration\naws s3api put-bucket-cors --bucket my-bucket \\\n --cors-configuration file://cors.json\n\n# Get CORS configuration\naws s3api get-bucket-cors --bucket my-bucket\n\n# Example CORS configuration\ncat > cors.json << 'EOF'\n{\n \"CORSRules\": [\n {\n \"AllowedOrigins\": [\"*\"],\n \"AllowedMethods\": [\"GET\", \"PUT\", \"POST\"],\n \"AllowedHeaders\": [\"*\"],\n \"MaxAgeSeconds\": 3000\n }\n ]\n}\nEOF\n\n\n\n\n\n\n# Copy object within same bucket\naws s3api copy-object \\\n --bucket my-bucket \\\n --copy-source my-bucket/old-key \\\n --key new-key\n\n# Restore object from Glacier\naws s3api restore-object \\\n --bucket my-bucket \\\n --key archived-file.txt \\\n --restore-request Days=7\n\n# Generate presigned URL (expires in 1 hour)\naws s3 presign s3://my-bucket/file.txt --expires-in 3600\n\n# Batch delete objects\naws s3api delete-objects --bucket my-bucket \\\n --delete file://delete.json\n\n# Example delete.json\ncat > delete.json << 'EOF'\n{\n \"Objects\": [\n {\"Key\": \"file1.txt\"},\n {\"Key\": \"file2.txt\"},\n {\"Key\": \"folder/file3.txt\"}\n ]\n}\nEOF\n\n\n\n# Put object tags\naws s3api put-object-tagging \\\n --bucket my-bucket \\\n --key file.txt \\\n --tagging 'TagSet=[{Key=environment,Value=prod},{Key=owner,Value=teamA}]'\n\n# Get object tags\naws s3api get-object-tagging --bucket my-bucket --key file.txt\n\n# Delete object tags\naws s3api delete-object-tagging --bucket my-bucket --key file.txt\n\n\n\n\n\n\n# Put bucket ACL\naws s3api put-bucket-acl --bucket my-bucket --acl private\n\n# Put object ACL\naws s3api put-object-acl --bucket my-bucket --key file.txt --acl public-read\n\n# Grant specific permissions\naws s3api put-object-acl --bucket my-bucket --key file.txt \\\n --grant-read emailaddress=user@example.com \\\n --grant-write emailaddress=admin@example.com\n\n# Put bucket public access block\naws s3api put-public-access-block --bucket my-bucket \\\n --public-access-block-configuration \\\n BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=false,RestrictPublicBuckets=false\n\n\n\n# Example IAM policy for S3 access\ncat > s3-policy.json << 'EOF'\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\",\n \"s3:PutObject\",\n \"s3:DeleteObject\"\n ],\n \"Resource\": \"arn:aws:s3:::my-bucket/*\"\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::my-bucket\"\n }\n ]\n}\nEOF\n\n# Attach policy to user\naws iam put-user-policy --user-name myuser \\\n --policy-name S3Access \\\n --policy-document file://s3-policy.json\n\n\n\n\n\n\n# Enable transfer acceleration\naws s3api put-bucket-accelerate-configuration \\\n --bucket my-bucket \\\n --accelerate-configuration Status=Enabled\n\n# Use accelerated endpoint\naws s3 cp file.txt s3://my-bucket/ \\\n --endpoint-url https://my-bucket.s3-accelerate.amazonaws.com\n\n\n\n# Configure concurrent requests\naws configure set s3.max_concurrent_requests 20\naws configure set s3.max_queue_size 10000\n\n# Use multipart threshold for large files\naws configure set s3.multipart_threshold 64MB\naws configure set s3.multipart_chunksize 16MB\n\n# Set max bandwidth\naws configure set s3.max_bandwidth 100MB/s\n\n\n\n# Enable requester pays\naws s3api put-bucket-request-payment \\\n --bucket my-bucket \\\n --request-payment-configuration Payer=Requester\n\n# Access requester-pays bucket\naws s3 cp s3://requester-pays-bucket/file.txt ./ --request-payer requester\n\n\n\n\n\n\n# Put analytics configuration\naws s3api put-bucket-analytics-configuration \\\n --bucket my-bucket \\\n --id analysis-1 \\\n --analytics-configuration file://analytics.json\n\n# List analytics configurations\naws s3api list-bucket-analytics-configurations --bucket my-bucket\n\n\n\n# Put intelligent tiering configuration\naws s3api put-bucket-intelligent-tiering-configuration \\\n --bucket my-bucket \\\n --id config-1 \\\n --intelligent-tiering-configuration file://tiering.json\n\n\n\n# Get bucket metrics configuration\naws s3api get-bucket-metrics-configuration \\\n --bucket my-bucket \\\n --id metrics-1\n\n# List bucket metrics\naws s3api list-bucket-metrics-configurations --bucket my-bucket\n\n\n\n\n\n\n\n\n# Test if bucket exists\naws s3api head-bucket --bucket my-bucket\n\n# Check bucket location\naws s3api get-bucket-location --bucket my-bucket\n\n# List bucket with debug output\naws s3 ls s3://my-bucket/ --debug\n\n\n\n# Check IAM permissions\naws iam simulate-principal-policy \\\n --policy-source-arn arn:aws:iam::123456789012:user/username \\\n --action-names s3:GetObject s3:PutObject \\\n --resource-arns arn:aws:s3:::my-bucket/*\n\n\n\n# Test S3 endpoint connectivity\naws s3 ls --debug 2>&1 | grep \"endpoint\"\n\n# Use specific endpoint\naws s3 ls --endpoint-url https://s3.us-west-2.amazonaws.com\n\n# Check DNS resolution\nnslookup s3.amazonaws.com\n\n\n\n\n\n\n\n# Query CSV file with S3 Select\naws s3api select-object-content \\\n --bucket my-bucket \\\n --key data.csv \\\n --expression \"SELECT * FROM S3Object WHERE age > 25\" \\\n --expression-type SQL \\\n --input-serialization '{\"CSV\": {\"FileHeaderInfo\": \"USE\"}}' \\\n --output-serialization '{\"CSV\": {}}' \\\n output.csv\n\n\n\n# Put inventory configuration\naws s3api put-bucket-inventory-configuration \\\n --bucket my-bucket \\\n --id inventory-1 \\\n --inventory-configuration file://inventory.json\n\n\n\n# Create batch job\naws s3control create-job \\\n --account-id 123456789012 \\\n --manifest file://manifest.json \\\n --operation file://operation.json \\\n --priority 10 \\\n --role-arn arn:aws:iam::123456789012:role/batch-operations-role\n\n\n\n\n\n\n# Enable default encryption\naws s3api put-bucket-encryption --bucket my-bucket \\\n --server-side-encryption-configuration '{\n \"Rules\": [{\n \"ApplyServerSideEncryptionByDefault\": {\n \"SSEAlgorithm\": \"aws:kms\",\n \"KMSMasterKeyID\": \"arn:aws:kms:us-east-1:123456789012:key/12345678\"\n }\n }]\n }'\n\n# Enable bucket logging\naws s3api put-bucket-logging --bucket my-bucket \\\n --bucket-logging-status file://logging.json\n\n# Enable MFA delete\naws s3api put-bucket-versioning --bucket my-bucket \\\n --versioning-configuration Status=Enabled,MFADelete=Enabled \\\n --mfa \"arn:aws:iam::123456789012:mfa/root-account-mfa-device 123456\"\n\n\n\n# Upload with checksum\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --content-md5 $(openssl dgst -md5 -binary file.txt | base64)\n\n# Verify object integrity\naws s3api head-object --bucket my-bucket --key file.txt \\\n --checksum-mode ENABLED\n\n\n\n\n\n\n\nAWS CLI Command Reference\nAWS S3 API Reference\nS3 User Guide\nS3 Best Practices\nS3 Security Best Practices\n\n\n\n\n\nGetting Started with S3\nS3 Storage Classes\nS3 Transfer Acceleration\nS3 Lifecycle Policies\nS3 Replication\n\n\n\n\n\nAWS SDK for Python (Boto3)\nAWS SDK for JavaScript\nS3 API Examples\nS3 Select Examples\n\n\n\n\n\nAWS CLI Installation\nAWS CLI Configuration\nS3 Browser Tools\nCloudFormation S3 Templates\n\n\n\n\n\nS3 CloudWatch Metrics\nS3 Access Logging\nS3 Troubleshooting\nS3 Error Responses\n\n\n\n\n\nS3 Pricing\nS3 Cost Optimization\nS3 Storage Lens\nAWS Cost Explorer\n\n\n\n\n\nS3 Compliance\nS3 Object Lock\nAWS Config Rules for S3\nS3 Access Points\n\n\n\n\n\n\n\n# Upload file\naws s3 cp file.txt s3://bucket/\n\n# Download file\naws s3 cp s3://bucket/file.txt ./\n\n# Sync directory\naws s3 sync ./folder s3://bucket/folder/\n\n# List contents\naws s3 ls s3://bucket/ --recursive\n\n# Delete file\naws s3 rm s3://bucket/file.txt\n\n# Create bucket\naws s3 mb s3://new-bucket/\n\n# Remove bucket\naws s3 rb s3://bucket/ --force\n\n# Get object info\naws s3api head-object --bucket bucket --key file.txt\n\n# Generate presigned URL\naws s3 presign s3://bucket/file.txt\n\n# Check bucket access\naws s3api head-bucket --bucket bucket\n\n\n\n\n# AWS Credentials\nexport AWS_ACCESS_KEY_ID=your-access-key\nexport AWS_SECRET_ACCESS_KEY=your-secret-key\nexport AWS_SESSION_TOKEN=your-session-token\n\n# AWS Configuration\nexport AWS_DEFAULT_REGION=us-east-1\nexport AWS_DEFAULT_OUTPUT=json\nexport AWS_PROFILE=myprofile\n\n# S3 Specific\nexport AWS_S3_ENDPOINT=https://s3.amazonaws.com\nexport S3_USE_ACCELERATE_ENDPOINT=true\n\n\n\nThis guide covers the essential AWS S3 commands and operations for data management. Always refer to the official AWS documentation for the most up-to-date information and additional features. Remember to follow security best practices and implement proper access controls when working with S3 buckets and objects.", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#table-of-contents", - "href": "AWS/aws-s3-commands-guide.html#table-of-contents", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "AWS CLI Installation and Configuration\nBasic S3 Commands\nS3 API Commands\nRecursive Operations\nData Upload and Sync Operations\nBucket Management\nObject Management\nAccess Control and Permissions\nPerformance Optimization\nCost Management\nTroubleshooting\nOfficial AWS Resources", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#aws-cli-installation-and-configuration", - "href": "AWS/aws-s3-commands-guide.html#aws-cli-installation-and-configuration", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# macOS using Homebrew\nbrew install awscli\n\n# Using pip\npip install awscli --upgrade --user\n\n# Verify installation\naws --version\n\n\n\n# Configure AWS CLI with credentials\naws configure\n\n# Configure specific profile\naws configure --profile myprofile\n\n# List configuration\naws configure list\n\n# Set region for current session\nexport AWS_DEFAULT_REGION=us-east-1", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#basic-s3-commands", - "href": "AWS/aws-s3-commands-guide.html#basic-s3-commands", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# List all buckets\naws s3 ls\n\n# List objects in a bucket\naws s3 ls s3://my-bucket/\n\n# List objects with human-readable sizes\naws s3 ls s3://my-bucket/ --human-readable\n\n# List objects with summary\naws s3 ls s3://my-bucket/ --summarize\n\n# List objects recursively\naws s3 ls s3://my-bucket/ --recursive\n\n# List objects with specific prefix\naws s3 ls s3://my-bucket/prefix/ --recursive\n\n\n\n# Copy file to S3\naws s3 cp file.txt s3://my-bucket/\n\n# Copy from S3 to local\naws s3 cp s3://my-bucket/file.txt ./\n\n# Copy between S3 buckets\naws s3 cp s3://source-bucket/file.txt s3://dest-bucket/\n\n# Copy with specific storage class\naws s3 cp file.txt s3://my-bucket/ --storage-class GLACIER\n\n# Copy with server-side encryption\naws s3 cp file.txt s3://my-bucket/ --sse AES256\n\n\n\n# Move file to S3\naws s3 mv file.txt s3://my-bucket/\n\n# Move from S3 to local\naws s3 mv s3://my-bucket/file.txt ./\n\n# Move between S3 locations\naws s3 mv s3://my-bucket/old-path/ s3://my-bucket/new-path/ --recursive\n\n\n\n# Delete single object\naws s3 rm s3://my-bucket/file.txt\n\n# Delete all objects with prefix\naws s3 rm s3://my-bucket/prefix/ --recursive\n\n# Delete bucket (must be empty)\naws s3 rb s3://my-bucket/\n\n# Force delete bucket with contents\naws s3 rb s3://my-bucket/ --force", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#s3-api-commands", - "href": "AWS/aws-s3-commands-guide.html#s3-api-commands", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Create bucket (us-east-1)\naws s3api create-bucket --bucket my-bucket\n\n# Create bucket in specific region\naws s3api create-bucket --bucket my-bucket \\\n --region us-west-2 \\\n --create-bucket-configuration LocationConstraint=us-west-2\n\n# Enable versioning\naws s3api put-bucket-versioning --bucket my-bucket \\\n --versioning-configuration Status=Enabled\n\n# Enable server-side encryption by default\naws s3api put-bucket-encryption --bucket my-bucket \\\n --server-side-encryption-configuration '{\n \"Rules\": [{\n \"ApplyServerSideEncryptionByDefault\": {\n \"SSEAlgorithm\": \"AES256\"\n }\n }]\n }'\n\n\n\n# Put object\naws s3api put-object --bucket my-bucket --key file.txt --body ./file.txt\n\n# Put object with metadata\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --metadata '{\"author\":\"John Doe\",\"version\":\"1.0\"}'\n\n# Put object with content type\naws s3api put-object --bucket my-bucket --key image.jpg \\\n --body ./image.jpg \\\n --content-type image/jpeg\n\n# Put object with tags\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --tagging 'environment=production&team=data'\n\n\n\n# Initiate multipart upload\naws s3api create-multipart-upload --bucket my-bucket --key large-file.zip\n\n# Upload part\naws s3api upload-part --bucket my-bucket \\\n --key large-file.zip \\\n --part-number 1 \\\n --body part1.dat \\\n --upload-id \"upload-id-here\"\n\n# Complete multipart upload\naws s3api complete-multipart-upload --bucket my-bucket \\\n --key large-file.zip \\\n --upload-id \"upload-id-here\" \\\n --multipart-upload file://parts.json\n\n# Abort multipart upload\naws s3api abort-multipart-upload --bucket my-bucket \\\n --key large-file.zip \\\n --upload-id \"upload-id-here\"\n\n\n\n# Get object metadata\naws s3api head-object --bucket my-bucket --key file.txt\n\n# Get object ACL\naws s3api get-object-acl --bucket my-bucket --key file.txt\n\n# Get object tags\naws s3api get-object-tagging --bucket my-bucket --key file.txt\n\n# List object versions\naws s3api list-object-versions --bucket my-bucket --prefix folder/", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#recursive-operations", - "href": "AWS/aws-s3-commands-guide.html#recursive-operations", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Sync local directory to S3\naws s3 sync ./local-folder s3://my-bucket/folder/\n\n# Sync S3 to local\naws s3 sync s3://my-bucket/folder/ ./local-folder\n\n# Sync with delete (remove files not in source)\naws s3 sync ./local-folder s3://my-bucket/folder/ --delete\n\n# Sync only specific file types\naws s3 sync ./local-folder s3://my-bucket/folder/ \\\n --exclude \"*\" --include \"*.jpg\"\n\n# Sync with size-only comparison (faster)\naws s3 sync ./local-folder s3://my-bucket/folder/ --size-only\n\n# Dry run to preview changes\naws s3 sync ./local-folder s3://my-bucket/folder/ --dryrun\n\n\n\n# Copy entire directory\naws s3 cp ./local-folder s3://my-bucket/folder/ --recursive\n\n# Copy with exclude patterns\naws s3 cp s3://my-bucket/ s3://backup-bucket/ \\\n --recursive \\\n --exclude \"*.tmp\" \\\n --exclude \"logs/*\"\n\n# Copy with include patterns\naws s3 cp s3://my-bucket/ s3://backup-bucket/ \\\n --recursive \\\n --exclude \"*\" \\\n --include \"*.pdf\" \\\n --include \"*.docx\"\n\n# Copy files modified after specific date\naws s3 cp s3://my-bucket/ ./local-folder/ \\\n --recursive \\\n --exclude \"*\" \\\n --include \"*\" \\\n --metadata-directive COPY", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#data-upload-and-sync-operations", - "href": "AWS/aws-s3-commands-guide.html#data-upload-and-sync-operations", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Upload multiple files with parallel transfers\naws s3 cp ./data-folder s3://my-bucket/data/ \\\n --recursive \\\n --cli-write-timeout 0 \\\n --cli-read-timeout 0\n\n# Upload with progress bar\naws s3 cp large-file.zip s3://my-bucket/ \\\n --no-guess-mime-type \\\n --cli-progress-bar on\n\n# Upload with bandwidth limit (KB/s)\naws configure set s3.max_bandwidth 5000KB/s\naws s3 cp ./large-folder s3://my-bucket/ --recursive\n\n\n\n# Sync with exact timestamps\naws s3 sync ./folder s3://my-bucket/ --exact-timestamps\n\n# Sync with follow symlinks\naws s3 sync ./folder s3://my-bucket/ --follow-symlinks\n\n# Sync with no follow symlinks\naws s3 sync ./folder s3://my-bucket/ --no-follow-symlinks\n\n# Sync with ACL settings\naws s3 sync ./folder s3://my-bucket/ --acl public-read\n\n# Sync with storage class\naws s3 sync ./folder s3://my-bucket/ \\\n --storage-class INTELLIGENT_TIERING", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#bucket-management", - "href": "AWS/aws-s3-commands-guide.html#bucket-management", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Get bucket policy\naws s3api get-bucket-policy --bucket my-bucket\n\n# Put bucket policy\naws s3api put-bucket-policy --bucket my-bucket \\\n --policy file://bucket-policy.json\n\n# Delete bucket policy\naws selman get-bucket-policy --bucket my-bucket\n\n# Example bucket policy (bucket-policy.json)\ncat > bucket-policy.json << 'EOF'\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"PublicReadGetObject\",\n \"Effect\": \"Allow\",\n \"Principal\": \"*\",\n \"Action\": \"s3:GetObject\",\n \"Resource\": \"arn:aws:s3:::my-bucket/*\"\n }\n ]\n}\nEOF\n\n\n\n# Put lifecycle configuration\naws s3api put-bucket-lifecycle-configuration \\\n --bucket my-bucket \\\n --lifecycle-configuration file://lifecycle.json\n\n# Get lifecycle configuration\naws s3api get-bucket-lifecycle-configuration --bucket my-bucket\n\n# Example lifecycle configuration\ncat > lifecycle.json << 'EOF'\n{\n \"Rules\": [\n {\n \"ID\": \"Archive old files\",\n \"Status\": \"Enabled\",\n \"Transitions\": [\n {\n \"Days\": 30,\n \"StorageClass\": \"INTELLIGENT_TIERING\"\n },\n {\n \"Days\": 90,\n \"StorageClass\": \"GLACIER\"\n }\n ]\n }\n ]\n}\nEOF\n\n\n\n# Put CORS configuration\naws s3api put-bucket-cors --bucket my-bucket \\\n --cors-configuration file://cors.json\n\n# Get CORS configuration\naws s3api get-bucket-cors --bucket my-bucket\n\n# Example CORS configuration\ncat > cors.json << 'EOF'\n{\n \"CORSRules\": [\n {\n \"AllowedOrigins\": [\"*\"],\n \"AllowedMethods\": [\"GET\", \"PUT\", \"POST\"],\n \"AllowedHeaders\": [\"*\"],\n \"MaxAgeSeconds\": 3000\n }\n ]\n}\nEOF", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#object-management", - "href": "AWS/aws-s3-commands-guide.html#object-management", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Copy object within same bucket\naws s3api copy-object \\\n --bucket my-bucket \\\n --copy-source my-bucket/old-key \\\n --key new-key\n\n# Restore object from Glacier\naws s3api restore-object \\\n --bucket my-bucket \\\n --key archived-file.txt \\\n --restore-request Days=7\n\n# Generate presigned URL (expires in 1 hour)\naws s3 presign s3://my-bucket/file.txt --expires-in 3600\n\n# Batch delete objects\naws s3api delete-objects --bucket my-bucket \\\n --delete file://delete.json\n\n# Example delete.json\ncat > delete.json << 'EOF'\n{\n \"Objects\": [\n {\"Key\": \"file1.txt\"},\n {\"Key\": \"file2.txt\"},\n {\"Key\": \"folder/file3.txt\"}\n ]\n}\nEOF\n\n\n\n# Put object tags\naws s3api put-object-tagging \\\n --bucket my-bucket \\\n --key file.txt \\\n --tagging 'TagSet=[{Key=environment,Value=prod},{Key=owner,Value=teamA}]'\n\n# Get object tags\naws s3api get-object-tagging --bucket my-bucket --key file.txt\n\n# Delete object tags\naws s3api delete-object-tagging --bucket my-bucket --key file.txt", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#access-control-and-permissions", - "href": "AWS/aws-s3-commands-guide.html#access-control-and-permissions", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Put bucket ACL\naws s3api put-bucket-acl --bucket my-bucket --acl private\n\n# Put object ACL\naws s3api put-object-acl --bucket my-bucket --key file.txt --acl public-read\n\n# Grant specific permissions\naws s3api put-object-acl --bucket my-bucket --key file.txt \\\n --grant-read emailaddress=user@example.com \\\n --grant-write emailaddress=admin@example.com\n\n# Put bucket public access block\naws s3api put-public-access-block --bucket my-bucket \\\n --public-access-block-configuration \\\n BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=false,RestrictPublicBuckets=false\n\n\n\n# Example IAM policy for S3 access\ncat > s3-policy.json << 'EOF'\n{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"s3:GetObject\",\n \"s3:PutObject\",\n \"s3:DeleteObject\"\n ],\n \"Resource\": \"arn:aws:s3:::my-bucket/*\"\n },\n {\n \"Effect\": \"Allow\",\n \"Action\": \"s3:ListBucket\",\n \"Resource\": \"arn:aws:s3:::my-bucket\"\n }\n ]\n}\nEOF\n\n# Attach policy to user\naws iam put-user-policy --user-name myuser \\\n --policy-name S3Access \\\n --policy-document file://s3-policy.json", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#performance-optimization", - "href": "AWS/aws-s3-commands-guide.html#performance-optimization", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Enable transfer acceleration\naws s3api put-bucket-accelerate-configuration \\\n --bucket my-bucket \\\n --accelerate-configuration Status=Enabled\n\n# Use accelerated endpoint\naws s3 cp file.txt s3://my-bucket/ \\\n --endpoint-url https://my-bucket.s3-accelerate.amazonaws.com\n\n\n\n# Configure concurrent requests\naws configure set s3.max_concurrent_requests 20\naws configure set s3.max_queue_size 10000\n\n# Use multipart threshold for large files\naws configure set s3.multipart_threshold 64MB\naws configure set s3.multipart_chunksize 16MB\n\n# Set max bandwidth\naws configure set s3.max_bandwidth 100MB/s\n\n\n\n# Enable requester pays\naws s3api put-bucket-request-payment \\\n --bucket my-bucket \\\n --request-payment-configuration Payer=Requester\n\n# Access requester-pays bucket\naws s3 cp s3://requester-pays-bucket/file.txt ./ --request-payer requester", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#cost-management", - "href": "AWS/aws-s3-commands-guide.html#cost-management", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Put analytics configuration\naws s3api put-bucket-analytics-configuration \\\n --bucket my-bucket \\\n --id analysis-1 \\\n --analytics-configuration file://analytics.json\n\n# List analytics configurations\naws s3api list-bucket-analytics-configurations --bucket my-bucket\n\n\n\n# Put intelligent tiering configuration\naws s3api put-bucket-intelligent-tiering-configuration \\\n --bucket my-bucket \\\n --id config-1 \\\n --intelligent-tiering-configuration file://tiering.json\n\n\n\n# Get bucket metrics configuration\naws s3api get-bucket-metrics-configuration \\\n --bucket my-bucket \\\n --id metrics-1\n\n# List bucket metrics\naws s3api list-bucket-metrics-configurations --bucket my-bucket", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#troubleshooting", - "href": "AWS/aws-s3-commands-guide.html#troubleshooting", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Test if bucket exists\naws s3api head-bucket --bucket my-bucket\n\n# Check bucket location\naws s3api get-bucket-location --bucket my-bucket\n\n# List bucket with debug output\naws s3 ls s3://my-bucket/ --debug\n\n\n\n# Check IAM permissions\naws iam simulate-principal-policy \\\n --policy-source-arn arn:aws:iam::123456789012:user/username \\\n --action-names s3:GetObject s3:PutObject \\\n --resource-arns arn:aws:s3:::my-bucket/*\n\n\n\n# Test S3 endpoint connectivity\naws s3 ls --debug 2>&1 | grep \"endpoint\"\n\n# Use specific endpoint\naws s3 ls --endpoint-url https://s3.us-west-2.amazonaws.com\n\n# Check DNS resolution\nnslookup s3.amazonaws.com", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#advanced-operations", - "href": "AWS/aws-s3-commands-guide.html#advanced-operations", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Query CSV file with S3 Select\naws s3api select-object-content \\\n --bucket my-bucket \\\n --key data.csv \\\n --expression \"SELECT * FROM S3Object WHERE age > 25\" \\\n --expression-type SQL \\\n --input-serialization '{\"CSV\": {\"FileHeaderInfo\": \"USE\"}}' \\\n --output-serialization '{\"CSV\": {}}' \\\n output.csv\n\n\n\n# Put inventory configuration\naws s3api put-bucket-inventory-configuration \\\n --bucket my-bucket \\\n --id inventory-1 \\\n --inventory-configuration file://inventory.json\n\n\n\n# Create batch job\naws s3control create-job \\\n --account-id 123456789012 \\\n --manifest file://manifest.json \\\n --operation file://operation.json \\\n --priority 10 \\\n --role-arn arn:aws:iam::123456789012:role/batch-operations-role", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#best-practices", - "href": "AWS/aws-s3-commands-guide.html#best-practices", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Enable default encryption\naws s3api put-bucket-encryption --bucket my-bucket \\\n --server-side-encryption-configuration '{\n \"Rules\": [{\n \"ApplyServerSideEncryptionByDefault\": {\n \"SSEAlgorithm\": \"aws:kms\",\n \"KMSMasterKeyID\": \"arn:aws:kms:us-east-1:123456789012:key/12345678\"\n }\n }]\n }'\n\n# Enable bucket logging\naws s3api put-bucket-logging --bucket my-bucket \\\n --bucket-logging-status file://logging.json\n\n# Enable MFA delete\naws s3api put-bucket-versioning --bucket my-bucket \\\n --versioning-configuration Status=Enabled,MFADelete=Enabled \\\n --mfa \"arn:aws:iam::123456789012:mfa/root-account-mfa-device 123456\"\n\n\n\n# Upload with checksum\naws s3api put-object --bucket my-bucket --key file.txt \\\n --body ./file.txt \\\n --content-md5 $(openssl dgst -md5 -binary file.txt | base64)\n\n# Verify object integrity\naws s3api head-object --bucket my-bucket --key file.txt \\\n --checksum-mode ENABLED", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#official-aws-resources", - "href": "AWS/aws-s3-commands-guide.html#official-aws-resources", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "AWS CLI Command Reference\nAWS S3 API Reference\nS3 User Guide\nS3 Best Practices\nS3 Security Best Practices\n\n\n\n\n\nGetting Started with S3\nS3 Storage Classes\nS3 Transfer Acceleration\nS3 Lifecycle Policies\nS3 Replication\n\n\n\n\n\nAWS SDK for Python (Boto3)\nAWS SDK for JavaScript\nS3 API Examples\nS3 Select Examples\n\n\n\n\n\nAWS CLI Installation\nAWS CLI Configuration\nS3 Browser Tools\nCloudFormation S3 Templates\n\n\n\n\n\nS3 CloudWatch Metrics\nS3 Access Logging\nS3 Troubleshooting\nS3 Error Responses\n\n\n\n\n\nS3 Pricing\nS3 Cost Optimization\nS3 Storage Lens\nAWS Cost Explorer\n\n\n\n\n\nS3 Compliance\nS3 Object Lock\nAWS Config Rules for S3\nS3 Access Points", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#quick-reference-card", - "href": "AWS/aws-s3-commands-guide.html#quick-reference-card", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# Upload file\naws s3 cp file.txt s3://bucket/\n\n# Download file\naws s3 cp s3://bucket/file.txt ./\n\n# Sync directory\naws s3 sync ./folder s3://bucket/folder/\n\n# List contents\naws s3 ls s3://bucket/ --recursive\n\n# Delete file\naws s3 rm s3://bucket/file.txt\n\n# Create bucket\naws s3 mb s3://new-bucket/\n\n# Remove bucket\naws s3 rb s3://bucket/ --force\n\n# Get object info\naws s3api head-object --bucket bucket --key file.txt\n\n# Generate presigned URL\naws s3 presign s3://bucket/file.txt\n\n# Check bucket access\naws s3api head-bucket --bucket bucket", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#environment-variables", - "href": "AWS/aws-s3-commands-guide.html#environment-variables", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "# AWS Credentials\nexport AWS_ACCESS_KEY_ID=your-access-key\nexport AWS_SECRET_ACCESS_KEY=your-secret-key\nexport AWS_SESSION_TOKEN=your-session-token\n\n# AWS Configuration\nexport AWS_DEFAULT_REGION=us-east-1\nexport AWS_DEFAULT_OUTPUT=json\nexport AWS_PROFILE=myprofile\n\n# S3 Specific\nexport AWS_S3_ENDPOINT=https://s3.amazonaws.com\nexport S3_USE_ACCELERATE_ENDPOINT=true", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-s3-commands-guide.html#conclusion", - "href": "AWS/aws-s3-commands-guide.html#conclusion", - "title": "AWS S3 Commands and Operations Guide", - "section": "", - "text": "This guide covers the essential AWS S3 commands and operations for data management. Always refer to the official AWS documentation for the most up-to-date information and additional features. Remember to follow security best practices and implement proper access controls when working with S3 buckets and objects.", - "crumbs": [ - "AWS", - "AWS S3 Commands and Operations Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html", - "href": "AWS/aws-mfa-setup.html", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Overview\nPrerequisites\nInitial Setup\nScript Installation\nUsage\nTroubleshooting\nBest Practices\nSecurity Considerations\n\n\n\n\n\n\n\nMulti-Factor Authentication (MFA) adds an extra layer of security to your AWS account by requiring two forms of identification: 1. Something you know (your password/credentials) 2. Something you have (a time-based token from your MFA device)\n\n\n\n\nEnhanced Security: Temporary credentials automatically expire, reducing the risk if they’re compromised\nCompliance: Many organizations require MFA for production AWS access\nBest Practice: AWS recommends using temporary credentials instead of long-lived access keys\nSession Management: Temporary credentials can be scoped with specific permissions\n\n\n\n\nThe ~/aws_mfa.sh script is a lightweight utility that you call with aws_env to: - Automatically detect your current AWS user - Find your configured MFA device - Generate temporary 12-hour session credentials - Export them to your current shell environment - Optionally save them for use in Jupyter notebooks\n\n\n\n\n\n\n\n\nAWS CLI (version 2.x recommended)\n# Check if AWS CLI is installed\naws --version\n\n# Install AWS CLI on macOS\nbrew install awscli\n\n# Install AWS CLI on Linux\ncurl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\nunzip awscliv2.zip\nsudo ./aws/install\nBash Shell (standard on macOS and Linux)\n# Check bash version\nbash --version\nPython (optional, for Jupyter notebook integration)\n# Check Python installation\npython --version\n\n\n\n\n\nIAM User Account with:\n\nProgrammatic access enabled\nMFA device configured\nAppropriate permissions for your tasks\n\nMFA Device Setup\n\nVirtual MFA device (Google Authenticator, Authy, etc.)\nHardware MFA token (YubiKey, RSA SecurID, etc.)\n\n\n\n\n\n\n\n\n\nCreate or edit ~/.aws/credentials:\n[smce-veda]\naws_access_key_id = YOUR_ACCESS_KEY_ID\naws_secret_access_key = YOUR_SECRET_ACCESS_KEY\nNOTE: These credentials are obtained within the AWS console when you register for an AWS account. You must get approval for this account.\n\n\n\nCreate or edit ~/.aws/config:\n[smce-veda]\nregion = us-west-2\n\n\n\n\nLog into AWS Console\nNavigate to IAM β†’ Users β†’ Your Username\nSelect β€œSecurity credentials” tab\nClick β€œManage” next to MFA devices\nFollow the setup wizard for your MFA device type\n\nNOTE: I’ve found that having ONLY the MFA through phone app (e.g., Google Authenticator) is the only way to make this work. If you select Passkey and have an MFA through phone, they seem to conflict and the steps outlined will not work.\n\n\n\n# Replace YOUR_USERNAME with your actual IAM username\naws iam list-mfa-devices --user-name YOUR_USERNAME\n\n# Output should show:\n# \"SerialNumber\": \"arn:aws:iam::123456789012:mfa/YOUR_USERNAME\"\n\n\n\n\n\n\n\nCreate the file ~/aws_mfa.sh:\n#!/bin/bash\n\n# πŸ”’ AWS MFA Credential Generator\n# This script creates temporary (12-hour) credentials using your MFA device\n# Requires terminal access for secure input\n# License: GPL 2 or higher\n\n# Check for terminal access\nif [ ! -t 0 ]; then\n echo \"❌ Error: This script requires terminal access for secure input\" >&2\n return\nfi\n\n# Prevent token conflicts\nif [ -n \"$AWS_SESSION_TOKEN\" ]; then\n echo \"⚠️ Active session detected! \n To generate new credentials, clear your current session:\n unset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID\n Then ensure you have valid profile credentials configured.\" >&2\n return\nfi\n\n# Identify current user\nidentity=$(aws sts get-caller-identity --output json)\nusername=$(echo -- \"$identity\" | sed -n 's!.*\"arn:aws:iam::.*:user/\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$username\" ]; then\n echo \"❌ Unable to identify user. Expected format:\n arn:aws:iam::.....:user/YOUR_USERNAME\n \nCurrent identity output:\n$identity\" >&2\n return\nfi\n\necho \"πŸ‘€ Authenticated as: $username\" >&2\n\n# Find MFA device\nmfa=$(aws iam list-mfa-devices --user-name \"$username\" --output json)\ndevice=$(echo -- \"$mfa\" | sed -n 's!.*\"SerialNumber\": \"\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$device\" ]; then\n echo \"❌ No MFA device found for user: $username\n \nMFA device output:\n$mfa\" >&2\n return\nfi\n\necho \"πŸ“± MFA device found: $device\" >&2\n\n# Request MFA code\necho -n \"πŸ”’ Enter your MFA code: \" >&2\nread code\n\n# Generate temporary credentials\ntokens=$(aws sts get-session-token --serial-number \"$device\" --token-code $code --output json)\n\necho $tokens\n\n# Extract credentials\nsecret=$(echo -- \"$tokens\" | sed -n 's!.*\"SecretAccessKey\": \"\\(.*\\)\".*!\\1!p')\nsession=$(echo -- \"$tokens\" | sed -n 's!.*\"SessionToken\": \"\\(.*\\)\".*!\\1!p')\naccess=$(echo -- \"$tokens\" | sed -n 's!.*\"AccessKeyId\": \"\\(.*\\)\".*!\\1!p')\nexpire=$(echo -- \"$tokens\" | sed -n 's!.*\"Expiration\": \"\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$secret\" -o -z \"$session\" -o -z \"$access\" ]; then\n echo \"❌ Failed to generate temporary credentials\n \nToken response:\n$tokens\" >&2\n return\nfi\n\n# Export credentials to environment\nexport AWS_SESSION_TOKEN=$session\nexport AWS_SECRET_ACCESS_KEY=$secret\nexport AWS_ACCESS_KEY_ID=$access\n\necho \"βœ… Temporary credentials activated! Expires: $expire\" >&2\n\n# Save credentials to .env file for Jupyter notebooks (optional)\n# This will save the new credentials to a .env file in the current directory where you called \"aws_env\"\npython ~/set_aws_creds.py\n\n\n\nchmod +x ~/aws_mfa.sh\n\n\n\nAdd to your ~/.zshrc (or ~/.bashrc):\n##################### CREATE AWS temporary credentials\n\n# 🎯 AWS Environment Switcher\n# Seamlessly switch between AWS accounts with MFA support\naws_env() {\n # Clear any existing session\n unset AWS_SESSION_TOKEN\n\n # Load credentials for the specified profile\n export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile $1)\n export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key --profile $1)\n export AWS_DEFAULT_REGION=$(aws configure get region --profile $1)\n\n # Profiles requiring MFA authentication\n MFA_PROFILES=(\"veda-smce\" \"smce-veda\" \"aq\" \"uah-veda\")\n\n # Check if MFA is required for this profile\n if [[ \" ${MFA_PROFILES[@]} \" =~ \" ${1} \" ]]; then\n echo \"πŸ” MFA required for profile: $1\"\n source ~/aws_mfa.sh\n fi\n\n echo \"βœ… Successfully switched to $1 environment!\"\n}\nAlternatively, if you organize your shell configuration, you can add this to ~/.zshrc.d/functions or similar.\nReload your shell configuration:\nsource ~/.zshrc # or source ~/.bashrc\n\n\n\nIf you use Jupyter notebooks, create ~/set_aws_creds.py:\n#!/usr/bin/env python\nimport os\n\n# Get credentials from environment\naccess_key = os.environ.get('AWS_ACCESS_KEY_ID')\nsecret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')\nsession_token = os.environ.get('AWS_SESSION_TOKEN')\n\nif access_key and secret_key and session_token:\n # Save to .env file for Jupyter notebooks\n with open(os.path.expanduser('~/.env'), 'w') as f:\n f.write(f'AWS_ACCESS_KEY_ID={access_key}\\n')\n f.write(f'AWS_SECRET_ACCESS_KEY={secret_key}\\n')\n f.write(f'AWS_SESSION_TOKEN={session_token}\\n')\n print(\"βœ… Credentials saved to ~/.env for Jupyter notebooks\")\nelse:\n print(\"❌ No credentials found in environment\")\n\n\n\n\n\n\n\n\n\n# Switch to a profile with MFA support\naws_env smce-veda\n\n# For profiles without MFA requirement\naws_env other-profile\n\n# Or source the MFA script directly\nsource ~/aws_mfa.sh\nThe aws_env function will: 1. Load credentials for the specified profile 2. Check if MFA is required for that profile 3. If MFA is needed, automatically call the MFA script 4. The MFA script will detect your user and prompt for MFA code 5. Generate and export temporary credentials\n\n\n\n$ aws_env smce-veda\nπŸ” MFA required for profile: smce-veda\nπŸ‘€ Authenticated as: john.doe\nπŸ“± MFA device found: arn:aws:iam::123456789012:mfa/john.doe\nπŸ”’ Enter your MFA code: 123456\nβœ… Temporary credentials activated! Expires: 2024-01-01T12:00:00Z\nβœ… Successfully switched to smce-veda environment!\n\n\n\n\nOnce authenticated, you can use AWS CLI commands normally:\n# List S3 buckets\naws s3 ls s3://nasa-disasters/\n\n# Get current identity\naws sts get-caller-identity\n\n\n\nTo clear your current MFA session:\nunset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID\n\n\n\n\n\n\n\n\n\nSolution: Clear your current session:\nunset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID\n\n\n\nSolutions: - Verify your AWS credentials are configured correctly - Check that your credentials have permission to call sts:GetCallerIdentity - Ensure you’re using the correct AWS profile (if using multiple profiles)\n\n\n\nSolutions: - Verify MFA is enabled on your IAM user - Check that your user has permission to call iam:ListMFADevices - Ensure the MFA device is properly attached to your user\n\n\n\nSolutions: - Verify the MFA code is correct and hasn’t expired - Check that your user has permission to call sts:GetSessionToken - Ensure your system clock is synchronized (MFA codes are time-based)\n\n\n\nSolution: Make sure to use source or the function:\n# Correct - runs in current shell\nsource ~/aws_mfa.sh\n\n# Wrong - runs in subshell\n~/aws_mfa.sh\n\n\n\n\n\n\n# View current identity\naws sts get-caller-identity\n\n# Check environment variables\nenv | grep AWS\n\n\n\n# Replace USERNAME with your IAM username\naws iam list-mfa-devices --user-name USERNAME\n\n\n\n# Test basic permissions\naws iam get-user\naws sts get-session-token --serial-number YOUR_MFA_ARN --token-code 123456\n\n\n\n\n\n\n\n\n\nNever Share MFA Tokens\n\nMFA tokens are time-sensitive but should still be kept private\nDon’t log or store MFA tokens in scripts\n\nRegular Credential Rotation\n# Create new access key\naws iam create-access-key --user-name YOUR_USERNAME\n\n# Delete old access key\naws iam delete-access-key --access-key-id OLD_ACCESS_KEY_ID --user-name YOUR_USERNAME\nSecure Credential Storage\n# Set restrictive permissions on AWS files\nchmod 600 ~/.aws/credentials\nchmod 600 ~/.aws/config\nchmod 700 ~/.aws\nUse Least Privilege\n\nOnly grant permissions necessary for your tasks\nConsider using AWS IAM roles when possible\n\n\n\n\n\n\nMultiple AWS Profiles If you use multiple AWS accounts, configure profiles in ~/.aws/credentials:\n[smce-veda]\naws_access_key_id = KEY1\naws_secret_access_key = SECRET1\n\n[veda-smce]\naws_access_key_id = KEY2\naws_secret_access_key = SECRET2\n\n[aq]\naws_access_key_id = KEY3\naws_secret_access_key = SECRET3\nFUN FACT: You can have different credentials opened within each terminal. This can alleviate having to re-authenticate for different accounts.\nSwitch profiles using the aws_env function:\n# Switch to a profile with automatic MFA handling\naws_env smce-veda\n\n# Switch to another profile\naws_env aq\nAutomate Common Tasks Create helper functions in your shell configuration:\n# Quick S3 listing\ns3ls() {\n aws s3 ls \"s3://$1\"\n}\nSession Management Check if your session is still valid:\naws sts get-caller-identity &>/dev/null && echo \"βœ… Session valid\" || echo \"❌ Session expired\"\n\n\n\n\n\n\n\n\n\nNever Commit Credentials Add to .gitignore:\n# AWS credentials\n.aws/credentials\n.aws/config\n.env\n*.pem\nEnvironment Variables\n\nTemporary credentials are stored in environment variables\nThey’re only available in the current shell session\nClosing the terminal clears the credentials\n\nSession Duration\n\nDefault session duration is 12 hours (43200 seconds)\nSessions automatically expire and cannot be renewed\nMust generate new credentials after expiration\n\n\n\n\n\n\nVirtual MFA Best Practices\n\nUse reputable authenticator apps\nEnable cloud backup for MFA seeds\nKeep backup codes in secure location\n\nHardware MFA Best Practices\n\nStore device in secure location\nConsider having a backup MFA device\nTest device regularly\n\n\n\n\n\n\nUse VPN for Sensitive Operations\n\nConsider using VPN when accessing AWS from public networks\nBe aware of IP-based IAM policies\n\nAudit Trail\n\nEnable CloudTrail for API call logging\nRegularly review access patterns\nMonitor for unusual activity\n\n\n\n\n\n\n\n\nAWS MFA Documentation\nAWS CLI Configuration\nSTS GetSessionToken API\nIAM Best Practices\nAWS Security Best Practices\n\n\nLast Updated: 2024 Version: 2.0", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#table-of-contents", - "href": "AWS/aws-mfa-setup.html#table-of-contents", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Overview\nPrerequisites\nInitial Setup\nScript Installation\nUsage\nTroubleshooting\nBest Practices\nSecurity Considerations", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#overview", - "href": "AWS/aws-mfa-setup.html#overview", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Multi-Factor Authentication (MFA) adds an extra layer of security to your AWS account by requiring two forms of identification: 1. Something you know (your password/credentials) 2. Something you have (a time-based token from your MFA device)\n\n\n\n\nEnhanced Security: Temporary credentials automatically expire, reducing the risk if they’re compromised\nCompliance: Many organizations require MFA for production AWS access\nBest Practice: AWS recommends using temporary credentials instead of long-lived access keys\nSession Management: Temporary credentials can be scoped with specific permissions\n\n\n\n\nThe ~/aws_mfa.sh script is a lightweight utility that you call with aws_env to: - Automatically detect your current AWS user - Find your configured MFA device - Generate temporary 12-hour session credentials - Export them to your current shell environment - Optionally save them for use in Jupyter notebooks", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#prerequisites", - "href": "AWS/aws-mfa-setup.html#prerequisites", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "AWS CLI (version 2.x recommended)\n# Check if AWS CLI is installed\naws --version\n\n# Install AWS CLI on macOS\nbrew install awscli\n\n# Install AWS CLI on Linux\ncurl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\nunzip awscliv2.zip\nsudo ./aws/install\nBash Shell (standard on macOS and Linux)\n# Check bash version\nbash --version\nPython (optional, for Jupyter notebook integration)\n# Check Python installation\npython --version\n\n\n\n\n\nIAM User Account with:\n\nProgrammatic access enabled\nMFA device configured\nAppropriate permissions for your tasks\n\nMFA Device Setup\n\nVirtual MFA device (Google Authenticator, Authy, etc.)\nHardware MFA token (YubiKey, RSA SecurID, etc.)", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#initial-setup", - "href": "AWS/aws-mfa-setup.html#initial-setup", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Create or edit ~/.aws/credentials:\n[smce-veda]\naws_access_key_id = YOUR_ACCESS_KEY_ID\naws_secret_access_key = YOUR_SECRET_ACCESS_KEY\nNOTE: These credentials are obtained within the AWS console when you register for an AWS account. You must get approval for this account.\n\n\n\nCreate or edit ~/.aws/config:\n[smce-veda]\nregion = us-west-2\n\n\n\n\nLog into AWS Console\nNavigate to IAM β†’ Users β†’ Your Username\nSelect β€œSecurity credentials” tab\nClick β€œManage” next to MFA devices\nFollow the setup wizard for your MFA device type\n\nNOTE: I’ve found that having ONLY the MFA through phone app (e.g., Google Authenticator) is the only way to make this work. If you select Passkey and have an MFA through phone, they seem to conflict and the steps outlined will not work.\n\n\n\n# Replace YOUR_USERNAME with your actual IAM username\naws iam list-mfa-devices --user-name YOUR_USERNAME\n\n# Output should show:\n# \"SerialNumber\": \"arn:aws:iam::123456789012:mfa/YOUR_USERNAME\"", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#script-installation", - "href": "AWS/aws-mfa-setup.html#script-installation", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Create the file ~/aws_mfa.sh:\n#!/bin/bash\n\n# πŸ”’ AWS MFA Credential Generator\n# This script creates temporary (12-hour) credentials using your MFA device\n# Requires terminal access for secure input\n# License: GPL 2 or higher\n\n# Check for terminal access\nif [ ! -t 0 ]; then\n echo \"❌ Error: This script requires terminal access for secure input\" >&2\n return\nfi\n\n# Prevent token conflicts\nif [ -n \"$AWS_SESSION_TOKEN\" ]; then\n echo \"⚠️ Active session detected! \n To generate new credentials, clear your current session:\n unset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID\n Then ensure you have valid profile credentials configured.\" >&2\n return\nfi\n\n# Identify current user\nidentity=$(aws sts get-caller-identity --output json)\nusername=$(echo -- \"$identity\" | sed -n 's!.*\"arn:aws:iam::.*:user/\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$username\" ]; then\n echo \"❌ Unable to identify user. Expected format:\n arn:aws:iam::.....:user/YOUR_USERNAME\n \nCurrent identity output:\n$identity\" >&2\n return\nfi\n\necho \"πŸ‘€ Authenticated as: $username\" >&2\n\n# Find MFA device\nmfa=$(aws iam list-mfa-devices --user-name \"$username\" --output json)\ndevice=$(echo -- \"$mfa\" | sed -n 's!.*\"SerialNumber\": \"\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$device\" ]; then\n echo \"❌ No MFA device found for user: $username\n \nMFA device output:\n$mfa\" >&2\n return\nfi\n\necho \"πŸ“± MFA device found: $device\" >&2\n\n# Request MFA code\necho -n \"πŸ”’ Enter your MFA code: \" >&2\nread code\n\n# Generate temporary credentials\ntokens=$(aws sts get-session-token --serial-number \"$device\" --token-code $code --output json)\n\necho $tokens\n\n# Extract credentials\nsecret=$(echo -- \"$tokens\" | sed -n 's!.*\"SecretAccessKey\": \"\\(.*\\)\".*!\\1!p')\nsession=$(echo -- \"$tokens\" | sed -n 's!.*\"SessionToken\": \"\\(.*\\)\".*!\\1!p')\naccess=$(echo -- \"$tokens\" | sed -n 's!.*\"AccessKeyId\": \"\\(.*\\)\".*!\\1!p')\nexpire=$(echo -- \"$tokens\" | sed -n 's!.*\"Expiration\": \"\\(.*\\)\".*!\\1!p')\n\nif [ -z \"$secret\" -o -z \"$session\" -o -z \"$access\" ]; then\n echo \"❌ Failed to generate temporary credentials\n \nToken response:\n$tokens\" >&2\n return\nfi\n\n# Export credentials to environment\nexport AWS_SESSION_TOKEN=$session\nexport AWS_SECRET_ACCESS_KEY=$secret\nexport AWS_ACCESS_KEY_ID=$access\n\necho \"βœ… Temporary credentials activated! Expires: $expire\" >&2\n\n# Save credentials to .env file for Jupyter notebooks (optional)\n# This will save the new credentials to a .env file in the current directory where you called \"aws_env\"\npython ~/set_aws_creds.py\n\n\n\nchmod +x ~/aws_mfa.sh\n\n\n\nAdd to your ~/.zshrc (or ~/.bashrc):\n##################### CREATE AWS temporary credentials\n\n# 🎯 AWS Environment Switcher\n# Seamlessly switch between AWS accounts with MFA support\naws_env() {\n # Clear any existing session\n unset AWS_SESSION_TOKEN\n\n # Load credentials for the specified profile\n export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile $1)\n export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key --profile $1)\n export AWS_DEFAULT_REGION=$(aws configure get region --profile $1)\n\n # Profiles requiring MFA authentication\n MFA_PROFILES=(\"veda-smce\" \"smce-veda\" \"aq\" \"uah-veda\")\n\n # Check if MFA is required for this profile\n if [[ \" ${MFA_PROFILES[@]} \" =~ \" ${1} \" ]]; then\n echo \"πŸ” MFA required for profile: $1\"\n source ~/aws_mfa.sh\n fi\n\n echo \"βœ… Successfully switched to $1 environment!\"\n}\nAlternatively, if you organize your shell configuration, you can add this to ~/.zshrc.d/functions or similar.\nReload your shell configuration:\nsource ~/.zshrc # or source ~/.bashrc\n\n\n\nIf you use Jupyter notebooks, create ~/set_aws_creds.py:\n#!/usr/bin/env python\nimport os\n\n# Get credentials from environment\naccess_key = os.environ.get('AWS_ACCESS_KEY_ID')\nsecret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')\nsession_token = os.environ.get('AWS_SESSION_TOKEN')\n\nif access_key and secret_key and session_token:\n # Save to .env file for Jupyter notebooks\n with open(os.path.expanduser('~/.env'), 'w') as f:\n f.write(f'AWS_ACCESS_KEY_ID={access_key}\\n')\n f.write(f'AWS_SECRET_ACCESS_KEY={secret_key}\\n')\n f.write(f'AWS_SESSION_TOKEN={session_token}\\n')\n print(\"βœ… Credentials saved to ~/.env for Jupyter notebooks\")\nelse:\n print(\"❌ No credentials found in environment\")", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#usage", - "href": "AWS/aws-mfa-setup.html#usage", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "# Switch to a profile with MFA support\naws_env smce-veda\n\n# For profiles without MFA requirement\naws_env other-profile\n\n# Or source the MFA script directly\nsource ~/aws_mfa.sh\nThe aws_env function will: 1. Load credentials for the specified profile 2. Check if MFA is required for that profile 3. If MFA is needed, automatically call the MFA script 4. The MFA script will detect your user and prompt for MFA code 5. Generate and export temporary credentials\n\n\n\n$ aws_env smce-veda\nπŸ” MFA required for profile: smce-veda\nπŸ‘€ Authenticated as: john.doe\nπŸ“± MFA device found: arn:aws:iam::123456789012:mfa/john.doe\nπŸ”’ Enter your MFA code: 123456\nβœ… Temporary credentials activated! Expires: 2024-01-01T12:00:00Z\nβœ… Successfully switched to smce-veda environment!\n\n\n\n\nOnce authenticated, you can use AWS CLI commands normally:\n# List S3 buckets\naws s3 ls s3://nasa-disasters/\n\n# Get current identity\naws sts get-caller-identity\n\n\n\nTo clear your current MFA session:\nunset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#troubleshooting", - "href": "AWS/aws-mfa-setup.html#troubleshooting", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Solution: Clear your current session:\nunset AWS_SESSION_TOKEN AWS_SECRET_ACCESS_KEY AWS_ACCESS_KEY_ID\n\n\n\nSolutions: - Verify your AWS credentials are configured correctly - Check that your credentials have permission to call sts:GetCallerIdentity - Ensure you’re using the correct AWS profile (if using multiple profiles)\n\n\n\nSolutions: - Verify MFA is enabled on your IAM user - Check that your user has permission to call iam:ListMFADevices - Ensure the MFA device is properly attached to your user\n\n\n\nSolutions: - Verify the MFA code is correct and hasn’t expired - Check that your user has permission to call sts:GetSessionToken - Ensure your system clock is synchronized (MFA codes are time-based)\n\n\n\nSolution: Make sure to use source or the function:\n# Correct - runs in current shell\nsource ~/aws_mfa.sh\n\n# Wrong - runs in subshell\n~/aws_mfa.sh\n\n\n\n\n\n\n# View current identity\naws sts get-caller-identity\n\n# Check environment variables\nenv | grep AWS\n\n\n\n# Replace USERNAME with your IAM username\naws iam list-mfa-devices --user-name USERNAME\n\n\n\n# Test basic permissions\naws iam get-user\naws sts get-session-token --serial-number YOUR_MFA_ARN --token-code 123456", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#best-practices", - "href": "AWS/aws-mfa-setup.html#best-practices", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Never Share MFA Tokens\n\nMFA tokens are time-sensitive but should still be kept private\nDon’t log or store MFA tokens in scripts\n\nRegular Credential Rotation\n# Create new access key\naws iam create-access-key --user-name YOUR_USERNAME\n\n# Delete old access key\naws iam delete-access-key --access-key-id OLD_ACCESS_KEY_ID --user-name YOUR_USERNAME\nSecure Credential Storage\n# Set restrictive permissions on AWS files\nchmod 600 ~/.aws/credentials\nchmod 600 ~/.aws/config\nchmod 700 ~/.aws\nUse Least Privilege\n\nOnly grant permissions necessary for your tasks\nConsider using AWS IAM roles when possible\n\n\n\n\n\n\nMultiple AWS Profiles If you use multiple AWS accounts, configure profiles in ~/.aws/credentials:\n[smce-veda]\naws_access_key_id = KEY1\naws_secret_access_key = SECRET1\n\n[veda-smce]\naws_access_key_id = KEY2\naws_secret_access_key = SECRET2\n\n[aq]\naws_access_key_id = KEY3\naws_secret_access_key = SECRET3\nFUN FACT: You can have different credentials opened within each terminal. This can alleviate having to re-authenticate for different accounts.\nSwitch profiles using the aws_env function:\n# Switch to a profile with automatic MFA handling\naws_env smce-veda\n\n# Switch to another profile\naws_env aq\nAutomate Common Tasks Create helper functions in your shell configuration:\n# Quick S3 listing\ns3ls() {\n aws s3 ls \"s3://$1\"\n}\nSession Management Check if your session is still valid:\naws sts get-caller-identity &>/dev/null && echo \"βœ… Session valid\" || echo \"❌ Session expired\"", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#security-considerations", - "href": "AWS/aws-mfa-setup.html#security-considerations", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "Never Commit Credentials Add to .gitignore:\n# AWS credentials\n.aws/credentials\n.aws/config\n.env\n*.pem\nEnvironment Variables\n\nTemporary credentials are stored in environment variables\nThey’re only available in the current shell session\nClosing the terminal clears the credentials\n\nSession Duration\n\nDefault session duration is 12 hours (43200 seconds)\nSessions automatically expire and cannot be renewed\nMust generate new credentials after expiration\n\n\n\n\n\n\nVirtual MFA Best Practices\n\nUse reputable authenticator apps\nEnable cloud backup for MFA seeds\nKeep backup codes in secure location\n\nHardware MFA Best Practices\n\nStore device in secure location\nConsider having a backup MFA device\nTest device regularly\n\n\n\n\n\n\nUse VPN for Sensitive Operations\n\nConsider using VPN when accessing AWS from public networks\nBe aware of IP-based IAM policies\n\nAudit Trail\n\nEnable CloudTrail for API call logging\nRegularly review access patterns\nMonitor for unusual activity", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "AWS/aws-mfa-setup.html#additional-resources", - "href": "AWS/aws-mfa-setup.html#additional-resources", - "title": "AWS MFA Authentication Setup and Usage Guide", - "section": "", - "text": "AWS MFA Documentation\nAWS CLI Configuration\nSTS GetSessionToken API\nIAM Best Practices\nAWS Security Best Practices\n\n\nLast Updated: 2024 Version: 2.0", - "crumbs": [ - "AWS", - "AWS MFA Authentication Setup and Usage Guide" - ] - }, - { - "objectID": "aws.html", - "href": "aws.html", - "title": "AWS Authentication and S3 Operations Guides", - "section": "", - "text": "Welcome to the homepage for AWS access configuration and data management resources.\nThis collection of guides provides step-by-step instructions for securely managing AWS authentication (using MFA or SSO) and for operating with Amazon S3 using the AWS Command Line Interface (CLI).\nEach guide is designed to help users configure secure AWS environments, automate access through scripts or profiles, and perform efficient data operations across AWS services.", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "aws.html#aws-access-and-security-configuration-guides", - "href": "aws.html#aws-access-and-security-configuration-guides", - "title": "AWS Authentication and S3 Operations Guides", - "section": "AWS Access and Security Configuration Guides", - "text": "AWS Access and Security Configuration Guides\nTutorial-style guides demonstrating secure authentication methods and credential management for AWS users.\n\nAWS Multi-Factor Authentication (MFA) Setup and Usage\n\nGuide\nLearn how to enable and use AWS MFA for secure, temporary session credentials.\nThis guide explains how to:\nConfigure MFA devices (virtual or hardware)\n\nCreate and use the aws_mfa.sh script for automatic token-based authentication\n\nIntegrate temporary credentials into your shell or Jupyter notebooks\n\nImplement best practices for session management and credential security\n\n\nAWS Single Sign-On (SSO) Configuration with AWS Identity Center\n\nGuide\nStep-by-step instructions for setting up and using AWS Identity Center (formerly AWS SSO) for passwordless, secure access.\nThis guide includes:\nAWS CLI SSO configuration walkthrough\n\nUsing browser-based authentication\n\nManaging multiple AWS accounts and IAM roles\n\nDaily login and logout workflow for SSO sessions\n\nBest practices for avoiding plain-text credentials and ensuring secure session management", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "aws.html#aws-data-operations-and-management", - "href": "aws.html#aws-data-operations-and-management", - "title": "AWS Authentication and S3 Operations Guides", - "section": "AWS Data Operations and Management", - "text": "AWS Data Operations and Management\nPractical reference for working with Amazon S3 using the AWS CLI, including data upload, access control, and cost optimization.\n\nAWS S3 Commands and Operations Guide\n\nGuide\nA complete reference of commonly used AWS S3 CLI commands for bucket and object management.\nKey sections include:\nCLI installation and configuration\n\nFile operations (cp, mv, rm, sync)\n\nRecursive uploads and downloads\n\nAccess control, encryption, and bucket policies\n\nPerformance and cost management techniques\n\nSecurity best practices and troubleshooting methods", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "aws.html#best-practices-summary", - "href": "aws.html#best-practices-summary", - "title": "AWS Authentication and S3 Operations Guides", - "section": "Best Practices Summary", - "text": "Best Practices Summary\nWhen working with AWS authentication and S3: - Use temporary credentials through MFA or SSO β€” avoid storing permanent keys.\n- Enable encryption and versioning for critical S3 data.\n- Regularly rotate access keys and restrict IAM permissions by least privilege.\n- Test access with aws sts get-caller-identity and validate your session before running commands.\n- Review CloudTrail and CloudWatch logs to monitor activity.", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "aws.html#community-contributed-scripts-and-tools", - "href": "aws.html#community-contributed-scripts-and-tools", - "title": "AWS Authentication and S3 Operations Guides", - "section": "Community-Contributed Scripts and Tools", - "text": "Community-Contributed Scripts and Tools\nCommunity utilities and automation scripts for enhanced AWS usability may be added here in the future.\nThese will include: - MFA and SSO integration helpers\n- Automated credential refreshers\n- Advanced S3 sync and cost-analysis scripts", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "aws.html#contact", - "href": "aws.html#contact", - "title": "AWS Authentication and S3 Operations Guides", - "section": "Contact", - "text": "Contact\nFor questions, feedback, or contribution inquiries, please contact your AWS system administrator or submit requests through your organization’s AWS support channel.\nAlways follow internal security policies and AWS best practices when managing credentials or data access.", - "crumbs": [ - "AWS" - ] - }, - { - "objectID": "index2.html", - "href": "index2.html", - "title": "NASA Disasters: Documentation", - "section": "", - "text": "The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.\nOn this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index2.html#welcome", - "href": "index2.html#welcome", - "title": "NASA Disasters: Documentation", - "section": "", - "text": "The NASA Disasters Program advances science and builds tools to help communities make informed decisions for disaster planning. We develop free and accessible resources that use Earth observations to reveal how natural hazards interact with vulnerability, exposure, and coping capacity in a changing climate.\nOn this site, you can find the technical documentation for the services used to visualize data, how to connect to these services, how to load datasets, how the datasets were transformed into cloud-optimized formats that enable efficient cloud data access, and how to visualize datasets.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index2.html#contents", - "href": "index2.html#contents", - "title": "NASA Disasters: Documentation", - "section": "Contents", - "text": "Contents\n\nA guide to access AWS resources, with guidelines to utilize AWS commands and operations.\nDirections on how to setup GitHub, access a repository, use commands, and understand the GitHub workflow in Disasters.\nHow to use JupyterHub to work collaboratively on notebooks within a repositroy and the Disasters framework.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "index2.html#contact", - "href": "index2.html#contact", - "title": "NASA Disasters: Documentation", - "section": "Contact", - "text": "Contact\nFor technical help or general questions, please contact the support team using the feedback form.", - "crumbs": [ - "Welcome" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html", - "href": "git-github-comprehensive-guide.html", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Git is a distributed version control system that tracks changes in your code over time. GitHub is a cloud-based hosting service that lets you manage Git repositories with additional collaboration features. This guide will walk you through everything you need to know to get started with Git and GitHub on macOS.\n\n\n\nVersion Control: Track every change made to your code\nCollaboration: Work with others without conflicts\nBackup: Your code is safely stored in the cloud\nDocumentation: Built-in wiki and issue tracking\nPortfolio: Showcase your work to potential employers", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#table-of-contents", - "href": "git-github-comprehensive-guide.html#table-of-contents", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Introduction\nPrerequisites & System Setup\nGit Installation\nGitHub Account Setup\nGitHub CLI Installation & Authentication\nSetting Up Your First Repository\nEssential Git Commands\nGitHub CLI Essentials\nCommon Workflows\nBest Practices\nTroubleshooting\nQuick Reference\nResources & Links", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#introduction", - "href": "git-github-comprehensive-guide.html#introduction", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Git is a distributed version control system that tracks changes in your code over time. GitHub is a cloud-based hosting service that lets you manage Git repositories with additional collaboration features. This guide will walk you through everything you need to know to get started with Git and GitHub on macOS.\n\n\n\nVersion Control: Track every change made to your code\nCollaboration: Work with others without conflicts\nBackup: Your code is safely stored in the cloud\nDocumentation: Built-in wiki and issue tracking\nPortfolio: Showcase your work to potential employers", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#prerequisites-system-setup", - "href": "git-github-comprehensive-guide.html#prerequisites-system-setup", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "macOS 10.15 (Catalina) or later\nAdministrator access to install software\nInternet connection\nTerminal application (built into macOS)\n\n\n\n\n\nText Editor: VS Code, Sublime Text, or vim\nTerminal: iTerm2 or built-in Terminal app\nGit GUI (optional): SourceTree, GitHub Desktop, or GitKraken", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#git-installation", - "href": "git-github-comprehensive-guide.html#git-installation", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Install Homebrew if not already installed\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n\n# Install Git\nbrew install git\n\n# Verify installation\ngit --version\n\n\n\n# This will prompt to install Xcode Command Line Tools\ngit --version\n\n# Follow the prompts to complete installation\n\n\n\n\nVisit https://git-scm.com/download/mac\nDownload the installer\nRun the installer package\nVerify: git --version\n\n\n\n\n# Set your name (visible in commits)\ngit config --global user.name \"Your Name\"\n\n# Set your email (should match GitHub account)\ngit config --global user.email \"your.email@example.com\"\n\n# Set default branch name to 'main'\ngit config --global init.defaultBranch main\n\n# Set default editor (optional)\ngit config --global core.editor \"code --wait\" # For VS Code\n# git config --global core.editor \"vim\" # For vim\n# git config --global core.editor \"nano\" # For nano\n\n# Enable color output\ngit config --global color.ui auto\n\n# View all settings\ngit config --list", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#github-account-setup", - "href": "git-github-comprehensive-guide.html#github-account-setup", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Visit https://github.com\nClick β€œSign up” in the top right\nEnter your details:\n\nUsername: Choose wisely - this is permanent and public\nEmail: Use a professional email address\nPassword: Use a strong, unique password\n\nVerify your email address\nComplete the profile setup\n\n\n\n\n\nEnable Two-Factor Authentication (2FA):\n\nGo to Settings β†’ Security\nClick β€œEnable two-factor authentication”\nUse an authenticator app (Google Authenticator, Authy)\nSave backup codes securely\n\nAdd SSH Key (recommended for secure authentication):\n\n# Generate SSH key\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n\n# Press Enter for default location\n# Set a passphrase (recommended)\n\n# Start SSH agent\neval \"$(ssh-agent -s)\"\n\n# Add SSH key to agent\nssh-add ~/.ssh/id_ed25519\n\n# Copy public key to clipboard\npbcopy < ~/.ssh/id_ed25519.pub\n\nAdd SSH Key to GitHub:\n\nGo to Settings β†’ SSH and GPG keys\nClick β€œNew SSH key”\nPaste your key and give it a descriptive title\nClick β€œAdd SSH key”\n\nTest SSH connection:\n\nssh -T git@github.com\n# You should see: \"Hi username! You've successfully authenticated...\"\n\n\n\n\nGo to Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic)\nClick β€œGenerate new token”\nSet expiration and select scopes (at minimum: repo, workflow)\nCopy the token immediately (you won’t see it again)\nUse this token as your password when prompted by Git", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#github-cli-installation-authentication", - "href": "git-github-comprehensive-guide.html#github-cli-installation-authentication", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Install via Homebrew\nbrew install gh\n\n# Verify installation\ngh --version\n\n\n\n# Start authentication process\ngh auth login\n\n# Follow the prompts:\n# 1. Choose GitHub.com\n# 2. Choose HTTPS or SSH (SSH recommended if you've set it up)\n# 3. Authenticate via web browser or paste authentication token\n# 4. Choose default git protocol (ssh recommended)\n\n# Verify authentication\ngh auth status\n\n\n\n# Set default editor\ngh config set editor \"code --wait\" # For VS Code\n\n# Set default browser\ngh config set browser safari\n\n# View current configuration\ngh config list", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#setting-up-your-first-repository", - "href": "git-github-comprehensive-guide.html#setting-up-your-first-repository", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Using HTTPS\ngit clone https://github.com/username/repository.git\n\n# Using SSH (recommended if configured)\ngit clone git@github.com:username/repository.git\n\n# Using GitHub CLI\ngh repo clone username/repository\n\n# Clone into specific directory\ngit clone git@github.com:username/repository.git my-project\n\n\n\n\n\n\nClick the β€œ+” icon β†’ β€œNew repository”\nEnter repository name\nAdd description (optional)\nChoose public or private\nInitialize with README (recommended)\nAdd .gitignore (select template)\nChoose a license\nClick β€œCreate repository”\n\n\n\n\n# Create a new repository on GitHub\ngh repo create my-project --public --clone\n\n# With more options\ngh repo create my-project \\\n --public \\\n --description \"My awesome project\" \\\n --clone \\\n --add-readme \\\n --license mit \\\n --gitignore Python\n\n\n\n\n# Navigate to your project\ncd my-existing-project\n\n# Initialize git repository\ngit init\n\n# Add all files\ngit add .\n\n# Create initial commit\ngit commit -m \"Initial commit\"\n\n# Create repository on GitHub\ngh repo create my-project --source=. --public --push\n\n# Or manually add remote and push\ngit remote add origin git@github.com:username/my-project.git\ngit branch -M main\ngit push -u origin main", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#essential-git-commands", - "href": "git-github-comprehensive-guide.html#essential-git-commands", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Check Git version\ngit --version\n\n# Get help\ngit help <command>\ngit <command> --help\n\n# Initialize repository\ngit init\n\n# Clone repository\ngit clone <url>\n\n# Check status\ngit status\n\n# View commit history\ngit log\ngit log --oneline\ngit log --graph --oneline --all\n\n\n\n# Add files to staging area\ngit add <file>\ngit add . # Add all files\ngit add *.js # Add all JavaScript files\ngit add -p # Interactive staging\n\n# Remove files from staging\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Commit changes\ngit commit -m \"Commit message\"\ngit commit -am \"Message\" # Add and commit (tracked files only)\ngit commit --amend # Amend last commit\n\n# View differences\ngit diff # Unstaged changes\ngit diff --staged # Staged changes\ngit diff HEAD~1 # Changes since last commit\n\n\n\n# List branches\ngit branch # Local branches\ngit branch -r # Remote branches\ngit branch -a # All branches\n\n# Create branch\ngit branch <branch-name>\ngit checkout -b <branch-name> # Create and switch\ngit switch -c <branch-name> # Git 2.23+ (create and switch)\n\n# Switch branches\ngit checkout <branch-name>\ngit switch <branch-name> # Git 2.23+\n\n# Merge branch\ngit merge <branch-name>\n\n# Delete branch\ngit branch -d <branch-name> # Safe delete\ngit branch -D <branch-name> # Force delete\n\n# Rename branch\ngit branch -m <old-name> <new-name>\n\n\n\n# View remotes\ngit remote -v\n\n# Add remote\ngit remote add <name> <url>\ngit remote add origin git@github.com:username/repo.git\n\n# Remove remote\ngit remote remove <name>\n\n# Rename remote\ngit remote rename <old> <new>\n\n# Fetch changes\ngit fetch\ngit fetch origin\n\n# Pull changes\ngit pull\ngit pull origin main\n\n# Push changes\ngit push\ngit push origin main\ngit push -u origin main # Set upstream\ngit push --force # Force push (use with caution!)\n\n\n\n# Save changes temporarily\ngit stash\ngit stash save \"Work in progress\"\n\n# List stashes\ngit stash list\n\n# Apply stash\ngit stash apply # Apply most recent\ngit stash apply stash@{0} # Apply specific stash\n\n# Apply and remove stash\ngit stash pop\n\n# Remove stash\ngit stash drop stash@{0}\n\n# Clear all stashes\ngit stash clear\n\n\n\n# Discard changes in working directory\ngit checkout -- <file>\ngit restore <file> # Git 2.23+\n\n# Unstage files\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Reset to previous commit (keeping changes)\ngit reset --soft HEAD~1\n\n# Reset to previous commit (discard changes)\ngit reset --hard HEAD~1\n\n# Revert a commit (creates new commit)\ngit revert <commit-hash>\n\n\n\n# List tags\ngit tag\n\n# Create tag\ngit tag v1.0.0\ngit tag -a v1.0.0 -m \"Version 1.0.0\" # Annotated tag\n\n# Push tags\ngit push origin v1.0.0\ngit push origin --tags # Push all tags\n\n# Delete tag\ngit tag -d v1.0.0 # Local\ngit push origin :v1.0.0 # Remote", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#github-cli-essentials", - "href": "git-github-comprehensive-guide.html#github-cli-essentials", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Set default repository\ngh repo set-default\n# Select from list or specify:\ngh repo set-default owner/repo\n\n# View repository\ngh repo view\ngh repo view owner/repo\n\n# Fork repository\ngh repo fork owner/repo\n\n# Create repository\ngh repo create my-repo --public --clone\n\n# Delete repository (use with caution!)\ngh repo delete owner/repo\n\n# Clone repository\ngh repo clone owner/repo\n\n# List repositories\ngh repo list\ngh repo list owner\n\n\n\n# Create pull request\ngh pr create\ngh pr create --title \"Feature X\" --body \"Description\"\ngh pr create --fill # Use commit messages for title/body\ngh pr create --draft # Create as draft\ngh pr create --assignee @me --label bug,enhancement\n\n# List pull requests\ngh pr list\ngh pr list --state all\ngh pr list --author @me\n\n# View pull request\ngh pr view\ngh pr view 123\n\n# Checkout pull request\ngh pr checkout 123\n\n# Merge pull request\ngh pr merge 123\ngh pr merge 123 --merge # Create merge commit\ngh pr merge 123 --rebase # Rebase and merge\ngh pr merge 123 --squash # Squash and merge\n\n# Close pull request\ngh pr close 123\n\n# Review pull request\ngh pr review 123 --approve\ngh pr review 123 --request-changes\ngh pr review 123 --comment\n\n# Check pull request status\ngh pr status\ngh pr checks 123\n\n\n\n# Create issue\ngh issue create\ngh issue create --title \"Bug report\" --body \"Description\"\n\n# List issues\ngh issue list\ngh issue list --assignee @me\ngh issue list --label bug\n\n# View issue\ngh issue view 123\n\n# Close issue\ngh issue close 123\n\n# Reopen issue\ngh issue reopen 123\n\n# Comment on issue\ngh issue comment 123 --body \"This is fixed\"\n\n\n\n# List workflows\ngh workflow list\n\n# View workflow runs\ngh run list\ngh run view\n\n# Watch workflow run\ngh run watch\n\n# Download artifacts\ngh run download\n\n# Trigger workflow\ngh workflow run <workflow-name>\n\n\n\n# Create gist\ngh gist create file.txt\ngh gist create --public file.txt\n\n# List gists\ngh gist list\n\n# View gist\ngh gist view <id>\n\n# Edit gist\ngh gist edit <id>", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#common-workflows", - "href": "git-github-comprehensive-guide.html#common-workflows", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# 1. Start your day - sync with remote\ngit pull origin main\n\n# 2. Create feature branch\ngit checkout -b feature/new-feature\n\n# 3. Make changes and commit\ngit add .\ngit commit -m \"Add new feature\"\n\n# 4. Push to remote\ngit push -u origin feature/new-feature\n\n# 5. Create pull request\ngh pr create --fill\n\n# 6. After PR is merged, clean up\ngit checkout main\ngit pull origin main\ngit branch -d feature/new-feature\n\n\n\n# 1. Pull latest changes\ngit pull origin main\n\n# 2. If conflicts occur, Git will notify you\n# 3. Open conflicted files and resolve manually\n# Look for conflict markers:\n# <<<<<<< HEAD\n# Your changes\n# =======\n# Their changes\n# >>>>>>> branch-name\n\n# 4. After resolving, add the files\ngit add <resolved-files>\n\n# 5. Complete the merge\ngit commit -m \"Resolve merge conflicts\"\n\n# 6. Push changes\ngit push origin <branch>\n\n\n\n# 1. Add upstream remote (one time)\ngit remote add upstream https://github.com/original-owner/repo.git\n\n# 2. Fetch upstream changes\ngit fetch upstream\n\n# 3. Checkout main branch\ngit checkout main\n\n# 4. Merge upstream changes\ngit merge upstream/main\n\n# 5. Push to your fork\ngit push origin main\n\n# Using GitHub CLI\ngh repo sync owner/repo -b main\n\n\n\n# Interactive rebase for last 3 commits\ngit rebase -i HEAD~3\n\n# In the editor:\n# Change 'pick' to 'squash' for commits to combine\n# Save and close\n\n# Force push (if already pushed)\ngit push --force-with-lease origin <branch>\n\n\n\n# Apply specific commit to current branch\ngit cherry-pick <commit-hash>\n\n# Cherry-pick multiple commits\ngit cherry-pick <hash1> <hash2> <hash3>\n\n# Cherry-pick range\ngit cherry-pick <oldest-hash>^..<newest-hash>", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#best-practices", - "href": "git-github-comprehensive-guide.html#best-practices", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "The Seven Rules of Great Commit Messages:\n\nSeparate subject from body with blank line\nLimit subject line to 50 characters\nCapitalize the subject line\nDon’t end subject line with period\nUse imperative mood (β€œAdd feature” not β€œAdded feature”)\nWrap body at 72 characters\nExplain what and why, not how\n\nExample:\nAdd user authentication feature\n\nImplement OAuth 2.0 authentication using GitHub as provider.\nThis allows users to sign in with their GitHub credentials\ninstead of creating separate accounts.\n\nResolves: #123\nSee also: #456, #789\n\n\n\nfeature/add-login-page\nbugfix/fix-navigation-menu\nhotfix/security-patch\nrelease/v2.0.0\ndocs/update-readme\ntest/add-unit-tests\nrefactor/optimize-database\n\n\n\nCreate a .gitignore file in your repository root:\n# macOS\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# Dependencies\nnode_modules/\nvendor/\n.env\n\n# Build outputs\ndist/\nbuild/\n*.log\n\n# Sensitive data\n*.pem\n*.key\n.env.local\nconfig/secrets.yml\n\n\n\n\nNever commit sensitive data:\n\nPasswords, API keys, tokens\nPrivate keys or certificates\nDatabase credentials\n.env files with secrets\n\nIf you accidentally commit secrets:\n# Remove from history (requires force push)\ngit filter-branch --force --index-filter \\\n \"git rm --cached --ignore-unmatch path/to/file\" \\\n --prune-empty --tag-name-filter cat -- --all\n\n# Or use BFG Repo-Cleaner (easier)\nbrew install bfg\nbfg --delete-files file-with-secrets.txt\nUse GitHub’s security features:\n\nEnable Dependabot alerts\nEnable secret scanning\nUse protected branches\nRequire PR reviews\n\n\n\n\n\n\nAlways work in branches - Never commit directly to main\nKeep PRs small - Easier to review and less likely to have conflicts\nWrite descriptive PR descriptions - Include what, why, and how\nReview others’ code - Learn and help maintain quality\nUpdate documentation - Keep README and docs current\nTest before pushing - Run tests locally first\nCommunicate - Use issues and PR comments effectively", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#troubleshooting", - "href": "git-github-comprehensive-guide.html#troubleshooting", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "# Check SSH key is added\nssh-add -l\n\n# Add SSH key\nssh-add ~/.ssh/id_ed25519\n\n# Test connection\nssh -T git@github.com\n\n\n\n# Pull first, then push\ngit pull origin main --rebase\ngit push origin main\n\n# Or force push (careful!)\ngit push --force-with-lease\n\n\n\n# Create new branch with current commits\ngit branch new-branch\n\n# Reset original branch\ngit reset --hard HEAD~3 # Go back 3 commits\n\n# Switch to new branch\ngit checkout new-branch\n\n\n\n# Keep changes, undo commit\ngit reset --soft HEAD~1\n\n# Discard changes completely\ngit reset --hard HEAD~1\n\n\n\n# Install Git LFS\nbrew install git-lfs\ngit lfs install\n\n# Track large files\ngit lfs track \"*.psd\"\ngit add .gitattributes\ngit add large-file.psd\ngit commit -m \"Add large file with LFS\"\n\n\n\n# Update your branch\ngit checkout main\ngit pull origin main\ngit checkout your-branch\ngit rebase main\n\n# Resolve conflicts, then\ngit add .\ngit rebase --continue\ngit push --force-with-lease", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#quick-reference", - "href": "git-github-comprehensive-guide.html#quick-reference", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "[alias]\n st = status\n co = checkout\n ci = commit\n br = branch\n df = diff\n lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit\n last = log -1 HEAD\n unstage = reset HEAD --\n amend = commit --amend\n branches = branch -a\n remotes = remote -v\n contributors = shortlog --summary --numbered\n\n\n\n\nCmd + Shift + P β†’ Git commands\nCtrl + Shift + G β†’ Source control panel\nCmd + Enter β†’ Commit staged changes\nOption + Cmd + Enter β†’ Commit all changes\n\n\n\n\n# Git shortcuts\nalias g='git'\nalias gs='git status'\nalias ga='git add'\nalias gc='git commit -m'\nalias gp='git push'\nalias gpl='git pull'\nalias gco='git checkout'\nalias gb='git branch'\nalias glog='git log --oneline --graph --all'\n\n# GitHub CLI shortcuts\nalias ghr='gh repo'\nalias ghpr='gh pr'\nalias ghi='gh issue'", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#resources-links", - "href": "git-github-comprehensive-guide.html#resources-links", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Git Documentation: https://git-scm.com/doc\nGitHub Docs: https://docs.github.com\nGitHub CLI Manual: https://cli.github.com/manual\nGitHub Learning Lab: https://lab.github.com\n\n\n\n\n\nLearn Git Branching: https://learngitbranching.js.org\nGitHub Skills: https://skills.github.com\nAtlassian Git Tutorial: https://www.atlassian.com/git/tutorials\nOh My Git! (Game): https://ohmygit.org\n\n\n\n\n\nGitHub Git Cheat Sheet: https://education.github.com/git-cheat-sheet-education.pdf\nInteractive Git Cheat Sheet: https://ndpsoftware.com/git-cheatsheet.html\nGitHub CLI Cheat Sheet: https://github.com/cli/cli#commands\n\n\n\n\n\nPro Git Book (Free): https://git-scm.com/book\nGit Flow: https://nvie.com/posts/a-successful-git-branching-model\nConventional Commits: https://www.conventionalcommits.org\nSemantic Versioning: https://semver.org\n\n\n\n\n\nGitHub Desktop: https://desktop.github.com\nSourceTree: https://www.sourcetreeapp.com\nGitKraken: https://www.gitkraken.com\nTower: https://www.git-tower.com\n\n\n\n\n\nGitLens: Enhanced Git capabilities\nGit Graph: Visualize branch structure\nGitHub Pull Requests: Manage PRs from VS Code\nGit History: View and search git log\n\n\n\n\n\nGitHub Status: https://www.githubstatus.com\nStack Overflow Git Tag: https://stackoverflow.com/questions/tagged/git\nGitHub Community Forum: https://github.community\n\n\n\n\n\nGitHub YouTube: https://youtube.com/github\nThe Net Ninja Git Tutorial: Comprehensive video series\nTraversy Media Git Crash Course: Quick overview\n\n\n\n\n\nGitHub Flavored Markdown: https://github.github.com/gfm\nMarkdown Guide: https://www.markdownguide.org\nShields.io (Badges): https://shields.io", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "git-github-comprehensive-guide.html#appendix-quick-setup-script", - "href": "git-github-comprehensive-guide.html#appendix-quick-setup-script", - "title": "Git and GitHub Comprehensive Training Guide", - "section": "", - "text": "Save this as setup-git-github.sh and run to quickly set up your environment:\n#!/bin/bash\n\necho \"πŸš€ Git and GitHub Setup Script for macOS\"\necho \"=======================================\"\n\n# Install Homebrew if not present\nif ! command -v brew &> /dev/null; then\n echo \"πŸ“¦ Installing Homebrew...\"\n /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\nfi\n\n# Install Git\necho \"πŸ“¦ Installing Git...\"\nbrew install git\n\n# Install GitHub CLI\necho \"πŸ“¦ Installing GitHub CLI...\"\nbrew install gh\n\n# Git configuration\necho \"βš™οΈ Configuring Git...\"\nread -p \"Enter your name: \" name\nread -p \"Enter your email: \" email\n\ngit config --global user.name \"$name\"\ngit config --global user.email \"$email\"\ngit config --global init.defaultBranch main\ngit config --global color.ui auto\n\n# Generate SSH key\necho \"πŸ”‘ Generating SSH key...\"\nssh-keygen -t ed25519 -C \"$email\" -f ~/.ssh/id_ed25519 -N \"\"\n\n# Start SSH agent and add key\neval \"$(ssh-agent -s)\"\nssh-add ~/.ssh/id_ed25519\n\n# Copy SSH key to clipboard\npbcopy < ~/.ssh/id_ed25519.pub\necho \"πŸ“‹ SSH public key copied to clipboard!\"\n\n# GitHub CLI authentication\necho \"πŸ” Authenticating with GitHub...\"\ngh auth login\n\necho \"βœ… Setup complete!\"\necho \"\"\necho \"Next steps:\"\necho \"1. Go to GitHub Settings β†’ SSH Keys\"\necho \"2. Add a new SSH key (already in clipboard)\"\necho \"3. Test with: ssh -T git@github.com\"\nMake executable and run:\nchmod +x setup-git-github.sh\n./setup-git-github.sh\n\nLast Updated: 2024 Version: 1.0\nThis guide is a living document. Contribute improvements at: [your-repo-url]", - "crumbs": [ - "GitHub" - ] - }, - { - "objectID": "GitHub/veda-preview.html", - "href": "GitHub/veda-preview.html", - "title": "The VEDA Project", - "section": "", - "text": "Back to top", - "crumbs": [ - "GitHub", - "The VEDA Project" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html", - "href": "Jupyterhub/setup-disaster-repo.html", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Prerequisites\nGitHub Account Setup\nConfigure Git Identity\nGitHub Authentication Setup\nClone the Repository\nWorking with Branches\nMaking Changes and Pushing\nTroubleshooting Common Issues\n\n\n\n\n\nBefore starting, ensure you have: - Git installed in your JupyterHub environment - Access to terminal in JupyterHub - Internet connection - GitHub account (we’ll create one if needed)\nCheck if Git is installed:\ngit --version\nIf not installed, contact your JupyterHub administrator.\n\n\n\n\n\n\n\nVisit https://github.com\nClick Sign up\nEnter your details:\n\nUsername: Choose carefully (this is permanent and public)\nEmail: Use your professional/institutional email\nPassword: Create a strong password\n\nVerify your email address\nComplete profile setup\n\n\n\n\n\nGo to Settings β†’ Password and authentication\nClick Enable two-factor authentication\nUse an authenticator app (Google Authenticator, Authy, or Microsoft Authenticator)\nSave backup codes securely\n\n\n\n\n\n\nConfigure Git with your GitHub account information:\n# Set your name (visible in commits)\ngit config --global user.name \"Your Full Name\"\n\n# Set your email (MUST match your GitHub account email)\ngit config --global user.email \"your.email@example.com\"\n\n# Set default branch name to main\ngit config --global init.defaultBranch main\n\n# Enable colored output for better readability\ngit config --global color.ui auto\n\n# Verify your configuration\ngit config --list\nExample:\ngit config --global user.name \"Kyle Lesinger\"\ngit config --global user.email \"kyle.lesinger@example.com\"\n\n\n\n\nSince GitHub no longer supports password authentication, you need to use either: 1. Personal Access Token (Easier for JupyterHub) 2. SSH Keys (More secure, one-time setup) 3. GitHub CLI (Recommended - handles auth automatically)\n\n\n# Authenticate with GitHub CLI\ngh auth login\n\n# Follow the prompts:\n# 1. Choose: GitHub.com\n# 2. Choose: HTTPS (recommended for JupyterHub)\n# 3. Choose: Login with a web browser\n# 4. Copy the one-time code shown\n# 5. Press Enter to open browser (or manually visit https://github.com/login/device)\n# 6. Enter the code and authorize\n\n# Verify authentication\ngh auth status\n\n\n\n\nGo to GitHub.com β†’ Settings β†’ Developer settings\nClick Personal access tokens β†’ Tokens (classic)\nClick Generate new token β†’ Generate new token (classic)\nName it: β€œJupyterHub Access”\nSet expiration (90 days recommended)\nSelect scopes:\n\nβœ… repo (Full control of private repositories)\nβœ… workflow (Update GitHub Action workflows)\n\nClick Generate token\nCOPY THE TOKEN IMMEDIATELY (you won’t see it again!)\n\nStore the token securely for use when pushing:\n# Store credentials (will be saved after first use)\ngit config --global credential.helper store\n\n\n\n# Generate SSH key\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n# Press Enter for default location\n# Optionally set a passphrase\n\n# Display your public key\ncat ~/.ssh/id_ed25519.pub\n\n# Copy the entire output, then:\n# 1. Go to GitHub.com β†’ Settings β†’ SSH and GPG keys\n# 2. Click \"New SSH key\"\n# 3. Paste your key and save\n\n# Test SSH connection\nssh -T git@github.com\n\n\n\n\n\n\n\n# Navigate to your workspace\ncd ~/\n\n# Clone the repository (creates a new folder called 'conversion_scripts')\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\n\n# Navigate into the repository\ncd conversion_scripts\n\n# Verify the clone\nls -la\ngit status\n\n\n\n# Check current remotes\ngit remote -v\n\n# You should see:\n# origin https://github.com/kyle-lesinger/conversion_scripts.git (fetch)\n# origin https://github.com/kyle-lesinger/conversion_scripts.git (push)\n\n\n\nIf you set up SSH keys and prefer using SSH:\n# Remove HTTPS remote\ngit remote remove origin\n\n# Add SSH remote\ngit remote add origin git@github.com:kyle-lesinger/conversion_scripts.git\n\n# Verify the change\ngit remote -v\n\n\n\n\n\n\n\nAlways create a new branch for your work instead of committing directly to main:\n# Make sure you're on the main branch\ngit checkout main\n\n# Pull latest changes\ngit pull origin main\n\n# Create and switch to a new branch\ngit checkout -b feature/your-feature-name\n\n# Example branch names:\n# git checkout -b feature/add-preprocessing\n# git checkout -b bugfix/fix-data-pipeline\n# git checkout -b docs/update-readme\n\n\n\n# Check which branch you're on\ngit branch\n\n# List all branches (local and remote)\ngit branch -a\n\n\n\n\n\n\n\n# Create or edit files\necho \"# Conversion Scripts\" > README.md\necho \"This repository contains data conversion scripts.\" >> README.md\n\n# Check what files have changed\ngit status\n\n\n\n# Add specific files\ngit add README.md\n\n# Or add all changes\ngit add .\n\n# Commit with descriptive message\ngit commit -m \"Add README with project description\"\n\n# View commit history\ngit log --oneline\n\n\n\n\n\n# Push and set upstream branch\ngit push -u origin feature/your-feature-name\n\n# If using Personal Access Token, enter:\n# Username: your-github-username\n# Password: your-personal-access-token (NOT your GitHub password!)\n\n\n\n# After upstream is set, simply:\ngit push\n\n\n\n\n# Using GitHub CLI (if authenticated)\ngh pr create --title \"Add README documentation\" --body \"Added project description\"\n\n# Or manually:\n# 1. Visit https://github.com/kyle-lesinger/conversion_scripts\n# 2. Click \"Compare & pull request\" button\n# 3. Add title and description\n# 4. Click \"Create pull request\"\n\n\n\n\n\nHere’s a complete example workflow from start to finish:\n# 1. Configure Git (one-time setup)\ngit config --global user.name \"Kyle Lesinger\"\ngit config --global user.email \"kyle.lesinger@example.com\"\n\n# 2. Authenticate with GitHub CLI\ngh auth login\n# Follow the interactive prompts\n\n# 3. Clone the repository\ncd ~/\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\ncd conversion_scripts\n\n# 4. Create a new branch\ngit checkout -b feature/add-conversion-script\n\n# 5. Create a new file\ncat > convert_data.py << 'EOF'\n#!/usr/bin/env python3\n\"\"\"\nData conversion utility script\n\"\"\"\n\ndef convert_format(input_file, output_file):\n \"\"\"Convert data from one format to another\"\"\"\n print(f\"Converting {input_file} to {output_file}\")\n # Add conversion logic here\n\nif __name__ == \"__main__\":\n convert_format(\"input.txt\", \"output.json\")\nEOF\n\n# 6. Stage and commit\ngit add convert_data.py\ngit commit -m \"Add data conversion utility script\"\n\n# 7. Push to GitHub\ngit push -u origin feature/add-conversion-script\n\n# 8. Create pull request\ngh pr create --title \"Add data conversion script\" --body \"Initial conversion utility\"\n\n\n\n\n\n\nError: remote: Invalid username or password\nSolution:\n# Use Personal Access Token instead of password\n# When prompted for password, paste your token\n\n# Or use GitHub CLI\ngh auth login\n\n\n\nError: git@github.com: Permission denied (publickey)\nSolution:\n# Check if SSH key exists\nls -la ~/.ssh/\n\n# Generate new key if needed\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n\n# Add to SSH agent\neval \"$(ssh-agent -s)\"\nssh-add ~/.ssh/id_ed25519\n\n# Add public key to GitHub account\ncat ~/.ssh/id_ed25519.pub\n# Copy output and add to GitHub.com β†’ Settings β†’ SSH Keys\n\n\n\nError: error: remote origin already exists\nSolution:\n# Remove existing remote\ngit remote remove origin\n\n# Add new remote\ngit remote add origin https://github.com/kyle-lesinger/conversion_scripts.git\n\n\n\nError: ! [rejected] main -> main (non-fast-forward)\nSolution:\n# Pull latest changes first\ngit pull origin main --rebase\n\n# Then push\ngit push origin main\n\n\n\nError: Working on main branch instead of feature branch\nSolution:\n# Create new branch with current changes\ngit checkout -b feature/my-changes\n\n# Push to new branch\ngit push -u origin feature/my-changes\n\n\n\n\n\n\nAlways work in branches - Never commit directly to main\nPull before pushing - Always sync with remote before pushing\nUse descriptive commit messages - Explain what and why\nCommit frequently - Small, logical commits are better\nKeep tokens secure - Never commit tokens or passwords\nTest locally - Run your code before committing\n\n\n\n\n\n# Clone repository\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\n\n# Create branch\ngit checkout -b feature/new-feature\n\n# Check status\ngit status\n\n# Add files\ngit add .\n\n# Commit\ngit commit -m \"Description of changes\"\n\n# Push new branch\ngit push -u origin feature/new-feature\n\n# Push existing branch\ngit push\n\n# Pull latest changes\ngit pull origin main\n\n# Switch branches\ngit checkout branch-name\n\n# List branches\ngit branch -a\n\n# Delete local branch\ngit branch -d branch-name\n\n# View commit history\ngit log --oneline --graph\n\n\n\n\n\nGitHub Docs\nGit Documentation\nGitHub CLI Manual\nPro Git Book (Free)\n\n\n\n\n\nIf you encounter issues not covered here:\n\nCheck the repository issues: https://github.com/kyle-lesinger/conversion_scripts/issues\nAsk in the JupyterHub support channel\nConsult the comprehensive Git/GitHub guide\n\n\nLast Updated: 2024 Version: 1.0", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#table-of-contents", - "href": "Jupyterhub/setup-disaster-repo.html#table-of-contents", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Prerequisites\nGitHub Account Setup\nConfigure Git Identity\nGitHub Authentication Setup\nClone the Repository\nWorking with Branches\nMaking Changes and Pushing\nTroubleshooting Common Issues", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#prerequisites", - "href": "Jupyterhub/setup-disaster-repo.html#prerequisites", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Before starting, ensure you have: - Git installed in your JupyterHub environment - Access to terminal in JupyterHub - Internet connection - GitHub account (we’ll create one if needed)\nCheck if Git is installed:\ngit --version\nIf not installed, contact your JupyterHub administrator.", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#github-account-setup", - "href": "Jupyterhub/setup-disaster-repo.html#github-account-setup", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Visit https://github.com\nClick Sign up\nEnter your details:\n\nUsername: Choose carefully (this is permanent and public)\nEmail: Use your professional/institutional email\nPassword: Create a strong password\n\nVerify your email address\nComplete profile setup\n\n\n\n\n\nGo to Settings β†’ Password and authentication\nClick Enable two-factor authentication\nUse an authenticator app (Google Authenticator, Authy, or Microsoft Authenticator)\nSave backup codes securely", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#configure-git-identity", - "href": "Jupyterhub/setup-disaster-repo.html#configure-git-identity", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Configure Git with your GitHub account information:\n# Set your name (visible in commits)\ngit config --global user.name \"Your Full Name\"\n\n# Set your email (MUST match your GitHub account email)\ngit config --global user.email \"your.email@example.com\"\n\n# Set default branch name to main\ngit config --global init.defaultBranch main\n\n# Enable colored output for better readability\ngit config --global color.ui auto\n\n# Verify your configuration\ngit config --list\nExample:\ngit config --global user.name \"Kyle Lesinger\"\ngit config --global user.email \"kyle.lesinger@example.com\"", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#github-authentication-setup", - "href": "Jupyterhub/setup-disaster-repo.html#github-authentication-setup", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Since GitHub no longer supports password authentication, you need to use either: 1. Personal Access Token (Easier for JupyterHub) 2. SSH Keys (More secure, one-time setup) 3. GitHub CLI (Recommended - handles auth automatically)\n\n\n# Authenticate with GitHub CLI\ngh auth login\n\n# Follow the prompts:\n# 1. Choose: GitHub.com\n# 2. Choose: HTTPS (recommended for JupyterHub)\n# 3. Choose: Login with a web browser\n# 4. Copy the one-time code shown\n# 5. Press Enter to open browser (or manually visit https://github.com/login/device)\n# 6. Enter the code and authorize\n\n# Verify authentication\ngh auth status\n\n\n\n\nGo to GitHub.com β†’ Settings β†’ Developer settings\nClick Personal access tokens β†’ Tokens (classic)\nClick Generate new token β†’ Generate new token (classic)\nName it: β€œJupyterHub Access”\nSet expiration (90 days recommended)\nSelect scopes:\n\nβœ… repo (Full control of private repositories)\nβœ… workflow (Update GitHub Action workflows)\n\nClick Generate token\nCOPY THE TOKEN IMMEDIATELY (you won’t see it again!)\n\nStore the token securely for use when pushing:\n# Store credentials (will be saved after first use)\ngit config --global credential.helper store\n\n\n\n# Generate SSH key\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n# Press Enter for default location\n# Optionally set a passphrase\n\n# Display your public key\ncat ~/.ssh/id_ed25519.pub\n\n# Copy the entire output, then:\n# 1. Go to GitHub.com β†’ Settings β†’ SSH and GPG keys\n# 2. Click \"New SSH key\"\n# 3. Paste your key and save\n\n# Test SSH connection\nssh -T git@github.com", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#clone-the-repository", - "href": "Jupyterhub/setup-disaster-repo.html#clone-the-repository", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "# Navigate to your workspace\ncd ~/\n\n# Clone the repository (creates a new folder called 'conversion_scripts')\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\n\n# Navigate into the repository\ncd conversion_scripts\n\n# Verify the clone\nls -la\ngit status\n\n\n\n# Check current remotes\ngit remote -v\n\n# You should see:\n# origin https://github.com/kyle-lesinger/conversion_scripts.git (fetch)\n# origin https://github.com/kyle-lesinger/conversion_scripts.git (push)\n\n\n\nIf you set up SSH keys and prefer using SSH:\n# Remove HTTPS remote\ngit remote remove origin\n\n# Add SSH remote\ngit remote add origin git@github.com:kyle-lesinger/conversion_scripts.git\n\n# Verify the change\ngit remote -v", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#working-with-branches", - "href": "Jupyterhub/setup-disaster-repo.html#working-with-branches", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Always create a new branch for your work instead of committing directly to main:\n# Make sure you're on the main branch\ngit checkout main\n\n# Pull latest changes\ngit pull origin main\n\n# Create and switch to a new branch\ngit checkout -b feature/your-feature-name\n\n# Example branch names:\n# git checkout -b feature/add-preprocessing\n# git checkout -b bugfix/fix-data-pipeline\n# git checkout -b docs/update-readme\n\n\n\n# Check which branch you're on\ngit branch\n\n# List all branches (local and remote)\ngit branch -a", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#making-changes-and-pushing", - "href": "Jupyterhub/setup-disaster-repo.html#making-changes-and-pushing", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "# Create or edit files\necho \"# Conversion Scripts\" > README.md\necho \"This repository contains data conversion scripts.\" >> README.md\n\n# Check what files have changed\ngit status\n\n\n\n# Add specific files\ngit add README.md\n\n# Or add all changes\ngit add .\n\n# Commit with descriptive message\ngit commit -m \"Add README with project description\"\n\n# View commit history\ngit log --oneline\n\n\n\n\n\n# Push and set upstream branch\ngit push -u origin feature/your-feature-name\n\n# If using Personal Access Token, enter:\n# Username: your-github-username\n# Password: your-personal-access-token (NOT your GitHub password!)\n\n\n\n# After upstream is set, simply:\ngit push\n\n\n\n\n# Using GitHub CLI (if authenticated)\ngh pr create --title \"Add README documentation\" --body \"Added project description\"\n\n# Or manually:\n# 1. Visit https://github.com/kyle-lesinger/conversion_scripts\n# 2. Click \"Compare & pull request\" button\n# 3. Add title and description\n# 4. Click \"Create pull request\"", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#complete-workflow-example", - "href": "Jupyterhub/setup-disaster-repo.html#complete-workflow-example", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Here’s a complete example workflow from start to finish:\n# 1. Configure Git (one-time setup)\ngit config --global user.name \"Kyle Lesinger\"\ngit config --global user.email \"kyle.lesinger@example.com\"\n\n# 2. Authenticate with GitHub CLI\ngh auth login\n# Follow the interactive prompts\n\n# 3. Clone the repository\ncd ~/\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\ncd conversion_scripts\n\n# 4. Create a new branch\ngit checkout -b feature/add-conversion-script\n\n# 5. Create a new file\ncat > convert_data.py << 'EOF'\n#!/usr/bin/env python3\n\"\"\"\nData conversion utility script\n\"\"\"\n\ndef convert_format(input_file, output_file):\n \"\"\"Convert data from one format to another\"\"\"\n print(f\"Converting {input_file} to {output_file}\")\n # Add conversion logic here\n\nif __name__ == \"__main__\":\n convert_format(\"input.txt\", \"output.json\")\nEOF\n\n# 6. Stage and commit\ngit add convert_data.py\ngit commit -m \"Add data conversion utility script\"\n\n# 7. Push to GitHub\ngit push -u origin feature/add-conversion-script\n\n# 8. Create pull request\ngh pr create --title \"Add data conversion script\" --body \"Initial conversion utility\"", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#troubleshooting-common-issues", - "href": "Jupyterhub/setup-disaster-repo.html#troubleshooting-common-issues", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Error: remote: Invalid username or password\nSolution:\n# Use Personal Access Token instead of password\n# When prompted for password, paste your token\n\n# Or use GitHub CLI\ngh auth login\n\n\n\nError: git@github.com: Permission denied (publickey)\nSolution:\n# Check if SSH key exists\nls -la ~/.ssh/\n\n# Generate new key if needed\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n\n# Add to SSH agent\neval \"$(ssh-agent -s)\"\nssh-add ~/.ssh/id_ed25519\n\n# Add public key to GitHub account\ncat ~/.ssh/id_ed25519.pub\n# Copy output and add to GitHub.com β†’ Settings β†’ SSH Keys\n\n\n\nError: error: remote origin already exists\nSolution:\n# Remove existing remote\ngit remote remove origin\n\n# Add new remote\ngit remote add origin https://github.com/kyle-lesinger/conversion_scripts.git\n\n\n\nError: ! [rejected] main -> main (non-fast-forward)\nSolution:\n# Pull latest changes first\ngit pull origin main --rebase\n\n# Then push\ngit push origin main\n\n\n\nError: Working on main branch instead of feature branch\nSolution:\n# Create new branch with current changes\ngit checkout -b feature/my-changes\n\n# Push to new branch\ngit push -u origin feature/my-changes", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#best-practices", - "href": "Jupyterhub/setup-disaster-repo.html#best-practices", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "Always work in branches - Never commit directly to main\nPull before pushing - Always sync with remote before pushing\nUse descriptive commit messages - Explain what and why\nCommit frequently - Small, logical commits are better\nKeep tokens secure - Never commit tokens or passwords\nTest locally - Run your code before committing", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#quick-command-reference", - "href": "Jupyterhub/setup-disaster-repo.html#quick-command-reference", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "# Clone repository\ngit clone https://github.com/kyle-lesinger/conversion_scripts.git\n\n# Create branch\ngit checkout -b feature/new-feature\n\n# Check status\ngit status\n\n# Add files\ngit add .\n\n# Commit\ngit commit -m \"Description of changes\"\n\n# Push new branch\ngit push -u origin feature/new-feature\n\n# Push existing branch\ngit push\n\n# Pull latest changes\ngit pull origin main\n\n# Switch branches\ngit checkout branch-name\n\n# List branches\ngit branch -a\n\n# Delete local branch\ngit branch -d branch-name\n\n# View commit history\ngit log --oneline --graph", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#additional-resources", - "href": "Jupyterhub/setup-disaster-repo.html#additional-resources", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "GitHub Docs\nGit Documentation\nGitHub CLI Manual\nPro Git Book (Free)", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/setup-disaster-repo.html#getting-help", - "href": "Jupyterhub/setup-disaster-repo.html#getting-help", - "title": "Setting Up Disaster Repository - Step-by-Step Guide", - "section": "", - "text": "If you encounter issues not covered here:\n\nCheck the repository issues: https://github.com/kyle-lesinger/conversion_scripts/issues\nAsk in the JupyterHub support channel\nConsult the comprehensive Git/GitHub guide\n\n\nLast Updated: 2024 Version: 1.0", - "crumbs": [ - "JupyterHub", - "Setting Up Disaster Repository - Step-by-Step Guide" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html", - "href": "Jupyterhub/jupyterhub-training-guide.html", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Introduction\nGetting Started\nJupyterHub Interface Overview\nWorking with Jupyter Notebooks\nData Management\nEnvironment and Package Management\nTerminal and Command Line Access\nCollaboration and Sharing\nResource Management\nBest Practices\nTroubleshooting\nKeyboard Shortcuts\nResources and Links\n\n\n\n\n\n\n\nJupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:\n\nAccess powerful computing resources through your web browser\nWrite and execute code in Python, R, Julia, and other languages\nVisualize data with interactive plots and charts\nCollaborate with team members on shared projects\nWork from anywhere without local setup requirements\n\n\n\n\nThe Disasters Hub (https://hub.disasters.2i2c.cloud/) is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:\n\nPre-configured environments for geospatial analysis\nAccess to disaster-related datasets\nCollaboration tools for response teams\nIntegration with cloud storage services\nScalable computing resources\n\n\n\n\nβœ… No Installation Required - Everything runs in your browser\nβœ… Pre-configured Environments - Common packages already installed\nβœ… Persistent Storage - Your work is saved between sessions\nβœ… Collaboration Ready - Share notebooks with team members\nβœ… Scalable Resources - Access to GPU and high-memory instances when needed\n\n\n\n\n\n\n\n\nNavigate to the Hub\n\nOpen your web browser (Chrome, Firefox, Safari, or Edge recommended)\nGo to: https://hub.disasters.2i2c.cloud/\nBookmark this URL for easy access\n\nAuthentication\n\nYou’ll see a login screen with authentication options\nCommon authentication methods:\n\nGitHub: Use your GitHub credentials\nGoogle: Use your Google account\nInstitutional Login: Use your organization’s credentials\n\nSelect your authentication method and follow the prompts\n\nFirst-Time Login\n\nAccept terms of service if prompted\nYour home directory will be created automatically\nInitial setup may take 30-60 seconds\n\n\n\n\n\nAfter login, you may be presented with server options:\nServer Options:\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ β€’ Small (2 CPU, 4GB RAM) β”‚\nβ”‚ β€’ Medium (4 CPU, 8GB RAM) β”‚\nβ”‚ β€’ Large (8 CPU, 16GB RAM) β”‚\nβ”‚ β€’ GPU Instance (if available) β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\nTips for Server Selection: - Start with Small for basic notebook work - Use Medium for data processing tasks - Choose Large for machine learning or big data - Select GPU only when needed (limited availability)\n\n\n\n\n\n\n\nOnce logged in, you’ll see the JupyterLab interface:\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ [File] [Edit] [View] [Run] [Kernel] [Tabs] [Settings] β”‚\nβ”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€\nβ”‚ πŸ“ File Browser β”‚ Main Work Area | \nβ”‚ β”œβ”€β”€ πŸ“‚ data β”‚ β”‚\nβ”‚ β”œβ”€β”€ πŸ“‚ notebooksβ”‚ [Launcher Tab] β”‚\nβ”‚ β”œβ”€β”€ πŸ“‚ scripts β”‚ β€’ Notebook (Python 3) β”‚\nβ”‚ └── πŸ“„ README β”‚ β€’ Console β”‚\nβ”‚ β”‚ β€’ Terminal |\nβ”‚ [+] New β”‚ β€’ Text File β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n\n\n\n\nTop Menu Bar\n\nFile operations, editing, running code\nKernel management\nView options and settings\n\nLeft Sidebar\n\nFile Browser (πŸ“): Navigate and manage files\nRunning Terminals and Kernels (β–Ά): Monitor active sessions\nCommand Palette (πŸ”§): Access all commands\nExtension Manager (🧩): Add functionality\n\nMain Work Area\n\nMultiple tabs for notebooks, terminals, and files\nDrag tabs to rearrange or create split views\nRight-click tabs for additional options\n\nStatus Bar\n\nCurrent kernel status\nLine/column position\nFile encoding and type\n\n\n\n\n\n\nClick the Python 3 icon in the Launcher\nOr: File β†’ New β†’ Notebook\nSelect kernel (usually Python 3)\nRename your notebook: Right-click on β€œUntitled.ipynb” β†’ Rename\n\n\n\n\n\n\n\n\nA Jupyter notebook consists of cells that can contain: - Code: Executable Python (or other language) code - Markdown: Formatted text, equations, and images - Raw: Unformatted text\n\n\n\n\n\n\nRun current cell: Shift + Enter (run and move to next)\nRun current cell in place: Ctrl + Enter (stay in cell)\nRun all cells: Menu β†’ Run β†’ Run All Cells\n\n\n\n\n# Code Cell Example\nimport pandas as pd\nimport numpy as np\ndata = pd.read_csv('data.csv')\ndata.head()\n# Markdown Cell Example\n## Analysis Results\n- **Finding 1**: Data shows increasing trend\n- **Finding 2**: Correlation coefficient: 0.85\n\n$$E = mc^2$$ # LaTeX equation\n\n\n\n\nInsert cell above: A (in command mode)\nInsert cell below: B (in command mode)\nDelete cell: DD (press D twice in command mode)\nCopy cell: C (in command mode)\nPaste cell: V (in command mode)\nUndo deletion: Z (in command mode)\n\n\n\n\n\nThe kernel is the computational engine that executes your code.\n\n\n\nRestart kernel: Kernel β†’ Restart\nRestart and clear output: Kernel β†’ Restart & Clear Output\nRestart and run all: Kernel β†’ Restart & Run All\nInterrupt execution: Kernel β†’ Interrupt (or I,I in command mode)\nChange kernel: Kernel β†’ Change Kernel\n\n\n\n\n\nβ—‹: Kernel idle\n●: Kernel busy\n[*]: Cell currently executing\n[1]: Cell execution number\n\n\n\n\n\n\nUse meaningful cell divisions\n\nOne concept or operation per cell\nSeparate imports, data loading, processing, visualization\n\nDocument your work\n# Good practice: Add comments and markdown cells\n# Load disaster response data\ndf = pd.read_csv('disaster_data.csv')\n\n# Data preprocessing\ndf['date'] = pd.to_datetime(df['date'])\ndf = df.dropna()\nClear output before sharing\n\nKernel β†’ Restart & Clear Output\nReduces file size and removes sensitive output\n\n\n\n\n\n\n\n\n\n\n\n\nDrag and drop files directly into the file browser\nUpload button: Click the ⬆ button in the file browser toolbar\nTerminal upload: Use wget or curl in terminal\nwget https://example.com/data.csv\ncurl -O https://example.com/data.zip\n\n\n\n\n\nRight-click file in browser β†’ Download\nFrom notebook:\nfrom IPython.display import FileLink\nFileLink('results.csv') # Creates downloadable link\n\n\n\n\n\n\n\nimport boto3\nimport pandas as pd\n\n# Read from S3\ndf = pd.read_csv('s3://bucket-name/path/to/file.csv')\n\n# Write to S3\ndf.to_csv('s3://bucket-name/output/results.csv', index=False)\n\n\n\n# Read from GCS\ndf = pd.read_csv('gs://bucket-name/path/to/file.csv')\n\n# Using gsutil in terminal\n!gsutil cp gs://bucket/file.csv ./data/\n\n\n\n\nRecommended directory structure:\nhome/\nβ”œβ”€β”€ data/\nβ”‚ β”œβ”€β”€ raw/ # Original, immutable data\nβ”‚ β”œβ”€β”€ processed/ # Cleaned, transformed data\nβ”‚ └── external/ # Data from external sources\nβ”œβ”€β”€ notebooks/\nβ”‚ β”œβ”€β”€ exploratory/ # Initial explorations\nβ”‚ β”œβ”€β”€ analysis/ # Detailed analysis\nβ”‚ └── reports/ # Final reports\nβ”œβ”€β”€ scripts/ # Reusable Python scripts\nβ”œβ”€β”€ results/ # Output files, figures\n└── requirements.txt # Package dependencies\n\n\n\n⚠️ Important: Your home directory is persistent, but understand the storage limits:\n\nHome directory: Usually 10-100 GB (persistent)\nShared data: Read-only datasets available to all users\nTemporary storage: /tmp cleared on restart\nBest practice: Store large datasets in cloud storage, not home directory\n\n\n\n\n\n\n\n\n\n\n# In a notebook cell\n!pip install package_name\n\n# Install specific version\n!pip install pandas==1.3.0\n\n# Install from requirements file\n!pip install -r requirements.txt\n\n# Install in user directory (if no write permissions)\n!pip install --user package_name\n\n\n\n# In a notebook cell\n!conda install -c conda-forge package_name -y\n\n# Install multiple packages\n!conda install numpy pandas matplotlib -y\n\n# Create new environment\n!conda create -n myenv python=3.9 -y\n!conda activate myenv # Note: Activation in notebooks is tricky\n\n\n\n\n\n\nimport sys\nprint(sys.executable) # Python interpreter path\nprint(sys.version) # Python version\n\n# List installed packages\n!pip list\n!conda list\n\n\n\n# In terminal\npython -m venv myproject\nsource myproject/bin/activate # Linux/Mac\npip install -r requirements.txt\n\n\n\n\n\nInstall IPython kernel:\npython -m ipykernel install --user --name mykernel --display-name \"My Kernel\"\nList available kernels:\njupyter kernelspec list\nRemove a kernel:\njupyter kernelspec uninstall mykernel\n\n\n\n\n\n\n\n\n\nFrom Launcher: Click β€œTerminal” icon\nFrom menu: File β†’ New β†’ Terminal\nKeyboard shortcut: (varies by setup)\n\n\n\n\n# Navigation\npwd # Print working directory\nls -la # List files with details\ncd ~/notebooks # Change directory\n\n# File operations\nmkdir project # Create directory\ncp file1.txt file2.txt # Copy file\nmv oldname newname # Move/rename\nrm file.txt # Delete file (careful!)\n\n# File viewing\ncat file.txt # Display file contents\nhead -n 10 data.csv # First 10 lines\ntail -n 10 log.txt # Last 10 lines\nless large_file.txt # Page through file\n\n# Process management\nps aux # List processes\ntop # Monitor resources\nkill -9 PID # Kill process\n\n# Git operations\ngit status\ngit add .\ngit commit -m \"message\"\ngit push\n\n\n\n# Count lines in file\nwc -l data.csv\n\n# View CSV structure\nhead -1 data.csv | tr ',' '\\n' | nl\n\n# Search in files\ngrep \"pattern\" file.txt\ngrep -r \"pattern\" ./directory\n\n# Compress/decompress\nzip archive.zip file1 file2\nunzip archive.zip\ntar -czf archive.tar.gz directory/\ntar -xzf archive.tar.gz\n\n\n\n\n\n\n\n\n\n\nDownload notebook: File β†’ Download as β†’ Notebook (.ipynb)\nShare via email, Slack, or file sharing service\nRecipient uploads to their JupyterHub\n\n\n\n\n# Initialize repository\ngit init\ngit add notebook.ipynb\ngit commit -m \"Add analysis notebook\"\ngit remote add origin https://github.com/user/repo.git\ngit push -u origin main\n\n\n\n\nHTML: File β†’ Export Notebook As β†’ HTML\nPDF: File β†’ Export Notebook As β†’ PDF (requires LaTeX)\nPython script: File β†’ Export Notebook As β†’ Python\nMarkdown: File β†’ Export Notebook As β†’ Markdown\n\n\n\n\n\nSome JupyterHub deployments support real-time collaboration:\n\nShare workspace link: Get shareable link from hub admin\nCollaborative editing: Multiple users can edit simultaneously\nSee collaborator cursors: Real-time cursor positions\nChat integration: Built-in chat for discussion\n\n\n\n\n\nClear outputs before committing:\njupyter nbconvert --clear-output notebook.ipynb\nUse .gitignore:\n.ipynb_checkpoints/\n__pycache__/\n*.pyc\n.DS_Store\ndata/ # Don't commit large data files\nNotebook diff tools:\n# Install nbdime for better notebook diffs\npip install nbdime\nnbdime config-git --enable\n\n\n\n\n\n\n\n\nYour JupyterHub instance has resource limits:\n# Check available resources\nimport psutil\n\n# Memory\nmemory = psutil.virtual_memory()\nprint(f\"Total RAM: {memory.total / 1e9:.2f} GB\")\nprint(f\"Available: {memory.available / 1e9:.2f} GB\")\nprint(f\"Used: {memory.percent}%\")\n\n# CPU\nprint(f\"CPU cores: {psutil.cpu_count()}\")\nprint(f\"CPU usage: {psutil.cpu_percent()}%\")\n\n# Disk\ndisk = psutil.disk_usage('/')\nprint(f\"Disk space: {disk.total / 1e9:.2f} GB\")\nprint(f\"Disk used: {disk.percent}%\")\n\n\n\n\n\n\nInstall Resource Usage extension\nShows real-time memory and CPU usage in status bar\n\n\n\n\n# Real-time resource monitoring\ntop\nhtop # If installed\n\n# Memory usage\nfree -h\n\n# Disk usage\ndf -h\ndu -sh * # Directory sizes\n\n\n\n\n\nClear variables when done:\n# Clear specific variable\ndel large_dataframe\n\n# Clear all variables\n%reset -f\n\n# Garbage collection\nimport gc\ngc.collect()\nUse efficient data types:\n# Use categories for strings with few unique values\ndf['category'] = df['category'].astype('category')\n\n# Use smaller numeric types when possible\ndf['count'] = df['count'].astype('int32') # Instead of int64\nProcess data in chunks:\n# Read large CSV in chunks\nchunk_size = 10000\nfor chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):\n process_chunk(chunk)\n\n\n\n\nAlways shut down kernels and terminals when done:\n\nShutdown kernel: Kernel β†’ Shutdown\nClose terminals: Exit or Ctrl+D\nHub Control Panel: File β†’ Hub Control Panel β†’ Stop My Server\nLogout: File β†’ Log Out\n\n⚠️ Important: Idle servers may be automatically culled after a period of inactivity (usually 1-2 hours).\n\n\n\n\n\n\n\n\nUse consistent naming:\n2024-01-15_earthquake_analysis.ipynb # Good\nuntitled1.ipynb # Bad\nCreate project templates:\n# notebook_template.ipynb\n\n# 1. Imports\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# 2. Configuration\npd.set_option('display.max_columns', None)\nplt.style.use('seaborn')\n\n# 3. Data Loading\n\n# 4. Data Exploration\n\n# 5. Analysis\n\n# 6. Results\nDocument dependencies:\n# Generate requirements.txt\n!pip freeze > requirements.txt\n\n\n\n\n\nNever commit credentials:\n# Bad\napi_key = \"sk-abc123def456\"\n\n# Good - Use environment variables\nimport os\napi_key = os.environ.get('API_KEY')\nUse secrets management:\n# Store secrets in .env file\nfrom dotenv import load_dotenv\nload_dotenv()\n\n# Access secrets\nsecret = os.getenv('SECRET_KEY')\nBe careful with outputs:\n\nClear cells containing sensitive information\nReview notebooks before sharing\n\n\n\n\n\n\nVectorize operations:\n# Slow\nresults = []\nfor i in range(len(df)):\n results.append(df.iloc[i]['column'] * 2)\n\n# Fast\nresults = df['column'] * 2\nUse built-in functions:\n# Use pandas/numpy operations instead of loops\ndf['new_col'] = df['col1'] + df['col2'] # Vectorized\nProfile your code:\n%%time # Time entire cell\n\n%timeit function() # Time single line\n\n# Detailed profiling\n%load_ext line_profiler\n%lprun -f function_to_profile function_to_profile()\n\n\n\n\n\n\n\n\n\n\n\nCheck resources: Server might be full\nTry different kernel: Some kernels may be broken\nRestart server: Hub Control Panel β†’ Stop β†’ Start\n\n\n\n\n# Check if package is installed\nimport importlib\nif importlib.util.find_spec(\"package_name\") is None:\n !pip install package_name\n \n# Restart kernel after installation\nfrom IPython import get_ipython\nget_ipython().kernel.do_shutdown(True)\n\n\n\n\nClear unnecessary variables: del variable_name\nUse smaller data samples for testing\nRequest larger server instance\nProcess data in chunks\n\n\n\n\n\nCheck disk space: df -h in terminal\nCheck file permissions: ls -la notebook.ipynb\nSave with new name: File β†’ Save As\nDownload backup: File β†’ Download\n\n\n\n\n\nCheck internet connection\nTry different browser\nClear browser cache\nCheck if hub is under maintenance\n\n\n\n\n\n\nBuilt-in help:\nhelp(function_name)\nfunction_name? # Quick help\nfunction_name?? # Source code\nDocumentation:\n\nJupyterHub docs: https://jupyterhub.readthedocs.io\nJupyterLab docs: https://jupyterlab.readthedocs.io\n2i2c docs: https://docs.2i2c.org\n\nCommunity support:\n\nDiscourse forum\nGitHub issues\nStack Overflow with tags: jupyter, jupyterhub\n\n\n\n\n\n\n\n\n\nPress Esc to enter command mode\n\n\n\nShortcut\nAction\n\n\n\n\nEnter\nEnter edit mode\n\n\nA\nInsert cell above\n\n\nB\nInsert cell below\n\n\nD,D\nDelete cell\n\n\nY\nChange to code cell\n\n\nM\nChange to markdown cell\n\n\nShift+Up/Down\nSelect multiple cells\n\n\nShift+M\nMerge selected cells\n\n\nC\nCopy cell\n\n\nX\nCut cell\n\n\nV\nPaste cell below\n\n\nShift+V\nPaste cell above\n\n\nZ\nUndo cell deletion\n\n\n0,0\nRestart kernel\n\n\nI,I\nInterrupt kernel\n\n\n\n\n\n\nPress Enter to enter edit mode\n\n\n\nShortcut\nAction\n\n\n\n\nEsc\nEnter command mode\n\n\nCtrl+Enter\nRun cell\n\n\nShift+Enter\nRun cell, select below\n\n\nAlt+Enter\nRun cell, insert below\n\n\nCtrl+S\nSave notebook\n\n\nTab\nCode completion\n\n\nShift+Tab\nTooltip\n\n\nCtrl+]\nIndent\n\n\nCtrl+[\nDedent\n\n\nCtrl+A\nSelect all\n\n\nCtrl+Z\nUndo\n\n\nCtrl+Y\nRedo\n\n\n\n\n\n\n\n\n\nShortcut\nAction\n\n\n\n\nCtrl+Shift+C\nCommand palette\n\n\nCtrl+B\nToggle left sidebar\n\n\nCtrl+Shift+D\nToggle file browser\n\n\nCtrl+Shift+F\nFind and replace\n\n\nCtrl+Shift+[\nPrevious tab\n\n\nCtrl+Shift+]\nNext tab\n\n\nAlt+W\nClose tab\n\n\n\n\n\n\n\n\n\n\n\nJupyterHub Documentation: https://jupyterhub.readthedocs.io\nJupyterLab Documentation: https://jupyterlab.readthedocs.io\nJupyter Notebook Documentation: https://jupyter-notebook.readthedocs.io\n2i2c Infrastructure Guide: https://docs.2i2c.org\n\n\n\n\n\nJupyter Tutorial: https://jupyter.org/try\nReal Python Jupyter Guide: https://realpython.com/jupyter-notebook-introduction/\nDataCamp Jupyter Tutorial: https://www.datacamp.com/tutorial/tutorial-jupyter-notebook\nOfficial Jupyter Examples: https://github.com/jupyter/jupyter/wiki/Gallery-of-Jupyter-Notebooks\n\n\n\n\n\nNASA Disasters Program: https://disasters.nasa.gov\nUSGS Hazards Data: https://www.usgs.gov/natural-hazards\nNOAA Disaster Data: https://www.ncdc.noaa.gov/billions/\nCopernicus Emergency Management: https://emergency.copernicus.eu\n\n\n\n\n# Geospatial analysis\nimport geopandas as gpd\nimport rasterio\nimport xarray as xr\nimport folium\n\n# Data processing\nimport pandas as pd\nimport numpy as np\nimport dask.dataframe as dd\n\n# Visualization\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport plotly.express as px\n\n# Machine learning\nfrom sklearn import *\nimport tensorflow as tf\nimport torch\n\n# Earth observation\nimport ee # Google Earth Engine\nimport planetary_computer as pc\nimport pystac_client\n\n\n\nInstall JupyterLab extensions for enhanced functionality:\n# Variable inspector\njupyter labextension install @lckr/jupyterlab_variableinspector\n\n# Table of contents\njupyter labextension install @jupyterlab/toc\n\n# Git integration\npip install jupyterlab-git\n\n# Code formatter\npip install jupyterlab-code-formatter\n\n\n\n\nJupyter Discourse Forum: https://discourse.jupyter.org\nStack Overflow: https://stackoverflow.com/questions/tagged/jupyter\nGitHub Issues: https://github.com/jupyterhub/jupyterhub/issues\n2i2c Support: https://2i2c.org/support\nGitter Chat: https://gitter.im/jupyterhub/jupyterhub\n\n\n\n\n\nJupyterLab Cheat Sheet: https://www.datacamp.com/cheat-sheet/jupyterlab-cheat-sheet\nJupyter Shortcuts PDF: https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/\nMarkdown Guide: https://www.markdownguide.org/cheat-sheet/\n\n\n\n\n\n\nHere’s a complete example workflow for disaster analysis:\n# 1. Setup and Imports\nimport pandas as pd\nimport geopandas as gpd\nimport matplotlib.pyplot as plt\nimport folium\nfrom datetime import datetime, timedelta\nimport warnings\nwarnings.filterwarnings('ignore')\n\n# 2. Load Data\n# Earthquake data\nearthquakes = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.csv')\nearthquakes['time'] = pd.to_datetime(earthquakes['time'])\n\n# 3. Data Processing\n# Filter recent events\nrecent = earthquakes[earthquakes['time'] > datetime.now() - timedelta(days=7)]\n\n# Convert to GeoDataFrame\ngeometry = gpd.points_from_xy(recent.longitude, recent.latitude)\ngeo_df = gpd.GeoDataFrame(recent, geometry=geometry, crs='EPSG:4326')\n\n# 4. Analysis\nprint(f\"Total earthquakes in last 7 days: {len(recent)}\")\nprint(f\"Average magnitude: {recent['mag'].mean():.2f}\")\nprint(f\"Largest earthquake: {recent['mag'].max():.2f}\")\n\n# 5. Visualization\n# Static plot\nfig, ax = plt.subplots(figsize=(12, 8))\nworld = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))\nworld.plot(ax=ax, color='lightgray', edgecolor='black')\ngeo_df.plot(ax=ax, color='red', markersize=geo_df['mag']**2, alpha=0.6)\nplt.title('Recent Earthquakes (M4.5+)')\nplt.show()\n\n# Interactive map\nm = folium.Map(location=[0, 0], zoom_start=2)\nfor idx, row in geo_df.iterrows():\n folium.CircleMarker(\n location=[row['latitude'], row['longitude']],\n radius=row['mag']*2,\n popup=f\"M{row['mag']} - {row['place']}\",\n color='red',\n fill=True\n ).add_to(m)\nm.save('earthquake_map.html')\n\n# 6. Export Results\ngeo_df.to_csv('processed_earthquakes.csv', index=False)\nprint(\"Analysis complete! Results saved.\")\n\nLast Updated: 2024\nVersion: 1.0\nDisasters Hub Training Guide\nFor additional assistance, contact your hub administrator or visit the 2i2c support portal.", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#table-of-contents", - "href": "Jupyterhub/jupyterhub-training-guide.html#table-of-contents", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Introduction\nGetting Started\nJupyterHub Interface Overview\nWorking with Jupyter Notebooks\nData Management\nEnvironment and Package Management\nTerminal and Command Line Access\nCollaboration and Sharing\nResource Management\nBest Practices\nTroubleshooting\nKeyboard Shortcuts\nResources and Links", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#introduction", - "href": "Jupyterhub/jupyterhub-training-guide.html#introduction", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "JupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:\n\nAccess powerful computing resources through your web browser\nWrite and execute code in Python, R, Julia, and other languages\nVisualize data with interactive plots and charts\nCollaborate with team members on shared projects\nWork from anywhere without local setup requirements\n\n\n\n\nThe Disasters Hub (https://hub.disasters.2i2c.cloud/) is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:\n\nPre-configured environments for geospatial analysis\nAccess to disaster-related datasets\nCollaboration tools for response teams\nIntegration with cloud storage services\nScalable computing resources\n\n\n\n\nβœ… No Installation Required - Everything runs in your browser\nβœ… Pre-configured Environments - Common packages already installed\nβœ… Persistent Storage - Your work is saved between sessions\nβœ… Collaboration Ready - Share notebooks with team members\nβœ… Scalable Resources - Access to GPU and high-memory instances when needed", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#getting-started", - "href": "Jupyterhub/jupyterhub-training-guide.html#getting-started", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Navigate to the Hub\n\nOpen your web browser (Chrome, Firefox, Safari, or Edge recommended)\nGo to: https://hub.disasters.2i2c.cloud/\nBookmark this URL for easy access\n\nAuthentication\n\nYou’ll see a login screen with authentication options\nCommon authentication methods:\n\nGitHub: Use your GitHub credentials\nGoogle: Use your Google account\nInstitutional Login: Use your organization’s credentials\n\nSelect your authentication method and follow the prompts\n\nFirst-Time Login\n\nAccept terms of service if prompted\nYour home directory will be created automatically\nInitial setup may take 30-60 seconds\n\n\n\n\n\nAfter login, you may be presented with server options:\nServer Options:\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ β€’ Small (2 CPU, 4GB RAM) β”‚\nβ”‚ β€’ Medium (4 CPU, 8GB RAM) β”‚\nβ”‚ β€’ Large (8 CPU, 16GB RAM) β”‚\nβ”‚ β€’ GPU Instance (if available) β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\nTips for Server Selection: - Start with Small for basic notebook work - Use Medium for data processing tasks - Choose Large for machine learning or big data - Select GPU only when needed (limited availability)", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#jupyterhub-interface-overview", - "href": "Jupyterhub/jupyterhub-training-guide.html#jupyterhub-interface-overview", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Once logged in, you’ll see the JupyterLab interface:\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ [File] [Edit] [View] [Run] [Kernel] [Tabs] [Settings] β”‚\nβ”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€\nβ”‚ πŸ“ File Browser β”‚ Main Work Area | \nβ”‚ β”œβ”€β”€ πŸ“‚ data β”‚ β”‚\nβ”‚ β”œβ”€β”€ πŸ“‚ notebooksβ”‚ [Launcher Tab] β”‚\nβ”‚ β”œβ”€β”€ πŸ“‚ scripts β”‚ β€’ Notebook (Python 3) β”‚\nβ”‚ └── πŸ“„ README β”‚ β€’ Console β”‚\nβ”‚ β”‚ β€’ Terminal |\nβ”‚ [+] New β”‚ β€’ Text File β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n\n\n\n\nTop Menu Bar\n\nFile operations, editing, running code\nKernel management\nView options and settings\n\nLeft Sidebar\n\nFile Browser (πŸ“): Navigate and manage files\nRunning Terminals and Kernels (β–Ά): Monitor active sessions\nCommand Palette (πŸ”§): Access all commands\nExtension Manager (🧩): Add functionality\n\nMain Work Area\n\nMultiple tabs for notebooks, terminals, and files\nDrag tabs to rearrange or create split views\nRight-click tabs for additional options\n\nStatus Bar\n\nCurrent kernel status\nLine/column position\nFile encoding and type\n\n\n\n\n\n\nClick the Python 3 icon in the Launcher\nOr: File β†’ New β†’ Notebook\nSelect kernel (usually Python 3)\nRename your notebook: Right-click on β€œUntitled.ipynb” β†’ Rename", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#working-with-jupyter-notebooks", - "href": "Jupyterhub/jupyterhub-training-guide.html#working-with-jupyter-notebooks", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "A Jupyter notebook consists of cells that can contain: - Code: Executable Python (or other language) code - Markdown: Formatted text, equations, and images - Raw: Unformatted text\n\n\n\n\n\n\nRun current cell: Shift + Enter (run and move to next)\nRun current cell in place: Ctrl + Enter (stay in cell)\nRun all cells: Menu β†’ Run β†’ Run All Cells\n\n\n\n\n# Code Cell Example\nimport pandas as pd\nimport numpy as np\ndata = pd.read_csv('data.csv')\ndata.head()\n# Markdown Cell Example\n## Analysis Results\n- **Finding 1**: Data shows increasing trend\n- **Finding 2**: Correlation coefficient: 0.85\n\n$$E = mc^2$$ # LaTeX equation\n\n\n\n\nInsert cell above: A (in command mode)\nInsert cell below: B (in command mode)\nDelete cell: DD (press D twice in command mode)\nCopy cell: C (in command mode)\nPaste cell: V (in command mode)\nUndo deletion: Z (in command mode)\n\n\n\n\n\nThe kernel is the computational engine that executes your code.\n\n\n\nRestart kernel: Kernel β†’ Restart\nRestart and clear output: Kernel β†’ Restart & Clear Output\nRestart and run all: Kernel β†’ Restart & Run All\nInterrupt execution: Kernel β†’ Interrupt (or I,I in command mode)\nChange kernel: Kernel β†’ Change Kernel\n\n\n\n\n\nβ—‹: Kernel idle\n●: Kernel busy\n[*]: Cell currently executing\n[1]: Cell execution number\n\n\n\n\n\n\nUse meaningful cell divisions\n\nOne concept or operation per cell\nSeparate imports, data loading, processing, visualization\n\nDocument your work\n# Good practice: Add comments and markdown cells\n# Load disaster response data\ndf = pd.read_csv('disaster_data.csv')\n\n# Data preprocessing\ndf['date'] = pd.to_datetime(df['date'])\ndf = df.dropna()\nClear output before sharing\n\nKernel β†’ Restart & Clear Output\nReduces file size and removes sensitive output", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#data-management", - "href": "Jupyterhub/jupyterhub-training-guide.html#data-management", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Drag and drop files directly into the file browser\nUpload button: Click the ⬆ button in the file browser toolbar\nTerminal upload: Use wget or curl in terminal\nwget https://example.com/data.csv\ncurl -O https://example.com/data.zip\n\n\n\n\n\nRight-click file in browser β†’ Download\nFrom notebook:\nfrom IPython.display import FileLink\nFileLink('results.csv') # Creates downloadable link\n\n\n\n\n\n\n\nimport boto3\nimport pandas as pd\n\n# Read from S3\ndf = pd.read_csv('s3://bucket-name/path/to/file.csv')\n\n# Write to S3\ndf.to_csv('s3://bucket-name/output/results.csv', index=False)\n\n\n\n# Read from GCS\ndf = pd.read_csv('gs://bucket-name/path/to/file.csv')\n\n# Using gsutil in terminal\n!gsutil cp gs://bucket/file.csv ./data/\n\n\n\n\nRecommended directory structure:\nhome/\nβ”œβ”€β”€ data/\nβ”‚ β”œβ”€β”€ raw/ # Original, immutable data\nβ”‚ β”œβ”€β”€ processed/ # Cleaned, transformed data\nβ”‚ └── external/ # Data from external sources\nβ”œβ”€β”€ notebooks/\nβ”‚ β”œβ”€β”€ exploratory/ # Initial explorations\nβ”‚ β”œβ”€β”€ analysis/ # Detailed analysis\nβ”‚ └── reports/ # Final reports\nβ”œβ”€β”€ scripts/ # Reusable Python scripts\nβ”œβ”€β”€ results/ # Output files, figures\n└── requirements.txt # Package dependencies\n\n\n\n⚠️ Important: Your home directory is persistent, but understand the storage limits:\n\nHome directory: Usually 10-100 GB (persistent)\nShared data: Read-only datasets available to all users\nTemporary storage: /tmp cleared on restart\nBest practice: Store large datasets in cloud storage, not home directory", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#environment-and-package-management", - "href": "Jupyterhub/jupyterhub-training-guide.html#environment-and-package-management", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "# In a notebook cell\n!pip install package_name\n\n# Install specific version\n!pip install pandas==1.3.0\n\n# Install from requirements file\n!pip install -r requirements.txt\n\n# Install in user directory (if no write permissions)\n!pip install --user package_name\n\n\n\n# In a notebook cell\n!conda install -c conda-forge package_name -y\n\n# Install multiple packages\n!conda install numpy pandas matplotlib -y\n\n# Create new environment\n!conda create -n myenv python=3.9 -y\n!conda activate myenv # Note: Activation in notebooks is tricky\n\n\n\n\n\n\nimport sys\nprint(sys.executable) # Python interpreter path\nprint(sys.version) # Python version\n\n# List installed packages\n!pip list\n!conda list\n\n\n\n# In terminal\npython -m venv myproject\nsource myproject/bin/activate # Linux/Mac\npip install -r requirements.txt\n\n\n\n\n\nInstall IPython kernel:\npython -m ipykernel install --user --name mykernel --display-name \"My Kernel\"\nList available kernels:\njupyter kernelspec list\nRemove a kernel:\njupyter kernelspec uninstall mykernel", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#terminal-and-command-line-access", - "href": "Jupyterhub/jupyterhub-training-guide.html#terminal-and-command-line-access", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "From Launcher: Click β€œTerminal” icon\nFrom menu: File β†’ New β†’ Terminal\nKeyboard shortcut: (varies by setup)\n\n\n\n\n# Navigation\npwd # Print working directory\nls -la # List files with details\ncd ~/notebooks # Change directory\n\n# File operations\nmkdir project # Create directory\ncp file1.txt file2.txt # Copy file\nmv oldname newname # Move/rename\nrm file.txt # Delete file (careful!)\n\n# File viewing\ncat file.txt # Display file contents\nhead -n 10 data.csv # First 10 lines\ntail -n 10 log.txt # Last 10 lines\nless large_file.txt # Page through file\n\n# Process management\nps aux # List processes\ntop # Monitor resources\nkill -9 PID # Kill process\n\n# Git operations\ngit status\ngit add .\ngit commit -m \"message\"\ngit push\n\n\n\n# Count lines in file\nwc -l data.csv\n\n# View CSV structure\nhead -1 data.csv | tr ',' '\\n' | nl\n\n# Search in files\ngrep \"pattern\" file.txt\ngrep -r \"pattern\" ./directory\n\n# Compress/decompress\nzip archive.zip file1 file2\nunzip archive.zip\ntar -czf archive.tar.gz directory/\ntar -xzf archive.tar.gz", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#collaboration-and-sharing", - "href": "Jupyterhub/jupyterhub-training-guide.html#collaboration-and-sharing", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Download notebook: File β†’ Download as β†’ Notebook (.ipynb)\nShare via email, Slack, or file sharing service\nRecipient uploads to their JupyterHub\n\n\n\n\n# Initialize repository\ngit init\ngit add notebook.ipynb\ngit commit -m \"Add analysis notebook\"\ngit remote add origin https://github.com/user/repo.git\ngit push -u origin main\n\n\n\n\nHTML: File β†’ Export Notebook As β†’ HTML\nPDF: File β†’ Export Notebook As β†’ PDF (requires LaTeX)\nPython script: File β†’ Export Notebook As β†’ Python\nMarkdown: File β†’ Export Notebook As β†’ Markdown\n\n\n\n\n\nSome JupyterHub deployments support real-time collaboration:\n\nShare workspace link: Get shareable link from hub admin\nCollaborative editing: Multiple users can edit simultaneously\nSee collaborator cursors: Real-time cursor positions\nChat integration: Built-in chat for discussion\n\n\n\n\n\nClear outputs before committing:\njupyter nbconvert --clear-output notebook.ipynb\nUse .gitignore:\n.ipynb_checkpoints/\n__pycache__/\n*.pyc\n.DS_Store\ndata/ # Don't commit large data files\nNotebook diff tools:\n# Install nbdime for better notebook diffs\npip install nbdime\nnbdime config-git --enable", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#resource-management", - "href": "Jupyterhub/jupyterhub-training-guide.html#resource-management", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Your JupyterHub instance has resource limits:\n# Check available resources\nimport psutil\n\n# Memory\nmemory = psutil.virtual_memory()\nprint(f\"Total RAM: {memory.total / 1e9:.2f} GB\")\nprint(f\"Available: {memory.available / 1e9:.2f} GB\")\nprint(f\"Used: {memory.percent}%\")\n\n# CPU\nprint(f\"CPU cores: {psutil.cpu_count()}\")\nprint(f\"CPU usage: {psutil.cpu_percent()}%\")\n\n# Disk\ndisk = psutil.disk_usage('/')\nprint(f\"Disk space: {disk.total / 1e9:.2f} GB\")\nprint(f\"Disk used: {disk.percent}%\")\n\n\n\n\n\n\nInstall Resource Usage extension\nShows real-time memory and CPU usage in status bar\n\n\n\n\n# Real-time resource monitoring\ntop\nhtop # If installed\n\n# Memory usage\nfree -h\n\n# Disk usage\ndf -h\ndu -sh * # Directory sizes\n\n\n\n\n\nClear variables when done:\n# Clear specific variable\ndel large_dataframe\n\n# Clear all variables\n%reset -f\n\n# Garbage collection\nimport gc\ngc.collect()\nUse efficient data types:\n# Use categories for strings with few unique values\ndf['category'] = df['category'].astype('category')\n\n# Use smaller numeric types when possible\ndf['count'] = df['count'].astype('int32') # Instead of int64\nProcess data in chunks:\n# Read large CSV in chunks\nchunk_size = 10000\nfor chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):\n process_chunk(chunk)\n\n\n\n\nAlways shut down kernels and terminals when done:\n\nShutdown kernel: Kernel β†’ Shutdown\nClose terminals: Exit or Ctrl+D\nHub Control Panel: File β†’ Hub Control Panel β†’ Stop My Server\nLogout: File β†’ Log Out\n\n⚠️ Important: Idle servers may be automatically culled after a period of inactivity (usually 1-2 hours).", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#best-practices", - "href": "Jupyterhub/jupyterhub-training-guide.html#best-practices", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Use consistent naming:\n2024-01-15_earthquake_analysis.ipynb # Good\nuntitled1.ipynb # Bad\nCreate project templates:\n# notebook_template.ipynb\n\n# 1. Imports\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# 2. Configuration\npd.set_option('display.max_columns', None)\nplt.style.use('seaborn')\n\n# 3. Data Loading\n\n# 4. Data Exploration\n\n# 5. Analysis\n\n# 6. Results\nDocument dependencies:\n# Generate requirements.txt\n!pip freeze > requirements.txt\n\n\n\n\n\nNever commit credentials:\n# Bad\napi_key = \"sk-abc123def456\"\n\n# Good - Use environment variables\nimport os\napi_key = os.environ.get('API_KEY')\nUse secrets management:\n# Store secrets in .env file\nfrom dotenv import load_dotenv\nload_dotenv()\n\n# Access secrets\nsecret = os.getenv('SECRET_KEY')\nBe careful with outputs:\n\nClear cells containing sensitive information\nReview notebooks before sharing\n\n\n\n\n\n\nVectorize operations:\n# Slow\nresults = []\nfor i in range(len(df)):\n results.append(df.iloc[i]['column'] * 2)\n\n# Fast\nresults = df['column'] * 2\nUse built-in functions:\n# Use pandas/numpy operations instead of loops\ndf['new_col'] = df['col1'] + df['col2'] # Vectorized\nProfile your code:\n%%time # Time entire cell\n\n%timeit function() # Time single line\n\n# Detailed profiling\n%load_ext line_profiler\n%lprun -f function_to_profile function_to_profile()", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#troubleshooting", - "href": "Jupyterhub/jupyterhub-training-guide.html#troubleshooting", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Check resources: Server might be full\nTry different kernel: Some kernels may be broken\nRestart server: Hub Control Panel β†’ Stop β†’ Start\n\n\n\n\n# Check if package is installed\nimport importlib\nif importlib.util.find_spec(\"package_name\") is None:\n !pip install package_name\n \n# Restart kernel after installation\nfrom IPython import get_ipython\nget_ipython().kernel.do_shutdown(True)\n\n\n\n\nClear unnecessary variables: del variable_name\nUse smaller data samples for testing\nRequest larger server instance\nProcess data in chunks\n\n\n\n\n\nCheck disk space: df -h in terminal\nCheck file permissions: ls -la notebook.ipynb\nSave with new name: File β†’ Save As\nDownload backup: File β†’ Download\n\n\n\n\n\nCheck internet connection\nTry different browser\nClear browser cache\nCheck if hub is under maintenance\n\n\n\n\n\n\nBuilt-in help:\nhelp(function_name)\nfunction_name? # Quick help\nfunction_name?? # Source code\nDocumentation:\n\nJupyterHub docs: https://jupyterhub.readthedocs.io\nJupyterLab docs: https://jupyterlab.readthedocs.io\n2i2c docs: https://docs.2i2c.org\n\nCommunity support:\n\nDiscourse forum\nGitHub issues\nStack Overflow with tags: jupyter, jupyterhub", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#keyboard-shortcuts", - "href": "Jupyterhub/jupyterhub-training-guide.html#keyboard-shortcuts", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Press Esc to enter command mode\n\n\n\nShortcut\nAction\n\n\n\n\nEnter\nEnter edit mode\n\n\nA\nInsert cell above\n\n\nB\nInsert cell below\n\n\nD,D\nDelete cell\n\n\nY\nChange to code cell\n\n\nM\nChange to markdown cell\n\n\nShift+Up/Down\nSelect multiple cells\n\n\nShift+M\nMerge selected cells\n\n\nC\nCopy cell\n\n\nX\nCut cell\n\n\nV\nPaste cell below\n\n\nShift+V\nPaste cell above\n\n\nZ\nUndo cell deletion\n\n\n0,0\nRestart kernel\n\n\nI,I\nInterrupt kernel\n\n\n\n\n\n\nPress Enter to enter edit mode\n\n\n\nShortcut\nAction\n\n\n\n\nEsc\nEnter command mode\n\n\nCtrl+Enter\nRun cell\n\n\nShift+Enter\nRun cell, select below\n\n\nAlt+Enter\nRun cell, insert below\n\n\nCtrl+S\nSave notebook\n\n\nTab\nCode completion\n\n\nShift+Tab\nTooltip\n\n\nCtrl+]\nIndent\n\n\nCtrl+[\nDedent\n\n\nCtrl+A\nSelect all\n\n\nCtrl+Z\nUndo\n\n\nCtrl+Y\nRedo\n\n\n\n\n\n\n\n\n\nShortcut\nAction\n\n\n\n\nCtrl+Shift+C\nCommand palette\n\n\nCtrl+B\nToggle left sidebar\n\n\nCtrl+Shift+D\nToggle file browser\n\n\nCtrl+Shift+F\nFind and replace\n\n\nCtrl+Shift+[\nPrevious tab\n\n\nCtrl+Shift+]\nNext tab\n\n\nAlt+W\nClose tab", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#resources-and-links", - "href": "Jupyterhub/jupyterhub-training-guide.html#resources-and-links", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "JupyterHub Documentation: https://jupyterhub.readthedocs.io\nJupyterLab Documentation: https://jupyterlab.readthedocs.io\nJupyter Notebook Documentation: https://jupyter-notebook.readthedocs.io\n2i2c Infrastructure Guide: https://docs.2i2c.org\n\n\n\n\n\nJupyter Tutorial: https://jupyter.org/try\nReal Python Jupyter Guide: https://realpython.com/jupyter-notebook-introduction/\nDataCamp Jupyter Tutorial: https://www.datacamp.com/tutorial/tutorial-jupyter-notebook\nOfficial Jupyter Examples: https://github.com/jupyter/jupyter/wiki/Gallery-of-Jupyter-Notebooks\n\n\n\n\n\nNASA Disasters Program: https://disasters.nasa.gov\nUSGS Hazards Data: https://www.usgs.gov/natural-hazards\nNOAA Disaster Data: https://www.ncdc.noaa.gov/billions/\nCopernicus Emergency Management: https://emergency.copernicus.eu\n\n\n\n\n# Geospatial analysis\nimport geopandas as gpd\nimport rasterio\nimport xarray as xr\nimport folium\n\n# Data processing\nimport pandas as pd\nimport numpy as np\nimport dask.dataframe as dd\n\n# Visualization\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport plotly.express as px\n\n# Machine learning\nfrom sklearn import *\nimport tensorflow as tf\nimport torch\n\n# Earth observation\nimport ee # Google Earth Engine\nimport planetary_computer as pc\nimport pystac_client\n\n\n\nInstall JupyterLab extensions for enhanced functionality:\n# Variable inspector\njupyter labextension install @lckr/jupyterlab_variableinspector\n\n# Table of contents\njupyter labextension install @jupyterlab/toc\n\n# Git integration\npip install jupyterlab-git\n\n# Code formatter\npip install jupyterlab-code-formatter\n\n\n\n\nJupyter Discourse Forum: https://discourse.jupyter.org\nStack Overflow: https://stackoverflow.com/questions/tagged/jupyter\nGitHub Issues: https://github.com/jupyterhub/jupyterhub/issues\n2i2c Support: https://2i2c.org/support\nGitter Chat: https://gitter.im/jupyterhub/jupyterhub\n\n\n\n\n\nJupyterLab Cheat Sheet: https://www.datacamp.com/cheat-sheet/jupyterlab-cheat-sheet\nJupyter Shortcuts PDF: https://www.cheatography.com/weidadeyue/cheat-sheets/jupyter-notebook/\nMarkdown Guide: https://www.markdownguide.org/cheat-sheet/", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "Jupyterhub/jupyterhub-training-guide.html#appendix-sample-workflow", - "href": "Jupyterhub/jupyterhub-training-guide.html#appendix-sample-workflow", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "Here’s a complete example workflow for disaster analysis:\n# 1. Setup and Imports\nimport pandas as pd\nimport geopandas as gpd\nimport matplotlib.pyplot as plt\nimport folium\nfrom datetime import datetime, timedelta\nimport warnings\nwarnings.filterwarnings('ignore')\n\n# 2. Load Data\n# Earthquake data\nearthquakes = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_month.csv')\nearthquakes['time'] = pd.to_datetime(earthquakes['time'])\n\n# 3. Data Processing\n# Filter recent events\nrecent = earthquakes[earthquakes['time'] > datetime.now() - timedelta(days=7)]\n\n# Convert to GeoDataFrame\ngeometry = gpd.points_from_xy(recent.longitude, recent.latitude)\ngeo_df = gpd.GeoDataFrame(recent, geometry=geometry, crs='EPSG:4326')\n\n# 4. Analysis\nprint(f\"Total earthquakes in last 7 days: {len(recent)}\")\nprint(f\"Average magnitude: {recent['mag'].mean():.2f}\")\nprint(f\"Largest earthquake: {recent['mag'].max():.2f}\")\n\n# 5. Visualization\n# Static plot\nfig, ax = plt.subplots(figsize=(12, 8))\nworld = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))\nworld.plot(ax=ax, color='lightgray', edgecolor='black')\ngeo_df.plot(ax=ax, color='red', markersize=geo_df['mag']**2, alpha=0.6)\nplt.title('Recent Earthquakes (M4.5+)')\nplt.show()\n\n# Interactive map\nm = folium.Map(location=[0, 0], zoom_start=2)\nfor idx, row in geo_df.iterrows():\n folium.CircleMarker(\n location=[row['latitude'], row['longitude']],\n radius=row['mag']*2,\n popup=f\"M{row['mag']} - {row['place']}\",\n color='red',\n fill=True\n ).add_to(m)\nm.save('earthquake_map.html')\n\n# 6. Export Results\ngeo_df.to_csv('processed_earthquakes.csv', index=False)\nprint(\"Analysis complete! Results saved.\")\n\nLast Updated: 2024\nVersion: 1.0\nDisasters Hub Training Guide\nFor additional assistance, contact your hub administrator or visit the 2i2c support portal.", - "crumbs": [ - "JupyterHub", - "JupyterHub Training Guide - Disasters Hub" - ] - }, - { - "objectID": "GitHub/setup.html", - "href": "GitHub/setup.html", - "title": "GitHub Setup and Installation", - "section": "", - "text": "Prerequisites & System Setup\nGit Installation\nGitHub Account Setup\nGitHub CLI Installation & Authentication\n\n\n\n\n\n\n\n\nmacOS 10.15 (Catalina) or later\nAdministrator access to install software\nInternet connection\nTerminal application (built into macOS)\n\n\n\n\n\nText Editor: VS Code, Sublime Text, or vim\nTerminal: iTerm2 or built-in Terminal app\nGit GUI (optional): SourceTree, GitHub Desktop, or GitKraken\n\n\n\n\n\n\n\n\n# Install Homebrew if not already installed\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n\n# Install Git\nbrew install git\n\n# Verify installation\ngit --version\n\n\n\n# This will prompt to install Xcode Command Line Tools\ngit --version\n\n# Follow the prompts to complete installation\n\n\n\n\nVisit https://git-scm.com/download/mac\nDownload the installer\nRun the installer package\nVerify: git --version\n\n\n\n\n# Set your name (visible in commits)\ngit config --global user.name \"Your Name\"\n\n# Set your email (should match GitHub account)\ngit config --global user.email \"your.email@example.com\"\n\n# Set default branch name to 'main'\ngit config --global init.defaultBranch main\n\n# Set default editor (optional)\ngit config --global core.editor \"code --wait\" # For VS Code\n# git config --global core.editor \"vim\" # For vim\n# git config --global core.editor \"nano\" # For nano\n\n# Enable color output\ngit config --global color.ui auto\n\n# View all settings\ngit config --list\n\n\n\n\n\n\n\n\nVisit https://github.com\nClick β€œSign up” in the top right\nEnter your details:\n\nUsername: Choose wisely - this is permanent and public\nEmail: Use a professional email address\nPassword: Use a strong, unique password\n\nVerify your email address\nComplete the profile setup\n\n\n\n\n\nEnable Two-Factor Authentication (2FA):\n\nGo to Settings β†’ Security\nClick β€œEnable two-factor authentication”\nUse an authenticator app (Google Authenticator, Authy)\nSave backup codes securely\n\nAdd SSH Key (recommended for secure authentication):\n\n# Generate SSH key\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n\n# Press Enter for default location\n# Set a passphrase (recommended)\n\n# Start SSH agent\neval \"$(ssh-agent -s)\"\n\n# Add SSH key to agent\nssh-add ~/.ssh/id_ed25519\n\n# Copy public key to clipboard\npbcopy < ~/.ssh/id_ed25519.pub\n\nAdd SSH Key to GitHub:\n\nGo to Settings β†’ SSH and GPG keys\nClick β€œNew SSH key”\nPaste your key and give it a descriptive title\nClick β€œAdd SSH key”\n\nTest SSH connection:\n\nssh -T git@github.com\n# You should see: \"Hi username! You've successfully authenticated...\"\n\n\n\n\nGo to Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic)\nClick β€œGenerate new token”\nSet expiration and select scopes (at minimum: repo, workflow)\nCopy the token immediately (you won’t see it again)\nUse this token as your password when prompted by Git\n\n\n\n\n\n\n\n\n# Install via Homebrew\nbrew install gh\n\n# Verify installation\ngh --version\n\n\n\n# Start authentication process\ngh auth login\n\n# Follow the prompts:\n# 1. Choose GitHub.com\n# 2. Choose HTTPS or SSH (SSH recommended if you've set it up)\n# 3. Authenticate via web browser or paste authentication token\n# 4. Choose default git protocol (ssh recommended)\n\n# Verify authentication\ngh auth status\n\n\n\n# Set default editor\ngh config set editor \"code --wait\" # For VS Code\n\n# Set default browser\ngh config set browser safari\n\n# View current configuration\ngh config list", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/commands.html", - "href": "GitHub/commands.html", - "title": "Basic Uses", - "section": "", - "text": "Setting Up Your First Repository\nEssential Git Commands\nGitHub CLI Essentials\nCommon Workflows\nBest Practices\nTroubleshooting\n\n\n\n\n\n\n\n# Using HTTPS\ngit clone https://github.com/username/repository.git\n\n# Using SSH (recommended if configured)\ngit clone git@github.com:username/repository.git\n\n# Using GitHub CLI\ngh repo clone username/repository\n\n# Clone into specific directory\ngit clone git@github.com:username/repository.git my-project\n\n\n\n\n\n\nClick the β€œ+” icon β†’ β€œNew repository”\nEnter repository name\nAdd description (optional)\nChoose public or private\nInitialize with README (recommended)\nAdd .gitignore (select template)\nChoose a license\nClick β€œCreate repository”\n\n\n\n\n# Create a new repository on GitHub\ngh repo create my-project --public --clone\n\n# With more options\ngh repo create my-project \\\n --public \\\n --description \"My awesome project\" \\\n --clone \\\n --add-readme \\\n --license mit \\\n --gitignore Python\n\n\n\n\n# Navigate to your project\ncd my-existing-project\n\n# Initialize git repository\ngit init\n\n# Add all files\ngit add .\n\n# Create initial commit\ngit commit -m \"Initial commit\"\n\n# Create repository on GitHub\ngh repo create my-project --source=. --public --push\n\n# Or manually add remote and push\ngit remote add origin git@github.com:username/my-project.git\ngit branch -M main\ngit push -u origin main\n\n\n\n\n\n\n\n# Check Git version\ngit --version\n\n# Get help\ngit help <command>\ngit <command> --help\n\n# Initialize repository\ngit init\n\n# Clone repository\ngit clone <url>\n\n# Check status\ngit status\n\n# View commit history\ngit log\ngit log --oneline\ngit log --graph --oneline --all\n\n\n\n# Add files to staging area\ngit add <file>\ngit add . # Add all files\ngit add *.js # Add all JavaScript files\ngit add -p # Interactive staging\n\n# Remove files from staging\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Commit changes\ngit commit -m \"Commit message\"\ngit commit -am \"Message\" # Add and commit (tracked files only)\ngit commit --amend # Amend last commit\n\n# View differences\ngit diff # Unstaged changes\ngit diff --staged # Staged changes\ngit diff HEAD~1 # Changes since last commit\n\n\n\n# List branches\ngit branch # Local branches\ngit branch -r # Remote branches\ngit branch -a # All branches\n\n# Create branch\ngit branch <branch-name>\ngit checkout -b <branch-name> # Create and switch\ngit switch -c <branch-name> # Git 2.23+ (create and switch)\n\n# Switch branches\ngit checkout <branch-name>\ngit switch <branch-name> # Git 2.23+\n\n# Merge branch\ngit merge <branch-name>\n\n# Delete branch\ngit branch -d <branch-name> # Safe delete\ngit branch -D <branch-name> # Force delete\n\n# Rename branch\ngit branch -m <old-name> <new-name>\n\n\n\n# View remotes\ngit remote -v\n\n# Add remote\ngit remote add <name> <url>\ngit remote add origin git@github.com:username/repo.git\n\n# Remove remote\ngit remote remove <name>\n\n# Rename remote\ngit remote rename <old> <new>\n\n# Fetch changes\ngit fetch\ngit fetch origin\n\n# Pull changes\ngit pull\ngit pull origin main\n\n# Push changes\ngit push\ngit push origin main\ngit push -u origin main # Set upstream\ngit push --force # Force push (use with caution!)\n\n\n\n# Save changes temporarily\ngit stash\ngit stash save \"Work in progress\"\n\n# List stashes\ngit stash list\n\n# Apply stash\ngit stash apply # Apply most recent\ngit stash apply stash@{0} # Apply specific stash\n\n# Apply and remove stash\ngit stash pop\n\n# Remove stash\ngit stash drop stash@{0}\n\n# Clear all stashes\ngit stash clear\n\n\n\n# Discard changes in working directory\ngit checkout -- <file>\ngit restore <file> # Git 2.23+\n\n# Unstage files\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Reset to previous commit (keeping changes)\ngit reset --soft HEAD~1\n\n# Reset to previous commit (discard changes)\ngit reset --hard HEAD~1\n\n# Revert a commit (creates new commit)\ngit revert <commit-hash>\n\n\n\n# List tags\ngit tag\n\n# Create tag\ngit tag v1.0.0\ngit tag -a v1.0.0 -m \"Version 1.0.0\" # Annotated tag\n\n# Push tags\ngit push origin v1.0.0\ngit push origin --tags # Push all tags\n\n# Delete tag\ngit tag -d v1.0.0 # Local\ngit push origin :v1.0.0 # Remote\n\n\n\n\n\n\n\n# Set default repository\ngh repo set-default\n# Select from list or specify:\ngh repo set-default owner/repo\n\n# View repository\ngh repo view\ngh repo view owner/repo\n\n# Fork repository\ngh repo fork owner/repo\n\n# Create repository\ngh repo create my-repo --public --clone\n\n# Delete repository (use with caution!)\ngh repo delete owner/repo\n\n# Clone repository\ngh repo clone owner/repo\n\n# List repositories\ngh repo list\ngh repo list owner\n\n\n\n# Create pull request\ngh pr create\ngh pr create --title \"Feature X\" --body \"Description\"\ngh pr create --fill # Use commit messages for title/body\ngh pr create --draft # Create as draft\ngh pr create --assignee @me --label bug,enhancement\n\n# List pull requests\ngh pr list\ngh pr list --state all\ngh pr list --author @me\n\n# View pull request\ngh pr view\ngh pr view 123\n\n# Checkout pull request\ngh pr checkout 123\n\n# Merge pull request\ngh pr merge 123\ngh pr merge 123 --merge # Create merge commit\ngh pr merge 123 --rebase # Rebase and merge\ngh pr merge 123 --squash # Squash and merge\n\n# Close pull request\ngh pr close 123\n\n# Review pull request\ngh pr review 123 --approve\ngh pr review 123 --request-changes\ngh pr review 123 --comment\n\n# Check pull request status\ngh pr status\ngh pr checks 123\n\n\n\n# Create issue\ngh issue create\ngh issue create --title \"Bug report\" --body \"Description\"\n\n# List issues\ngh issue list\ngh issue list --assignee @me\ngh issue list --label bug\n\n# View issue\ngh issue view 123\n\n# Close issue\ngh issue close 123\n\n# Reopen issue\ngh issue reopen 123\n\n# Comment on issue\ngh issue comment 123 --body \"This is fixed\"\n\n\n\n# List workflows\ngh workflow list\n\n# View workflow runs\ngh run list\ngh run view\n\n# Watch workflow run\ngh run watch\n\n# Download artifacts\ngh run download\n\n# Trigger workflow\ngh workflow run <workflow-name>\n\n\n\n# Create gist\ngh gist create file.txt\ngh gist create --public file.txt\n\n# List gists\ngh gist list\n\n# View gist\ngh gist view <id>\n\n# Edit gist\ngh gist edit <id>\n\n\n\n\n\n\n\n# 1. Start your day - sync with remote\ngit pull origin main\n\n# 2. Create feature branch\ngit checkout -b feature/new-feature\n\n# 3. Make changes and commit\ngit add .\ngit commit -m \"Add new feature\"\n\n# 4. Push to remote\ngit push -u origin feature/new-feature\n\n# 5. Create pull request\ngh pr create --fill\n\n# 6. After PR is merged, clean up\ngit checkout main\ngit pull origin main\ngit branch -d feature/new-feature\n\n\n\n# 1. Pull latest changes\ngit pull origin main\n\n# 2. If conflicts occur, Git will notify you\n# 3. Open conflicted files and resolve manually\n# Look for conflict markers:\n# <<<<<<< HEAD\n# Your changes\n# =======\n# Their changes\n# >>>>>>> branch-name\n\n# 4. After resolving, add the files\ngit add <resolved-files>\n\n# 5. Complete the merge\ngit commit -m \"Resolve merge conflicts\"\n\n# 6. Push changes\ngit push origin <branch>\n\n\n\n# 1. Add upstream remote (one time)\ngit remote add upstream https://github.com/original-owner/repo.git\n\n# 2. Fetch upstream changes\ngit fetch upstream\n\n# 3. Checkout main branch\ngit checkout main\n\n# 4. Merge upstream changes\ngit merge upstream/main\n\n# 5. Push to your fork\ngit push origin main\n\n# Using GitHub CLI\ngh repo sync owner/repo -b main\n\n\n\n# Interactive rebase for last 3 commits\ngit rebase -i HEAD~3\n\n# In the editor:\n# Change 'pick' to 'squash' for commits to combine\n# Save and close\n\n# Force push (if already pushed)\ngit push --force-with-lease origin <branch>\n\n\n\n# Apply specific commit to current branch\ngit cherry-pick <commit-hash>\n\n# Cherry-pick multiple commits\ngit cherry-pick <hash1> <hash2> <hash3>\n\n# Cherry-pick range\ngit cherry-pick <oldest-hash>^..<newest-hash>\n\n\n\n\n\n\n\nThe Seven Rules of Great Commit Messages:\n\nSeparate subject from body with blank line\nLimit subject line to 50 characters\nCapitalize the subject line\nDon’t end subject line with period\nUse imperative mood (β€œAdd feature” not β€œAdded feature”)\nWrap body at 72 characters\nExplain what and why, not how\n\nExample:\nAdd user authentication feature\n\nImplement OAuth 2.0 authentication using GitHub as provider.\nThis allows users to sign in with their GitHub credentials\ninstead of creating separate accounts.\n\nResolves: #123\nSee also: #456, #789\n\n\n\nfeature/add-login-page\nbugfix/fix-navigation-menu\nhotfix/security-patch\nrelease/v2.0.0\ndocs/update-readme\ntest/add-unit-tests\nrefactor/optimize-database\n\n\n\nCreate a .gitignore file in your repository root:\n# macOS\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# Dependencies\nnode_modules/\nvendor/\n.env\n\n# Build outputs\ndist/\nbuild/\n*.log\n\n# Sensitive data\n*.pem\n*.key\n.env.local\nconfig/secrets.yml\n\n\n\n\nNever commit sensitive data:\n\nPasswords, API keys, tokens\nPrivate keys or certificates\nDatabase credentials\n.env files with secrets\n\nIf you accidentally commit secrets:\n# Remove from history (requires force push)\ngit filter-branch --force --index-filter \\\n \"git rm --cached --ignore-unmatch path/to/file\" \\\n --prune-empty --tag-name-filter cat -- --all\n\n# Or use BFG Repo-Cleaner (easier)\nbrew install bfg\nbfg --delete-files file-with-secrets.txt\nUse GitHub’s security features:\n\nEnable Dependabot alerts\nEnable secret scanning\nUse protected branches\nRequire PR reviews\n\n\n\n\n\n\nAlways work in branches - Never commit directly to main\nKeep PRs small - Easier to review and less likely to have conflicts\nWrite descriptive PR descriptions - Include what, why, and how\nReview others’ code - Learn and help maintain quality\nUpdate documentation - Keep README and docs current\nTest before pushing - Run tests locally first\nCommunicate - Use issues and PR comments effectively\n\n\n\n\n\n\n\n\n\n\n# Check SSH key is added\nssh-add -l\n\n# Add SSH key\nssh-add ~/.ssh/id_ed25519\n\n# Test connection\nssh -T git@github.com\n\n\n\n# Pull first, then push\ngit pull origin main --rebase\ngit push origin main\n\n# Or force push (careful!)\ngit push --force-with-lease\n\n\n\n# Create new branch with current commits\ngit branch new-branch\n\n# Reset original branch\ngit reset --hard HEAD~3 # Go back 3 commits\n\n# Switch to new branch\ngit checkout new-branch\n\n\n\n# Keep changes, undo commit\ngit reset --soft HEAD~1\n\n# Discard changes completely\ngit reset --hard HEAD~1\n\n\n\n# Install Git LFS\nbrew install git-lfs\ngit lfs install\n\n# Track large files\ngit lfs track \"*.psd\"\ngit add .gitattributes\ngit add large-file.psd\ngit commit -m \"Add large file with LFS\"\n\n\n\n# Update your branch\ngit checkout main\ngit pull origin main\ngit checkout your-branch\ngit rebase main\n\n# Resolve conflicts, then\ngit add .\ngit rebase --continue\ngit push --force-with-lease\n\n\n\n\n\n\n\n\n[alias]\n st = status\n co = checkout\n ci = commit\n br = branch\n df = diff\n lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit\n last = log -1 HEAD\n unstage = reset HEAD --\n amend = commit --amend\n branches = branch -a\n remotes = remote -v\n contributors = shortlog --summary --numbered\n\n\n\n\nCmd + Shift + P β†’ Git commands\nCtrl + Shift + G β†’ Source control panel\nCmd + Enter β†’ Commit staged changes\nOption + Cmd + Enter β†’ Commit all changes\n\n\n\n\n# Git shortcuts\nalias g='git'\nalias gs='git status'\nalias ga='git add'\nalias gc='git commit -m'\nalias gp='git push'\nalias gpl='git pull'\nalias gco='git checkout'\nalias gb='git branch'\nalias glog='git log --oneline --graph --all'\n\n# GitHub CLI shortcuts\nalias ghr='gh repo'\nalias ghpr='gh pr'\nalias ghi='gh issue'", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/resources.html", - "href": "GitHub/resources.html", - "title": "NASA Disasters Documentation", - "section": "", - "text": "Git Documentation: https://git-scm.com/doc\nGitHub Docs: https://docs.github.com\nGitHub CLI Manual: https://cli.github.com/manual\nGitHub Learning Lab: https://lab.github.com\n\n\n\n\n\nLearn Git Branching: https://learngitbranching.js.org\nGitHub Skills: https://skills.github.com\nAtlassian Git Tutorial: https://www.atlassian.com/git/tutorials\nOh My Git! (Game): https://ohmygit.org\n\n\n\n\n\nGitHub Git Cheat Sheet: https://education.github.com/git-cheat-sheet-education.pdf\nInteractive Git Cheat Sheet: https://ndpsoftware.com/git-cheatsheet.html\nGitHub CLI Cheat Sheet: https://github.com/cli/cli#commands\n\n\n\n\n\nPro Git Book (Free): https://git-scm.com/book\nGit Flow: https://nvie.com/posts/a-successful-git-branching-model\nConventional Commits: https://www.conventionalcommits.org\nSemantic Versioning: https://semver.org\n\n\n\n\n\nGitHub Desktop: https://desktop.github.com\nSourceTree: https://www.sourcetreeapp.com\nGitKraken: https://www.gitkraken.com\nTower: https://www.git-tower.com\n\n\n\n\n\nGitLens: Enhanced Git capabilities\nGit Graph: Visualize branch structure\nGitHub Pull Requests: Manage PRs from VS Code\nGit History: View and search git log\n\n\n\n\n\nGitHub Status: https://www.githubstatus.com\nStack Overflow Git Tag: https://stackoverflow.com/questions/tagged/git\nGitHub Community Forum: https://github.community\n\n\n\n\n\nGitHub YouTube: https://youtube.com/github\nThe Net Ninja Git Tutorial: Comprehensive video series\nTraversy Media Git Crash Course: Quick overview\n\n\n\n\n\nGitHub Flavored Markdown: https://github.github.com/gfm\nMarkdown Guide: https://www.markdownguide.org\nShields.io (Badges): https://shields.io", - "crumbs": [ - "GitHub", - "Resources & Links" - ] - }, - { - "objectID": "GitHub/setup.html#table-of-contents", - "href": "GitHub/setup.html#table-of-contents", - "title": "GitHub Setup and Installation", - "section": "", - "text": "Prerequisites & System Setup\nGit Installation\nGitHub Account Setup\nGitHub CLI Installation & Authentication", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/setup.html#prerequisites-system-setup", - "href": "GitHub/setup.html#prerequisites-system-setup", - "title": "GitHub Setup and Installation", - "section": "", - "text": "macOS 10.15 (Catalina) or later\nAdministrator access to install software\nInternet connection\nTerminal application (built into macOS)\n\n\n\n\n\nText Editor: VS Code, Sublime Text, or vim\nTerminal: iTerm2 or built-in Terminal app\nGit GUI (optional): SourceTree, GitHub Desktop, or GitKraken", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/setup.html#git-installation", - "href": "GitHub/setup.html#git-installation", - "title": "GitHub Setup and Installation", - "section": "", - "text": "# Install Homebrew if not already installed\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n\n# Install Git\nbrew install git\n\n# Verify installation\ngit --version\n\n\n\n# This will prompt to install Xcode Command Line Tools\ngit --version\n\n# Follow the prompts to complete installation\n\n\n\n\nVisit https://git-scm.com/download/mac\nDownload the installer\nRun the installer package\nVerify: git --version\n\n\n\n\n# Set your name (visible in commits)\ngit config --global user.name \"Your Name\"\n\n# Set your email (should match GitHub account)\ngit config --global user.email \"your.email@example.com\"\n\n# Set default branch name to 'main'\ngit config --global init.defaultBranch main\n\n# Set default editor (optional)\ngit config --global core.editor \"code --wait\" # For VS Code\n# git config --global core.editor \"vim\" # For vim\n# git config --global core.editor \"nano\" # For nano\n\n# Enable color output\ngit config --global color.ui auto\n\n# View all settings\ngit config --list", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/setup.html#github-account-setup", - "href": "GitHub/setup.html#github-account-setup", - "title": "GitHub Setup and Installation", - "section": "", - "text": "Visit https://github.com\nClick β€œSign up” in the top right\nEnter your details:\n\nUsername: Choose wisely - this is permanent and public\nEmail: Use a professional email address\nPassword: Use a strong, unique password\n\nVerify your email address\nComplete the profile setup\n\n\n\n\n\nEnable Two-Factor Authentication (2FA):\n\nGo to Settings β†’ Security\nClick β€œEnable two-factor authentication”\nUse an authenticator app (Google Authenticator, Authy)\nSave backup codes securely\n\nAdd SSH Key (recommended for secure authentication):\n\n# Generate SSH key\nssh-keygen -t ed25519 -C \"your.email@example.com\"\n\n# Press Enter for default location\n# Set a passphrase (recommended)\n\n# Start SSH agent\neval \"$(ssh-agent -s)\"\n\n# Add SSH key to agent\nssh-add ~/.ssh/id_ed25519\n\n# Copy public key to clipboard\npbcopy < ~/.ssh/id_ed25519.pub\n\nAdd SSH Key to GitHub:\n\nGo to Settings β†’ SSH and GPG keys\nClick β€œNew SSH key”\nPaste your key and give it a descriptive title\nClick β€œAdd SSH key”\n\nTest SSH connection:\n\nssh -T git@github.com\n# You should see: \"Hi username! You've successfully authenticated...\"\n\n\n\n\nGo to Settings β†’ Developer settings β†’ Personal access tokens β†’ Tokens (classic)\nClick β€œGenerate new token”\nSet expiration and select scopes (at minimum: repo, workflow)\nCopy the token immediately (you won’t see it again)\nUse this token as your password when prompted by Git", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/setup.html#github-cli-installation-authentication", - "href": "GitHub/setup.html#github-cli-installation-authentication", - "title": "GitHub Setup and Installation", - "section": "", - "text": "# Install via Homebrew\nbrew install gh\n\n# Verify installation\ngh --version\n\n\n\n# Start authentication process\ngh auth login\n\n# Follow the prompts:\n# 1. Choose GitHub.com\n# 2. Choose HTTPS or SSH (SSH recommended if you've set it up)\n# 3. Authenticate via web browser or paste authentication token\n# 4. Choose default git protocol (ssh recommended)\n\n# Verify authentication\ngh auth status\n\n\n\n# Set default editor\ngh config set editor \"code --wait\" # For VS Code\n\n# Set default browser\ngh config set browser safari\n\n# View current configuration\ngh config list", - "crumbs": [ - "GitHub", - "GitHub Setup and Installation" - ] - }, - { - "objectID": "GitHub/commands.html#table-of-contents", - "href": "GitHub/commands.html#table-of-contents", - "title": "Basic Uses", - "section": "", - "text": "Setting Up Your First Repository\nEssential Git Commands\nGitHub CLI Essentials\nCommon Workflows\nBest Practices\nTroubleshooting", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#setting-up-your-first-repository", - "href": "GitHub/commands.html#setting-up-your-first-repository", - "title": "Basic Uses", - "section": "", - "text": "# Using HTTPS\ngit clone https://github.com/username/repository.git\n\n# Using SSH (recommended if configured)\ngit clone git@github.com:username/repository.git\n\n# Using GitHub CLI\ngh repo clone username/repository\n\n# Clone into specific directory\ngit clone git@github.com:username/repository.git my-project\n\n\n\n\n\n\nClick the β€œ+” icon β†’ β€œNew repository”\nEnter repository name\nAdd description (optional)\nChoose public or private\nInitialize with README (recommended)\nAdd .gitignore (select template)\nChoose a license\nClick β€œCreate repository”\n\n\n\n\n# Create a new repository on GitHub\ngh repo create my-project --public --clone\n\n# With more options\ngh repo create my-project \\\n --public \\\n --description \"My awesome project\" \\\n --clone \\\n --add-readme \\\n --license mit \\\n --gitignore Python\n\n\n\n\n# Navigate to your project\ncd my-existing-project\n\n# Initialize git repository\ngit init\n\n# Add all files\ngit add .\n\n# Create initial commit\ngit commit -m \"Initial commit\"\n\n# Create repository on GitHub\ngh repo create my-project --source=. --public --push\n\n# Or manually add remote and push\ngit remote add origin git@github.com:username/my-project.git\ngit branch -M main\ngit push -u origin main", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#essential-git-commands", - "href": "GitHub/commands.html#essential-git-commands", - "title": "Basic Uses", - "section": "", - "text": "# Check Git version\ngit --version\n\n# Get help\ngit help <command>\ngit <command> --help\n\n# Initialize repository\ngit init\n\n# Clone repository\ngit clone <url>\n\n# Check status\ngit status\n\n# View commit history\ngit log\ngit log --oneline\ngit log --graph --oneline --all\n\n\n\n# Add files to staging area\ngit add <file>\ngit add . # Add all files\ngit add *.js # Add all JavaScript files\ngit add -p # Interactive staging\n\n# Remove files from staging\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Commit changes\ngit commit -m \"Commit message\"\ngit commit -am \"Message\" # Add and commit (tracked files only)\ngit commit --amend # Amend last commit\n\n# View differences\ngit diff # Unstaged changes\ngit diff --staged # Staged changes\ngit diff HEAD~1 # Changes since last commit\n\n\n\n# List branches\ngit branch # Local branches\ngit branch -r # Remote branches\ngit branch -a # All branches\n\n# Create branch\ngit branch <branch-name>\ngit checkout -b <branch-name> # Create and switch\ngit switch -c <branch-name> # Git 2.23+ (create and switch)\n\n# Switch branches\ngit checkout <branch-name>\ngit switch <branch-name> # Git 2.23+\n\n# Merge branch\ngit merge <branch-name>\n\n# Delete branch\ngit branch -d <branch-name> # Safe delete\ngit branch -D <branch-name> # Force delete\n\n# Rename branch\ngit branch -m <old-name> <new-name>\n\n\n\n# View remotes\ngit remote -v\n\n# Add remote\ngit remote add <name> <url>\ngit remote add origin git@github.com:username/repo.git\n\n# Remove remote\ngit remote remove <name>\n\n# Rename remote\ngit remote rename <old> <new>\n\n# Fetch changes\ngit fetch\ngit fetch origin\n\n# Pull changes\ngit pull\ngit pull origin main\n\n# Push changes\ngit push\ngit push origin main\ngit push -u origin main # Set upstream\ngit push --force # Force push (use with caution!)\n\n\n\n# Save changes temporarily\ngit stash\ngit stash save \"Work in progress\"\n\n# List stashes\ngit stash list\n\n# Apply stash\ngit stash apply # Apply most recent\ngit stash apply stash@{0} # Apply specific stash\n\n# Apply and remove stash\ngit stash pop\n\n# Remove stash\ngit stash drop stash@{0}\n\n# Clear all stashes\ngit stash clear\n\n\n\n# Discard changes in working directory\ngit checkout -- <file>\ngit restore <file> # Git 2.23+\n\n# Unstage files\ngit reset HEAD <file>\ngit restore --staged <file> # Git 2.23+\n\n# Reset to previous commit (keeping changes)\ngit reset --soft HEAD~1\n\n# Reset to previous commit (discard changes)\ngit reset --hard HEAD~1\n\n# Revert a commit (creates new commit)\ngit revert <commit-hash>\n\n\n\n# List tags\ngit tag\n\n# Create tag\ngit tag v1.0.0\ngit tag -a v1.0.0 -m \"Version 1.0.0\" # Annotated tag\n\n# Push tags\ngit push origin v1.0.0\ngit push origin --tags # Push all tags\n\n# Delete tag\ngit tag -d v1.0.0 # Local\ngit push origin :v1.0.0 # Remote", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#github-cli-essentials", - "href": "GitHub/commands.html#github-cli-essentials", - "title": "Basic Uses", - "section": "", - "text": "# Set default repository\ngh repo set-default\n# Select from list or specify:\ngh repo set-default owner/repo\n\n# View repository\ngh repo view\ngh repo view owner/repo\n\n# Fork repository\ngh repo fork owner/repo\n\n# Create repository\ngh repo create my-repo --public --clone\n\n# Delete repository (use with caution!)\ngh repo delete owner/repo\n\n# Clone repository\ngh repo clone owner/repo\n\n# List repositories\ngh repo list\ngh repo list owner\n\n\n\n# Create pull request\ngh pr create\ngh pr create --title \"Feature X\" --body \"Description\"\ngh pr create --fill # Use commit messages for title/body\ngh pr create --draft # Create as draft\ngh pr create --assignee @me --label bug,enhancement\n\n# List pull requests\ngh pr list\ngh pr list --state all\ngh pr list --author @me\n\n# View pull request\ngh pr view\ngh pr view 123\n\n# Checkout pull request\ngh pr checkout 123\n\n# Merge pull request\ngh pr merge 123\ngh pr merge 123 --merge # Create merge commit\ngh pr merge 123 --rebase # Rebase and merge\ngh pr merge 123 --squash # Squash and merge\n\n# Close pull request\ngh pr close 123\n\n# Review pull request\ngh pr review 123 --approve\ngh pr review 123 --request-changes\ngh pr review 123 --comment\n\n# Check pull request status\ngh pr status\ngh pr checks 123\n\n\n\n# Create issue\ngh issue create\ngh issue create --title \"Bug report\" --body \"Description\"\n\n# List issues\ngh issue list\ngh issue list --assignee @me\ngh issue list --label bug\n\n# View issue\ngh issue view 123\n\n# Close issue\ngh issue close 123\n\n# Reopen issue\ngh issue reopen 123\n\n# Comment on issue\ngh issue comment 123 --body \"This is fixed\"\n\n\n\n# List workflows\ngh workflow list\n\n# View workflow runs\ngh run list\ngh run view\n\n# Watch workflow run\ngh run watch\n\n# Download artifacts\ngh run download\n\n# Trigger workflow\ngh workflow run <workflow-name>\n\n\n\n# Create gist\ngh gist create file.txt\ngh gist create --public file.txt\n\n# List gists\ngh gist list\n\n# View gist\ngh gist view <id>\n\n# Edit gist\ngh gist edit <id>", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#common-workflows", - "href": "GitHub/commands.html#common-workflows", - "title": "Basic Uses", - "section": "", - "text": "# 1. Start your day - sync with remote\ngit pull origin main\n\n# 2. Create feature branch\ngit checkout -b feature/new-feature\n\n# 3. Make changes and commit\ngit add .\ngit commit -m \"Add new feature\"\n\n# 4. Push to remote\ngit push -u origin feature/new-feature\n\n# 5. Create pull request\ngh pr create --fill\n\n# 6. After PR is merged, clean up\ngit checkout main\ngit pull origin main\ngit branch -d feature/new-feature\n\n\n\n# 1. Pull latest changes\ngit pull origin main\n\n# 2. If conflicts occur, Git will notify you\n# 3. Open conflicted files and resolve manually\n# Look for conflict markers:\n# <<<<<<< HEAD\n# Your changes\n# =======\n# Their changes\n# >>>>>>> branch-name\n\n# 4. After resolving, add the files\ngit add <resolved-files>\n\n# 5. Complete the merge\ngit commit -m \"Resolve merge conflicts\"\n\n# 6. Push changes\ngit push origin <branch>\n\n\n\n# 1. Add upstream remote (one time)\ngit remote add upstream https://github.com/original-owner/repo.git\n\n# 2. Fetch upstream changes\ngit fetch upstream\n\n# 3. Checkout main branch\ngit checkout main\n\n# 4. Merge upstream changes\ngit merge upstream/main\n\n# 5. Push to your fork\ngit push origin main\n\n# Using GitHub CLI\ngh repo sync owner/repo -b main\n\n\n\n# Interactive rebase for last 3 commits\ngit rebase -i HEAD~3\n\n# In the editor:\n# Change 'pick' to 'squash' for commits to combine\n# Save and close\n\n# Force push (if already pushed)\ngit push --force-with-lease origin <branch>\n\n\n\n# Apply specific commit to current branch\ngit cherry-pick <commit-hash>\n\n# Cherry-pick multiple commits\ngit cherry-pick <hash1> <hash2> <hash3>\n\n# Cherry-pick range\ngit cherry-pick <oldest-hash>^..<newest-hash>", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#best-practices", - "href": "GitHub/commands.html#best-practices", - "title": "Basic Uses", - "section": "", - "text": "The Seven Rules of Great Commit Messages:\n\nSeparate subject from body with blank line\nLimit subject line to 50 characters\nCapitalize the subject line\nDon’t end subject line with period\nUse imperative mood (β€œAdd feature” not β€œAdded feature”)\nWrap body at 72 characters\nExplain what and why, not how\n\nExample:\nAdd user authentication feature\n\nImplement OAuth 2.0 authentication using GitHub as provider.\nThis allows users to sign in with their GitHub credentials\ninstead of creating separate accounts.\n\nResolves: #123\nSee also: #456, #789\n\n\n\nfeature/add-login-page\nbugfix/fix-navigation-menu\nhotfix/security-patch\nrelease/v2.0.0\ndocs/update-readme\ntest/add-unit-tests\nrefactor/optimize-database\n\n\n\nCreate a .gitignore file in your repository root:\n# macOS\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# Dependencies\nnode_modules/\nvendor/\n.env\n\n# Build outputs\ndist/\nbuild/\n*.log\n\n# Sensitive data\n*.pem\n*.key\n.env.local\nconfig/secrets.yml\n\n\n\n\nNever commit sensitive data:\n\nPasswords, API keys, tokens\nPrivate keys or certificates\nDatabase credentials\n.env files with secrets\n\nIf you accidentally commit secrets:\n# Remove from history (requires force push)\ngit filter-branch --force --index-filter \\\n \"git rm --cached --ignore-unmatch path/to/file\" \\\n --prune-empty --tag-name-filter cat -- --all\n\n# Or use BFG Repo-Cleaner (easier)\nbrew install bfg\nbfg --delete-files file-with-secrets.txt\nUse GitHub’s security features:\n\nEnable Dependabot alerts\nEnable secret scanning\nUse protected branches\nRequire PR reviews\n\n\n\n\n\n\nAlways work in branches - Never commit directly to main\nKeep PRs small - Easier to review and less likely to have conflicts\nWrite descriptive PR descriptions - Include what, why, and how\nReview others’ code - Learn and help maintain quality\nUpdate documentation - Keep README and docs current\nTest before pushing - Run tests locally first\nCommunicate - Use issues and PR comments effectively", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#troubleshooting", - "href": "GitHub/commands.html#troubleshooting", - "title": "Basic Uses", - "section": "", - "text": "# Check SSH key is added\nssh-add -l\n\n# Add SSH key\nssh-add ~/.ssh/id_ed25519\n\n# Test connection\nssh -T git@github.com\n\n\n\n# Pull first, then push\ngit pull origin main --rebase\ngit push origin main\n\n# Or force push (careful!)\ngit push --force-with-lease\n\n\n\n# Create new branch with current commits\ngit branch new-branch\n\n# Reset original branch\ngit reset --hard HEAD~3 # Go back 3 commits\n\n# Switch to new branch\ngit checkout new-branch\n\n\n\n# Keep changes, undo commit\ngit reset --soft HEAD~1\n\n# Discard changes completely\ngit reset --hard HEAD~1\n\n\n\n# Install Git LFS\nbrew install git-lfs\ngit lfs install\n\n# Track large files\ngit lfs track \"*.psd\"\ngit add .gitattributes\ngit add large-file.psd\ngit commit -m \"Add large file with LFS\"\n\n\n\n# Update your branch\ngit checkout main\ngit pull origin main\ngit checkout your-branch\ngit rebase main\n\n# Resolve conflicts, then\ngit add .\ngit rebase --continue\ngit push --force-with-lease", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/commands.html#quick-reference", - "href": "GitHub/commands.html#quick-reference", - "title": "Basic Uses", - "section": "", - "text": "[alias]\n st = status\n co = checkout\n ci = commit\n br = branch\n df = diff\n lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit\n last = log -1 HEAD\n unstage = reset HEAD --\n amend = commit --amend\n branches = branch -a\n remotes = remote -v\n contributors = shortlog --summary --numbered\n\n\n\n\nCmd + Shift + P β†’ Git commands\nCtrl + Shift + G β†’ Source control panel\nCmd + Enter β†’ Commit staged changes\nOption + Cmd + Enter β†’ Commit all changes\n\n\n\n\n# Git shortcuts\nalias g='git'\nalias gs='git status'\nalias ga='git add'\nalias gc='git commit -m'\nalias gp='git push'\nalias gpl='git pull'\nalias gco='git checkout'\nalias gb='git branch'\nalias glog='git log --oneline --graph --all'\n\n# GitHub CLI shortcuts\nalias ghr='gh repo'\nalias ghpr='gh pr'\nalias ghi='gh issue'", - "crumbs": [ - "GitHub", - "Basic Uses" - ] - }, - { - "objectID": "GitHub/resources.html#resources-links", - "href": "GitHub/resources.html#resources-links", - "title": "NASA Disasters Documentation", - "section": "", - "text": "Git Documentation: https://git-scm.com/doc\nGitHub Docs: https://docs.github.com\nGitHub CLI Manual: https://cli.github.com/manual\nGitHub Learning Lab: https://lab.github.com\n\n\n\n\n\nLearn Git Branching: https://learngitbranching.js.org\nGitHub Skills: https://skills.github.com\nAtlassian Git Tutorial: https://www.atlassian.com/git/tutorials\nOh My Git! (Game): https://ohmygit.org\n\n\n\n\n\nGitHub Git Cheat Sheet: https://education.github.com/git-cheat-sheet-education.pdf\nInteractive Git Cheat Sheet: https://ndpsoftware.com/git-cheatsheet.html\nGitHub CLI Cheat Sheet: https://github.com/cli/cli#commands\n\n\n\n\n\nPro Git Book (Free): https://git-scm.com/book\nGit Flow: https://nvie.com/posts/a-successful-git-branching-model\nConventional Commits: https://www.conventionalcommits.org\nSemantic Versioning: https://semver.org\n\n\n\n\n\nGitHub Desktop: https://desktop.github.com\nSourceTree: https://www.sourcetreeapp.com\nGitKraken: https://www.gitkraken.com\nTower: https://www.git-tower.com\n\n\n\n\n\nGitLens: Enhanced Git capabilities\nGit Graph: Visualize branch structure\nGitHub Pull Requests: Manage PRs from VS Code\nGit History: View and search git log\n\n\n\n\n\nGitHub Status: https://www.githubstatus.com\nStack Overflow Git Tag: https://stackoverflow.com/questions/tagged/git\nGitHub Community Forum: https://github.community\n\n\n\n\n\nGitHub YouTube: https://youtube.com/github\nThe Net Ninja Git Tutorial: Comprehensive video series\nTraversy Media Git Crash Course: Quick overview\n\n\n\n\n\nGitHub Flavored Markdown: https://github.github.com/gfm\nMarkdown Guide: https://www.markdownguide.org\nShields.io (Badges): https://shields.io", - "crumbs": [ - "GitHub", - "Resources & Links" - ] - }, - { - "objectID": "GitHub/resources.html#appendix-quick-setup-script", - "href": "GitHub/resources.html#appendix-quick-setup-script", - "title": "NASA Disasters Documentation", - "section": "Appendix: Quick Setup Script", - "text": "Appendix: Quick Setup Script\nSave this as setup-git-github.sh and run to quickly set up your environment:\n#!/bin/bash\n\necho \"πŸš€ Git and GitHub Setup Script for macOS\"\necho \"=======================================\"\n\n# Install Homebrew if not present\nif ! command -v brew &> /dev/null; then\n echo \"πŸ“¦ Installing Homebrew...\"\n /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\nfi\n\n# Install Git\necho \"πŸ“¦ Installing Git...\"\nbrew install git\n\n# Install GitHub CLI\necho \"πŸ“¦ Installing GitHub CLI...\"\nbrew install gh\n\n# Git configuration\necho \"βš™οΈ Configuring Git...\"\nread -p \"Enter your name: \" name\nread -p \"Enter your email: \" email\n\ngit config --global user.name \"$name\"\ngit config --global user.email \"$email\"\ngit config --global init.defaultBranch main\ngit config --global color.ui auto\n\n# Generate SSH key\necho \"πŸ”‘ Generating SSH key...\"\nssh-keygen -t ed25519 -C \"$email\" -f ~/.ssh/id_ed25519 -N \"\"\n\n# Start SSH agent and add key\neval \"$(ssh-agent -s)\"\nssh-add ~/.ssh/id_ed25519\n\n# Copy SSH key to clipboard\npbcopy < ~/.ssh/id_ed25519.pub\necho \"πŸ“‹ SSH public key copied to clipboard!\"\n\n# GitHub CLI authentication\necho \"πŸ” Authenticating with GitHub...\"\ngh auth login\n\necho \"βœ… Setup complete!\"\necho \"\"\necho \"Next steps:\"\necho \"1. Go to GitHub Settings β†’ SSH Keys\"\necho \"2. Add a new SSH key (already in clipboard)\"\necho \"3. Test with: ssh -T git@github.com\"\nMake executable and run:\nchmod +x setup-git-github.sh\n./setup-git-github.sh\n\nLast Updated: 2024 Version: 1.0\nThis guide is a living document. Contribute improvements at: [your-repo-url]", - "crumbs": [ - "GitHub", - "Resources & Links" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html", - "href": "Jupyterhub/simple_disaster_template.html", - "title": "🌍 Simple Disaster COG Processing", - "section": "", - "text": "This simplified notebook converts disaster satellite imagery to Cloud Optimized GeoTIFFs (COGs) with just a few cells.", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#features", - "href": "Jupyterhub/simple_disaster_template.html#features", - "title": "🌍 Simple Disaster COG Processing", - "section": "✨ Features", - "text": "✨ Features\n\nSee files first - List S3 files before configuring\nSmart configuration - Define filename functions after seeing actual files\nAuto-discovery - Automatically categorizes your files\nSimple processing - Just run the cells in order\n\n\n\nπŸš€ Launch in Disasters-Hub JupyterHub (requires access)\n\n\nTo obtain credentials to VEDA Hub, follow this link for more information.\n\n\nDisclaimer: it is highly recommended to run a tutorial within NASA VEDA JupyterHub, which already includes functions for processing and visualizing data specific to VEDA stories. Running the tutorial outside of the VEDA JupyterHub may lead to errors, specifically related to EarthData authentication. Additionally, it is recommended to use the Pangeo workspace within the VEDA JupyterHub, since certain packages relevant to this tutorial are already installed.\n\n\nIf you do not have a VEDA Jupyterhub Account you can launch this notebook on your local environment using MyBinder by clicking the icon below.", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-1-basic-configuration", - "href": "Jupyterhub/simple_disaster_template.html#step-1-basic-configuration", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ“‹ Step 1: Basic Configuration", - "text": "πŸ“‹ Step 1: Basic Configuration\nSet your event details and S3 paths:\n\n# ========================================\n# INPUTS\n# ========================================\n\n# S3 Paths\nBUCKET = 'nasa-disasters' # S3 bucket (DO NOT CHANGE)\nDESTINATION_BASE = 'drcs_activations_new' # Where to save COGs in S3 bucket (DO NOT CHANGE)\nGEOTIFF_DIR = 'drcs_activations' # This is where all non-converted files should be placed\n\n\n# Event Details\nEVENT_NAME = '202510_Flood_AK' # Your sensor or product name (e.g, Sentinel-1, Planet, Landsat)\nSUB_PRODUCT_NAME = 'aria' # Sub-directories within PRODUCT_NAME (RGB, trueColor, SWIR, etc.). Can leave blank and it will read from PRODUCT_NAME.\nSOURCE_PATH = f'{GEOTIFF_DIR}/{EVENT_NAME}/{SUB_PRODUCT_NAME}' # Where your files are\n\n\n# Processing Options\nOVERWRITE = False # Set to True to replace existing files\nVERIFY = True # Set to True to verify results after processing\nSAVE_RESULTS = True # Set to False to skip saving results CSV to /output directory\n\nprint(f\"Event: {GEOTIFF_DIR}\")\nprint(f\"Source: s3://{BUCKET}/{SOURCE_PATH}\")\nprint(f\"Destination: s3://{BUCKET}/{DESTINATION_BASE}/\")\n\nEvent: drcs_activations\nSource: s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria\nDestination: s3://nasa-disasters/drcs_activations_new/", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-2-connect-to-s3-and-list-files", - "href": "Jupyterhub/simple_disaster_template.html#step-2-connect-to-s3-and-list-files", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ” Step 2: Connect to S3 and List Files", - "text": "πŸ” Step 2: Connect to S3 and List Files\nLet’s see what files are available before configuring filename transformations:\n\n# Import necessary modules\nimport sys\nimport os\nfrom pathlib import Path\n\n# Add parent directory to path for importing functions\nsys.path.insert(0, str(Path('..').resolve()))\n\n# Import S3 operations\nfrom core.s3_operations import (\n initialize_s3_client,\n list_s3_files,\n get_file_size_from_s3\n)\n\n# Initialize S3 client\nprint(\"🌐 Connecting to S3...\")\ns3_client, _ = initialize_s3_client(bucket_name=BUCKET, verbose=False)\n\nif s3_client:\n print(\"βœ… Connected to S3\\n\")\n \n # List all TIF files\n print(f\"πŸ“‚ Files in s3://{BUCKET}/{SOURCE_PATH}:\")\n print(\"=\"*60)\n \n files = list_s3_files(s3_client, BUCKET, SOURCE_PATH, suffix='.tif')\n \n if files:\n print(f\"Found {len(files)} .tif files:\\n\")\n for i, file_path in enumerate(files[:10], 1): # Show first 10\n filename = os.path.basename(file_path)\n try:\n size_gb = get_file_size_from_s3(s3_client, BUCKET, file_path)\n print(f\"{i:2}. {filename:<60} ({size_gb:.2f} GB)\")\n except:\n print(f\"{i:2}. {filename}\")\n \n if len(files) > 10:\n print(f\"\\n... and {len(files) - 10} more files\")\n \n print(\"\\n\" + \"=\"*60)\n print(\"\\nπŸ’‘ Use this information to create filename functions in Step 3\")\n else:\n print(\"⚠️ No .tif files found in the specified path.\")\n print(\" Check your SOURCE_PATH configuration.\")\nelse:\n print(\"❌ Could not connect to S3. Check your AWS credentials.\")\n files = []\n\n🌐 Connecting to S3...\nβœ… Connected to S3\n\nπŸ“‚ Files in s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria:\n============================================================\nFound 6 .tif files:\n\n 1. OPERA_L3_DSWX-S1_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n 2. OPERA_L3_DSWX-S1_V1_WTR_2025-10-10_mosaic.tif (0.03 GB)\n 3. OPERA_L3_DSWX-S1_V1_WTR_2025-10-12_mosaic.tif (0.03 GB)\n 4. OPERA_L3_DSWX-S1_V1_WTR_2025-10-15_mosaic.tif (0.02 GB)\n 5. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-08_mosaic.tif (0.01 GB)\n 6. OPERA_L3_DSWX-HLS_V1_WTR_2025-10-13_mosaic.tif (0.01 GB)\n\n============================================================\n\nπŸ’‘ Use this information to create filename functions in Step 3", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-3a-define-categorization-and-filename-transformations", - "href": "Jupyterhub/simple_disaster_template.html#step-3a-define-categorization-and-filename-transformations", - "title": "🌍 Simple Disaster COG Processing", - "section": "🏷️ Step 3a: Define Categorization and Filename Transformations", - "text": "🏷️ Step 3a: Define Categorization and Filename Transformations\nBased on the files you see above, configure: 1. Categorization patterns - Regex patterns to identify file types 2. Filename functions - How to transform filenames 3. Output directories - Where each category should be saved\n\n# ========================================\n# CATEGORIZATION AND OUTPUT CONFIGURATION\n# ========================================\n\nimport re\n\n# STEP 1: Define how to extract dates from filenames\ndef extract_date_from_filename(filename):\n \"\"\"Extract date from filename in YYYYMMDD format.\"\"\"\n dates = re.findall(r'\\d{8}', filename)\n if dates:\n date_str = dates[0]\n return f\"{date_str[0:4]}-{date_str[4:6]}-{date_str[6:8]}\"\n return None\n\n# STEP 2: Define filename transformation functions for each category\ndef create_truecolor_filename(original_path, event_name):\n \"\"\"Create filename for trueColor products.\"\"\"\n filename = os.path.basename(original_path)\n stem = os.path.splitext(filename)[0]\n date = extract_date_from_filename(stem)\n \n if date:\n stem_clean = re.sub(r'_\\d{8}', '', stem)\n return f\"{event_name}_{stem_clean}_{date}_day.tif\"\n return f\"{event_name}_{stem}_day.tif\"\n\ndef create_colorinfrared_filename(original_path, event_name):\n \"\"\"Create filename for colorInfrared products.\"\"\"\n filename = os.path.basename(original_path)\n stem = os.path.splitext(filename)[0]\n date = extract_date_from_filename(stem)\n \n if date:\n stem_clean = re.sub(r'_\\d{8}', '', stem)\n return f\"{event_name}_{stem_clean}_{date}_day.tif\"\n return f\"{event_name}_{stem}_day.tif\"\n\ndef create_naturalcolor_filename(original_path, event_name):\n \"\"\"Create filename for naturalColor products.\"\"\"\n filename = os.path.basename(original_path)\n stem = os.path.splitext(filename)[0]\n date = extract_date_from_filename(stem)\n \n if date:\n stem_clean = re.sub(r'_\\d{8}', '', stem)\n return f\"{event_name}_{stem_clean}_{date}_day.tif\"\n return f\"{event_name}_{stem}_day.tif\"\n\n# STEP 3: Configure categorization patterns (REQUIRED)\n# These regex patterns determine which files belong to which category\nCATEGORIZATION_PATTERNS = {\n 'trueColor': r'trueColor|truecolor|true_color',\n 'colorInfrared': r'colorInfrared|colorIR|color_infrared',\n 'naturalColor': r'naturalColor|natural_color',\n # Add patterns for ALL file types you want to process\n # Files not matching any pattern will be skipped with a warning\n}\n\n# STEP 4: Map categories to filename transformation functions\nFILENAME_CREATORS = {\n 'trueColor': create_truecolor_filename,\n 'colorInfrared': create_colorinfrared_filename,\n 'naturalColor': create_naturalcolor_filename,\n # Must have an entry for each category in CATEGORIZATION_PATTERNS\n}\n\n# STEP 5: Specify output directories for each category\nOUTPUT_DIRS = {\n 'trueColor': 'Landsat/trueColor',\n 'colorInfrared': 'Landsat/colorIR',\n 'naturalColor': 'Landsat/naturalColor',\n # Must have an entry for each category in CATEGORIZATION_PATTERNS\n}\n\n# OPTIONAL: Specify no-data values (None = auto-detect)\nNODATA_VALUES = {\n 'trueColor': 0,\n 'colorInfrared': 0,\n 'naturalColor': 0\n # Leave empty or set to None for auto-detection\n}", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-3b-test-the-new-functions-to-verify-what-the-inputs-and-outputs-will-be.", - "href": "Jupyterhub/simple_disaster_template.html#step-3b-test-the-new-functions-to-verify-what-the-inputs-and-outputs-will-be.", - "title": "🌍 Simple Disaster COG Processing", - "section": "🏷️ Step 3b: Test the new functions to verify what the inputs and outputs will be.", - "text": "🏷️ Step 3b: Test the new functions to verify what the inputs and outputs will be.\n\nprint(\"βœ… Configuration defined\")\nprint(f\"\\nπŸ“‚ Categories and output paths:\")\nfor category, path in OUTPUT_DIRS.items():\n pattern = CATEGORIZATION_PATTERNS.get(category, 'No pattern defined')\n print(f\" β€’ {category}:\")\n print(f\" Pattern: {pattern}\")\n print(f\" Output: {DESTINATION_BASE}/{path}\")\n\n# Test with sample filename if files exist\nif files:\n sample_file = files[0]\n sample_name = os.path.basename(sample_file)\n \n # Check which category it would match\n matched_category = None\n for cat, pattern in CATEGORIZATION_PATTERNS.items():\n if re.search(pattern, sample_name, re.IGNORECASE):\n matched_category = cat\n break\n \n if matched_category:\n new_name = FILENAME_CREATORS[matched_category](sample_file, EVENT_NAME)\n print(f\"\\nπŸ“ Example transformation:\")\n print(f\" Original: {sample_name}\")\n print(f\" Category: {matched_category}\")\n print(f\" β†’ New: {new_name}\")\n print(f\" β†’ Output: {DESTINATION_BASE}/{OUTPUT_DIRS[matched_category]}/{new_name}\")\n else:\n print(f\"\\n⚠️ Warning: Sample file doesn't match any category pattern:\")\n print(f\" File: {sample_name}\")\n print(f\" Add a pattern to CATEGORIZATION_PATTERNS to process this file type\")\n\nβœ… Configuration defined\n\nπŸ“‚ Categories and output paths:\n β€’ trueColor:\n Pattern: trueColor|truecolor|true_color\n Output: drcs_activations_new/Landsat/trueColor\n β€’ colorInfrared:\n Pattern: colorInfrared|colorIR|color_infrared\n Output: drcs_activations_new/Landsat/colorIR\n β€’ naturalColor:\n Pattern: naturalColor|natural_color\n Output: drcs_activations_new/Landsat/naturalColor", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-4-initialize-processor-and-preview", - "href": "Jupyterhub/simple_disaster_template.html#step-4-initialize-processor-and-preview", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸš€ Step 4: Initialize Processor and Preview", - "text": "πŸš€ Step 4: Initialize Processor and Preview\nNow let’s set up the processor and preview all transformations:\n\n# Import our simplified helper\nfrom notebooks.notebook_helpers import SimpleProcessor\n\n# Create full configuration with categorization patterns\nconfig = {\n 'event_name': EVENT_NAME,\n 'bucket': BUCKET,\n 'source_path': SOURCE_PATH,\n 'destination_base': DESTINATION_BASE,\n 'overwrite': OVERWRITE,\n 'verify': VERIFY,\n 'save_results': SAVE_RESULTS, # Add save results flag\n 'categorization_patterns': CATEGORIZATION_PATTERNS, # IMPORTANT: Include patterns\n 'filename_creators': FILENAME_CREATORS,\n 'output_dirs': OUTPUT_DIRS,\n 'nodata_values': NODATA_VALUES\n}\n\n# Initialize processor\nprocessor = SimpleProcessor(config)\n\n# Connect to S3 (already connected, but needed for processor)\nif processor.connect_to_s3():\n print(\"βœ… Processor ready\\n\")\n \n # Discover and categorize files\n num_files = processor.discover_files()\n \n if num_files > 0:\n # Show preview of transformations\n processor.preview_processing()\n \n print(\"\\nπŸ“Œ Review the transformations above.\")\n print(\" β€’ Files will be saved to the directories specified in OUTPUT_DIRS\")\n print(\" β€’ If files appear as 'uncategorized', add patterns to CATEGORIZATION_PATTERNS\")\n print(\" β€’ When ready, proceed to Step 5 to process the files.\")\n else:\n print(\"⚠️ No files found to process.\")\nelse:\n print(\"❌ Could not initialize processor.\")\n\nβœ… All modules loaded successfully\n\n🌐 Connecting to S3...\nβœ… Connected to S3 successfully\nβœ… Processor ready\n\n\nπŸ” Searching for files in: geotiffs_to_convert/202408_TropicalStorm_Debby/landsat8\n⚠️ No .tif files found\n⚠️ No files found to process.", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-5-process-files", - "href": "Jupyterhub/simple_disaster_template.html#step-5-process-files", - "title": "🌍 Simple Disaster COG Processing", - "section": "βš™οΈ Step 5: Process Files", - "text": "βš™οΈ Step 5: Process Files\nRun this cell to start processing all files:\n\n# Process all files\nif 'num_files' in locals() and num_files > 0:\n print(\"πŸš€ Starting processing...\")\n print(\"This may take several minutes depending on file sizes.\\n\")\n \n # Process everything\n results = processor.process_all()\n \n # Display results\n if not results.empty:\n print(\"\\nπŸ“Š Processing Complete!\")\n display(results) if 'display' in dir() else print(results)\nelse:\n print(\"⚠️ No files to process. Complete Steps 1-4 first.\")\n\nπŸš€ Starting processing...\nThis may take several minutes depending on file sizes.\n\n\nπŸš€ Starting processing...\n\nπŸ“¦ Processing colorInfrared (3 files)\n ⏭️ Skipped: LC08_colorInfrared_20240715_155319_016036.tif (exists)\n ⏭️ Skipped: LC08_colorInfrared_20240715_155343_016037.tif (exists)\n ⏭️ Skipped: LC08_colorInfrared_20240715_15547_016038.tif (exists)\n\nπŸ“¦ Processing naturalColor (3 files)\n ⏭️ Skipped: LC08_naturalColor_20240715_155319_016036.tif (exists)\n ⏭️ Skipped: LC08_naturalColor_20240715_155343_016037.tif (exists)\n ⏭️ Skipped: LC08_naturalColor_20240715_15547_016038.tif (exists)\n\nπŸ“¦ Processing trueColor (3 files)\n ⏭️ Skipped: LC08_trueColor_20240715_155319_016036.tif (exists)\n ⏭️ Skipped: LC08_trueColor_20240715_155343_016037.tif (exists)\n ⏭️ Skipped: LC08_trueColor_20240715_15547_016038.tif (exists)\n\n============================================================\nβœ… PROCESSING COMPLETE\n============================================================\n\nResults:\n ⏭️ Skipped: 9\n\nProcessing time: 0.0 minutes\n\nπŸ“ Results saved to: output/202408_TropicalStorm_Debby/results_20250929_191143.csv\n============================================================\n\nπŸ“Š Processing Complete!\n source_file category status \\\n0 LC08_colorInfrared_20240715_155319_016036.tif colorInfrared skipped \n1 LC08_colorInfrared_20240715_155343_016037.tif colorInfrared skipped \n2 LC08_colorInfrared_20240715_15547_016038.tif colorInfrared skipped \n3 LC08_naturalColor_20240715_155319_016036.tif naturalColor skipped \n4 LC08_naturalColor_20240715_155343_016037.tif naturalColor skipped \n5 LC08_naturalColor_20240715_15547_016038.tif naturalColor skipped \n6 LC08_trueColor_20240715_155319_016036.tif trueColor skipped \n7 LC08_trueColor_20240715_155343_016037.tif trueColor skipped \n8 LC08_trueColor_20240715_15547_016038.tif trueColor skipped \n\n reason output_path \\\n0 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n1 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n2 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n3 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n4 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n5 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n6 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n7 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n8 already exists s3://nasa-disasters/drcs_activations_new/Lands... \n\n time_seconds \n0 0 \n1 0 \n2 0 \n3 0 \n4 0 \n5 0 \n6 0 \n7 0 \n8 0 \n\n\n\n# Analyze results\nif 'results' in locals() and not results.empty:\n print(\"πŸ“Š PROCESSING STATISTICS\")\n print(\"=\"*40)\n \n # Success rate\n total = len(results)\n success = len(results[results['status'] == 'success'])\n failed = len(results[results['status'] == 'failed'])\n skipped = len(results[results['status'] == 'skipped'])\n \n print(f\"Total files: {total}\")\n print(f\"βœ… Success: {success}\")\n print(f\"❌ Failed: {failed}\")\n print(f\"⏭️ Skipped: {skipped}\")\n print(f\"\\nSuccess rate: {(success/total*100):.1f}%\")\n \n # Failed files\n if failed > 0:\n print(\"\\n❌ Failed files:\")\n failed_df = results[results['status'] == 'failed']\n for idx, row in failed_df.iterrows():\n print(f\" - {row['source_file']}: {row.get('error', 'Unknown error')}\")\n \n # Processing times\n if 'time_seconds' in results.columns:\n success_df = results[results['status'] == 'success']\n if not success_df.empty:\n avg_time = success_df['time_seconds'].mean()\n max_time = success_df['time_seconds'].max()\n print(f\"\\n⏱️ Timing:\")\n print(f\"Average: {avg_time:.1f} seconds per file\")\n print(f\"Slowest: {max_time:.1f} seconds\")\nelse:\n print(\"No results to analyze. Run Step 5 first.\")", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#tips-troubleshooting", - "href": "Jupyterhub/simple_disaster_template.html#tips-troubleshooting", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ’‘ Tips & Troubleshooting", - "text": "πŸ’‘ Tips & Troubleshooting\n\nWorkflow Summary:\n\nSetup - Clone disasters-aws-conversion repository (Step 0)\nConfigure basic settings (Step 1)\nList files from S3 to see naming patterns (Step 2)\nDefine functions to transform filenames (Step 3)\nPreview transformations (Step 4)\nProcess all files (Step 5)\nReview results (Step 6)\n\n\n\nCommon Issues:\n\nβ€œModuleNotFoundError: No module named β€˜core’” or import errors\n\nRun Step 0 first to clone the disasters-aws-conversion repository\nRestart kernel and run all cells from the beginning\n\nβ€œNo files found”\n\nCheck SOURCE_PATH in Step 1\nVerify bucket permissions\nEnsure files have .tif extension\n\nWrong filename transformations\n\nReview actual filenames in Step 2\nAdjust functions in Step 3\nRe-run Step 4 to preview\n\nFiles being skipped\n\nFiles already exist in destination\nSet OVERWRITE = True in Step 1\n\nProcessing errors\n\nCheck AWS credentials\nVerify S3 write permissions\nCheck available disk space for temp files\n\n\n\n\nNeed More Control?\nUse the full template at disaster_processing_template.ipynb for: - Manual chunk configuration - Custom compression settings - Detailed memory management - Advanced processing options", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html", - "href": "Jupyterhub/convert_to_geotiff.html", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "This guide helps you get started with converting disaster satellite imagery to Cloud Optimized GeoTIFFs (COGs).\n\n\n\n\nUse templates/simple_disaster_template.ipynb for a streamlined experience with just 5 cells:\n\nOpen the notebook\njupyter notebook templates/simple_disaster_template.ipynb\nConfigure your event (Cell 1)\n\nSet EVENT_NAME (e.g., β€˜202408_TropicalStorm_Debby’)\nSet PRODUCT_NAME (e.g., β€˜landsat8’)\nModify filename functions to control output names\n\nRun the cells in order\n\nCell 2: Imports and initializes\nCell 3: Discovers files and shows preview\nCell 4: Processes all files\nCell 5: Reviews results\n\n\n\n\n\nUse templates/disaster_processing_template.ipynb for full control over: - Memory management - Chunk configurations - Processing parameters - Verification options - Detailed error handling\n\n\n\n\n\n\nEVENT_NAME = '202408_TropicalStorm_Debby'\nPRODUCT_NAME = 'landsat8'\nBUCKET = 'nasa-disasters'\nSOURCE_PATH = f'drcs_activations/{EVENT_NAME}/{PRODUCT_NAME}'\nDESTINATION_BASE = 'drcs_activations_new'\nOVERWRITE = False # Set True to replace existing files\n\n\n\nDefine how your files are renamed:\ndef create_truecolor_filename(original_path, event_name):\n \"\"\"Create filename for trueColor products.\"\"\"\n filename = os.path.basename(original_path)\n stem = os.path.splitext(filename)[0]\n date = extract_date_from_filename(stem)\n\n if date:\n stem_clean = re.sub(r'_\\d{8}', '', stem)\n return f\"{event_name}_{stem_clean}_{date}_day.tif\"\n return f\"{event_name}_{stem}_day.tif\"\n\n\n\nFILENAME_CREATORS = {\n 'trueColor': create_truecolor_filename,\n 'colorInfrared': create_colorinfrared_filename,\n 'naturalColor': create_naturalcolor_filename,\n}\n\n\n\n\nThe system automatically: - Discovers files in your S3 source path - Categorizes them by product type (trueColor, NDVI, etc.) - Applies the appropriate filename function - Saves to organized output directories\n\n\ndrcs_activations_new/\nβ”œβ”€β”€ imagery/\nβ”‚ β”œβ”€β”€ trueColor/\nβ”‚ β”œβ”€β”€ colorIR/\nβ”‚ └── naturalColor/\nβ”œβ”€β”€ indices/\nβ”‚ β”œβ”€β”€ NDVI/\nβ”‚ └── MNDWI/\n└── SAR/\n └── processed/\n\n\n\n\n\n\nThe system automatically detects and processes different product types:\n# Files are auto-categorized by these patterns:\n- 'trueColor' β†’ imagery/trueColor/\n- 'colorInfrared' β†’ imagery/colorIR/\n- 'NDVI' β†’ indices/NDVI/\n- 'MNDWI' β†’ indices/MNDWI/\n- 'SAR' β†’ SAR/processed/\n\n\n\nNODATA_VALUES = {\n 'NDVI': -9999, # Specific value for NDVI\n 'MNDWI': -9999, # Specific value for MNDWI\n 'trueColor': None, # Auto-detect for imagery\n}\n\n\n\nOUTPUT_DIRS = {\n 'trueColor': 'Landsat/trueColor',\n 'colorInfrared': 'Landsat/colorIR',\n 'naturalColor': 'Landsat/naturalColor',\n}\n\n\n\n\n\n\n\nCheck SOURCE_PATH is correct\nVerify files exist: aws s3 ls s3://bucket/path/\n\n\n\n\n\nCheck AWS credentials: aws configure list\nEnsure bucket access permissions\n\n\n\n\n\nFiles already exist in destination\nSet OVERWRITE = True to reprocess\n\n\n\n\n\nModify filename creator functions\nRe-run from discovery step to preview\n\n\n\n\n\nLarge files take time (normal)\nSystem automatically uses GDAL optimization\nFiles >1.5GB use optimized chunking\n\n\n\n\n\n\nFile Size Optimization\n\nFiles <1.5GB: Processed whole (fastest)\nFiles >1.5GB: Smart chunking\nFiles >7GB: Ultra-large file handling\n\nCompression\n\nUses ZSTD level 22 (maximum compression)\nAutomatic predictor selection\nIntelligent resampling based on data type\n\nParallel Processing\n\nFor batch processing multiple events, use:\n\nfrom batch_processor_parallel import process_files_parallel\n\n\n\n\n\n\nfrom notebooks.notebook_helpers import quick_process\n\nresults = quick_process({\n 'event_name': '202408_TropicalStorm_Debby',\n 'bucket': 'nasa-disasters',\n 'source_path': 'drcs_activations/202408_TropicalStorm_Debby/landsat8',\n 'destination_base': 'drcs_activations_new',\n 'overwrite': False,\n 'filename_creators': FILENAME_CREATORS\n})\n\n\n\nevents = [\n '202408_TropicalStorm_Debby',\n '202409_Hurricane_Example',\n '202410_Wildfire_Sample'\n]\n\nfor event in events:\n config['event_name'] = event\n config['source_path'] = f'drcs_activations/{event}/landsat8'\n processor = SimpleProcessor(config)\n processor.connect_to_s3()\n processor.discover_files()\n processor.process_all()\n\n\n\n\n\nStart with the simple template\nRun a small test batch\nVerify output filenames are correct\nProcess full dataset\nCheck results in S3\n\nFor more details, see the main README.md or review the RESAMPLING_GUIDE.md for data type handling.", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#quick-start", - "href": "Jupyterhub/convert_to_geotiff.html#quick-start", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "Use templates/simple_disaster_template.ipynb for a streamlined experience with just 5 cells:\n\nOpen the notebook\njupyter notebook templates/simple_disaster_template.ipynb\nConfigure your event (Cell 1)\n\nSet EVENT_NAME (e.g., β€˜202408_TropicalStorm_Debby’)\nSet PRODUCT_NAME (e.g., β€˜landsat8’)\nModify filename functions to control output names\n\nRun the cells in order\n\nCell 2: Imports and initializes\nCell 3: Discovers files and shows preview\nCell 4: Processes all files\nCell 5: Reviews results\n\n\n\n\n\nUse templates/disaster_processing_template.ipynb for full control over: - Memory management - Chunk configurations - Processing parameters - Verification options - Detailed error handling", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#configuration-examples", - "href": "Jupyterhub/convert_to_geotiff.html#configuration-examples", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "EVENT_NAME = '202408_TropicalStorm_Debby'\nPRODUCT_NAME = 'landsat8'\nBUCKET = 'nasa-disasters'\nSOURCE_PATH = f'drcs_activations/{EVENT_NAME}/{PRODUCT_NAME}'\nDESTINATION_BASE = 'drcs_activations_new'\nOVERWRITE = False # Set True to replace existing files\n\n\n\nDefine how your files are renamed:\ndef create_truecolor_filename(original_path, event_name):\n \"\"\"Create filename for trueColor products.\"\"\"\n filename = os.path.basename(original_path)\n stem = os.path.splitext(filename)[0]\n date = extract_date_from_filename(stem)\n\n if date:\n stem_clean = re.sub(r'_\\d{8}', '', stem)\n return f\"{event_name}_{stem_clean}_{date}_day.tif\"\n return f\"{event_name}_{stem}_day.tif\"\n\n\n\nFILENAME_CREATORS = {\n 'trueColor': create_truecolor_filename,\n 'colorInfrared': create_colorinfrared_filename,\n 'naturalColor': create_naturalcolor_filename,\n}", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#file-organization", - "href": "Jupyterhub/convert_to_geotiff.html#file-organization", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "The system automatically: - Discovers files in your S3 source path - Categorizes them by product type (trueColor, NDVI, etc.) - Applies the appropriate filename function - Saves to organized output directories\n\n\ndrcs_activations_new/\nβ”œβ”€β”€ imagery/\nβ”‚ β”œβ”€β”€ trueColor/\nβ”‚ β”œβ”€β”€ colorIR/\nβ”‚ └── naturalColor/\nβ”œβ”€β”€ indices/\nβ”‚ β”œβ”€β”€ NDVI/\nβ”‚ └── MNDWI/\n└── SAR/\n └── processed/", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#common-patterns", - "href": "Jupyterhub/convert_to_geotiff.html#common-patterns", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "The system automatically detects and processes different product types:\n# Files are auto-categorized by these patterns:\n- 'trueColor' β†’ imagery/trueColor/\n- 'colorInfrared' β†’ imagery/colorIR/\n- 'NDVI' β†’ indices/NDVI/\n- 'MNDWI' β†’ indices/MNDWI/\n- 'SAR' β†’ SAR/processed/\n\n\n\nNODATA_VALUES = {\n 'NDVI': -9999, # Specific value for NDVI\n 'MNDWI': -9999, # Specific value for MNDWI\n 'trueColor': None, # Auto-detect for imagery\n}\n\n\n\nOUTPUT_DIRS = {\n 'trueColor': 'Landsat/trueColor',\n 'colorInfrared': 'Landsat/colorIR',\n 'naturalColor': 'Landsat/naturalColor',\n}", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#troubleshooting", - "href": "Jupyterhub/convert_to_geotiff.html#troubleshooting", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "Check SOURCE_PATH is correct\nVerify files exist: aws s3 ls s3://bucket/path/\n\n\n\n\n\nCheck AWS credentials: aws configure list\nEnsure bucket access permissions\n\n\n\n\n\nFiles already exist in destination\nSet OVERWRITE = True to reprocess\n\n\n\n\n\nModify filename creator functions\nRe-run from discovery step to preview\n\n\n\n\n\nLarge files take time (normal)\nSystem automatically uses GDAL optimization\nFiles >1.5GB use optimized chunking", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#performance-tips", - "href": "Jupyterhub/convert_to_geotiff.html#performance-tips", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "File Size Optimization\n\nFiles <1.5GB: Processed whole (fastest)\nFiles >1.5GB: Smart chunking\nFiles >7GB: Ultra-large file handling\n\nCompression\n\nUses ZSTD level 22 (maximum compression)\nAutomatic predictor selection\nIntelligent resampling based on data type\n\nParallel Processing\n\nFor batch processing multiple events, use:\n\nfrom batch_processor_parallel import process_files_parallel", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#advanced-features", - "href": "Jupyterhub/convert_to_geotiff.html#advanced-features", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "from notebooks.notebook_helpers import quick_process\n\nresults = quick_process({\n 'event_name': '202408_TropicalStorm_Debby',\n 'bucket': 'nasa-disasters',\n 'source_path': 'drcs_activations/202408_TropicalStorm_Debby/landsat8',\n 'destination_base': 'drcs_activations_new',\n 'overwrite': False,\n 'filename_creators': FILENAME_CREATORS\n})\n\n\n\nevents = [\n '202408_TropicalStorm_Debby',\n '202409_Hurricane_Example',\n '202410_Wildfire_Sample'\n]\n\nfor event in events:\n config['event_name'] = event\n config['source_path'] = f'drcs_activations/{event}/landsat8'\n processor = SimpleProcessor(config)\n processor.connect_to_s3()\n processor.discover_files()\n processor.process_all()", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/convert_to_geotiff.html#next-steps", - "href": "Jupyterhub/convert_to_geotiff.html#next-steps", - "title": "Jupyter Notebook Guide for Disaster COG Processing", - "section": "", - "text": "Start with the simple template\nRun a small test batch\nVerify output filenames are correct\nProcess full dataset\nCheck results in S3\n\nFor more details, see the main README.md or review the RESAMPLING_GUIDE.md for data type handling.", - "crumbs": [ - "JupyterHub", - "Jupyter Notebook Guide for Disaster COG Processing" - ] - }, - { - "objectID": "data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html", - "href": "data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html", - "title": "Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5", - "section": "", - "text": "Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top", - "crumbs": [ - "Data Flow Diagrams", - "Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5" - ] - }, - { - "objectID": "data_workflow2/test.html", - "href": "data_workflow2/test.html", - "title": "NASA Disasters Documentation", - "section": "", - "text": "Back to top" - }, - { - "objectID": "data_workflow2/NRT_directory_structure.html", - "href": "data_workflow2/NRT_directory_structure.html", - "title": "NRT Directory Structure", - "section": "", - "text": "NRT Directory Structure\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top", - "crumbs": [ - "Data Workflow Diagrams", - "NRT Directory Structure" - ] - }, - { - "objectID": "data_workflow2/NRT_data_download.html", - "href": "data_workflow2/NRT_data_download.html", - "title": "NRT Data Download", - "section": "", - "text": "NRT Data Download\n\n\n\nData Flow Diagram Extending From Acquisition/Creation to User Delivery\n\n\n\n\n\n\n Back to top", - "crumbs": [ - "Data Workflow Diagrams", - "NRT Data Download" - ] - }, - { - "objectID": "workflow2.html", - "href": "workflow2.html", - "title": "NASA Disasters: Data Flow Diagrams", - "section": "", - "text": "Welcome to the homepage for NASA Disasters data flow diagrams. These diagrams summarize the process of how to find, download, and process data for NASA Disasters.\nClick on a dataset name to view the data flow diagram for that dataset.\nView the NASA Disasters Resources\n\nNRT Data Download\nNRT Directory Structure\n\n\n\n\n Back to top", - "crumbs": [ - "Data Workflow Diagrams" - ] - }, - { - "objectID": "jupyterhub.html", - "href": "jupyterhub.html", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "JupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:\n\nAccess powerful computing resources through your web browser\nWrite and execute code in Python, R, Julia, and other languages\nVisualize data with interactive plots and charts\nCollaborate with team members on shared projects\nWork from anywhere without local setup requirements\n\n\n\n\nThe Disasters Hub is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:\n\nPre-configured environments for geospatial analysis\nAccess to disaster-related datasets\nCollaboration tools for response teams\nIntegration with cloud storage services\nScalable computing resources\n\n\n\n\nβœ… No Installation Required - Everything runs in your browser\nβœ… Pre-configured Environments - Common packages already installed\nβœ… Persistent Storage - Your work is saved between sessions\nβœ… Collaboration Ready - Share notebooks with team members\nβœ… Scalable Resources - Access to GPU and high-memory instances when needed", - "crumbs": [ - "JupyterHub" - ] - }, - { - "objectID": "jupyterhub.html#introduction", - "href": "jupyterhub.html#introduction", - "title": "JupyterHub Training Guide - Disasters Hub", - "section": "", - "text": "JupyterHub is a multi-user server that manages and provides web-based Jupyter notebook environments for multiple users. It allows you to:\n\nAccess powerful computing resources through your web browser\nWrite and execute code in Python, R, Julia, and other languages\nVisualize data with interactive plots and charts\nCollaborate with team members on shared projects\nWork from anywhere without local setup requirements\n\n\n\n\nThe Disasters Hub is a specialized JupyterHub instance designed for disaster response and analysis work. It provides:\n\nPre-configured environments for geospatial analysis\nAccess to disaster-related datasets\nCollaboration tools for response teams\nIntegration with cloud storage services\nScalable computing resources\n\n\n\n\nβœ… No Installation Required - Everything runs in your browser\nβœ… Pre-configured Environments - Common packages already installed\nβœ… Persistent Storage - Your work is saved between sessions\nβœ… Collaboration Ready - Share notebooks with team members\nβœ… Scalable Resources - Access to GPU and high-memory instances when needed", - "crumbs": [ - "JupyterHub" - ] - }, - { - "objectID": "quarto-guide.html", - "href": "quarto-guide.html", - "title": "Quarto Guide for Beginners", - "section": "", - "text": "Quarto is an open-source scientific and technical publishing system built on Pandoc. It allows you to create dynamic documents that combine:\n\nNarrative text (written in Markdown)\nCode (Python, R, Julia, Observable JS)\nCode outputs (plots, tables, results)\nEquations, citations, cross-references\n\nThink of Quarto as a powerful tool to create everything from simple documents to complex websites, presentations, and books.\n\n\n\nMultiple outputs from one source - Write once, publish to HTML, PDF, Word, PowerPoint\nLanguage agnostic - Works with Python, R, Julia, and more\nReproducible - Code and narrative in the same document\nProfessional - Publication-quality output", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#what-is-quarto", - "href": "quarto-guide.html#what-is-quarto", - "title": "Quarto Guide for Beginners", - "section": "", - "text": "Quarto is an open-source scientific and technical publishing system built on Pandoc. It allows you to create dynamic documents that combine:\n\nNarrative text (written in Markdown)\nCode (Python, R, Julia, Observable JS)\nCode outputs (plots, tables, results)\nEquations, citations, cross-references\n\nThink of Quarto as a powerful tool to create everything from simple documents to complex websites, presentations, and books.\n\n\n\nMultiple outputs from one source - Write once, publish to HTML, PDF, Word, PowerPoint\nLanguage agnostic - Works with Python, R, Julia, and more\nReproducible - Code and narrative in the same document\nProfessional - Publication-quality output", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#file-types-and-formats", - "href": "quarto-guide.html#file-types-and-formats", - "title": "Quarto Guide for Beginners", - "section": "File Types and Formats", - "text": "File Types and Formats\n\nSource Files\n\n.qmd Files (Quarto Markdown)\nThe primary file type for Quarto documents:\n---\ntitle: \"My Document\"\nformat: html\n---\n\n## Introduction\n\nThis is a Quarto document with **markdown** formatting.\n\n::: {#8c88dc2e .cell execution_count=1}\n``` {.python .cell-code}\n# You can include code\nprint(\"Hello from Python!\")\n\nHello from Python!\n\n:::\n\n#### .ipynb Files (Jupyter Notebooks)\n\nQuarto can directly render Jupyter notebooks:\n\n- Keep your existing notebook workflow\n- Add Quarto features through cell metadata\n- Render notebooks to any format\n\n#### .md Files (Plain Markdown)\n\nStandard Markdown files can be rendered by Quarto, though they lack code execution capabilities.\n\n### Output Formats\n\nQuarto can generate:\n\n| Format | Extension | Use Case |\n|--------|-----------|----------|\n| HTML | .html | Websites, interactive documents |\n| PDF | .pdf | Print publications, reports |\n| Word | .docx | Microsoft Word documents |\n| PowerPoint | .pptx | Presentations |\n| Reveal.js | .html | Interactive HTML presentations |\n| EPUB | .epub | E-books |\n| Markdown | .md | GitHub, other platforms |\n\n## Creating Different Types of Documents\n\n### Basic Document\n\nSimplest Quarto document:\n\n```yaml\n---\ntitle: \"My First Document\"\nauthor: \"Your Name\"\ndate: today\nformat: html\n---\n\n## Section 1\n\nContent goes here.\n\n\n\nMulti-Format Document\nOutput to multiple formats:\n---\ntitle: \"Multi-Format Document\"\nformat:\n html:\n toc: true\n code-fold: true\n pdf:\n documentclass: article\n docx:\n reference-doc: template.docx\n---\n\n\nPresentation (PowerPoint)\n---\ntitle: \"My Presentation\"\nformat:\n pptx:\n slide-level: 2\n---\n\n# Section Title\n\n## Slide 1\n\n- First point\n- Second point\n\n## Slide 2\n\nMore content here.\nImportant: Level 1 headers (#) create section dividers, Level 2 headers (##) create new slides.\n\n\nPresentation (Reveal.js)\n---\ntitle: \"Interactive Presentation\"\nformat:\n revealjs:\n theme: dark\n transition: slide\n---\n\n\nWebsite/Book\nRequires a _quarto.yml configuration file (covered below).", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#yaml-front-matter", - "href": "quarto-guide.html#yaml-front-matter", - "title": "Quarto Guide for Beginners", - "section": "YAML Front Matter", - "text": "YAML Front Matter\nEvery .qmd file starts with YAML front matter between --- markers. This controls document behavior.\n\nEssential YAML Options\n---\ntitle: \"Document Title\" # Required\nsubtitle: \"Optional subtitle\" # Optional\nauthor: \"Author Name\" # Optional\ndate: today # or \"2024-01-15\"\nformat: html # Output format\n---\n\n\nFormat-Specific Options\n\nHTML Options\nformat:\n html:\n toc: true # Table of contents\n toc-depth: 3 # How many header levels\n code-fold: false # Collapsible code\n code-tools: true # Code display options\n theme: cosmo # Visual theme\n css: styles.css # Custom CSS\n\n\nPDF Options\nformat:\n pdf:\n documentclass: article\n geometry:\n - margin=1in\n toc: true\n number-sections: true\n\n\nPowerPoint Options\nformat:\n pptx:\n reference-doc: template.pptx # Custom template\n slide-level: 2 # Which heading creates slides\n incremental: true # Bullets appear one by one", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#the-_quarto.yml-configuration-file", - "href": "quarto-guide.html#the-_quarto.yml-configuration-file", - "title": "Quarto Guide for Beginners", - "section": "The _quarto.yml Configuration File", - "text": "The _quarto.yml Configuration File\nThe _quarto.yml file controls project-level settings for websites and books.\n\nBasic Website Configuration\nproject:\n type: website\n\nwebsite:\n title: \"My Website\"\n navbar:\n left:\n - href: index.qmd\n text: Home\n - href: about.qmd\n text: About\n\n\nSidebar Navigation\nFor documentation sites with a sidebar:\nwebsite:\n sidebar:\n style: \"docked\"\n search: true\n contents:\n - href: index.qmd\n text: Welcome\n - section: \"Getting Started\"\n contents:\n - guide1.qmd\n - guide2.qmd\n - section: \"Advanced\"\n contents:\n - advanced1.qmd\n\n\nAdding Files to Navigation\n\nAdding a Single Document\nwebsite:\n sidebar:\n contents:\n - href: new-document.qmd\n text: \"Display Name\"\n\n\nAdding a Section with Multiple Documents\nwebsite:\n sidebar:\n contents:\n - section: \"Section Name\"\n contents:\n - doc1.qmd\n - doc2.qmd\n - text: \"Custom Name\"\n href: doc3.qmd\n\n\nAdding External Links\nwebsite:\n sidebar:\n tools:\n - icon: github\n href: https://github.com/your/repo\n text: \"GitHub\"\n\n\n\nGlobal Format Settings\nApply settings to all documents:\nformat:\n html:\n theme: cosmo\n css: styles.css\n toc: true\n code-copy: true", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#working-with-code", - "href": "quarto-guide.html#working-with-code", - "title": "Quarto Guide for Beginners", - "section": "Working with Code", - "text": "Working with Code\n\nCode Blocks\n```python\n# Python code\nimport pandas as pd\ndata = pd.read_csv('file.csv')\nprint(data.head())\n```\n\n\nExecutable vs.Β Non-Executable Code\nBy default, code blocks in .qmd files are executable. To display code without running:\n\n::: {#f6819db2 .cell execution_count=2}\n``` {.python .cell-code}\n# This code is shown but not executed\n```\n:::\n\n\n\nInline Code\nExecute code inline: 4\nOutput: 4\n\n\nCode Options\n#| echo: false # Hide code, show output\n#| eval: false # Show code, don't run\n#| warning: false # Hide warnings\n#| message: false # Hide messages\n#| label: fig-plot # For cross-references\n#| fig-cap: \"Caption\" # Figure caption", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#markdown-essentials", - "href": "quarto-guide.html#markdown-essentials", - "title": "Quarto Guide for Beginners", - "section": "Markdown Essentials", - "text": "Markdown Essentials\n\nHeaders\n# Level 1\n## Level 2\n### Level 3\n\n\nText Formatting\n**bold**\n*italic*\n***bold italic***\n`code`\n~~strikethrough~~\n\n\nLists\n- Unordered list\n- Second item\n - Nested item\n\n1. Ordered list\n2. Second item\n 1. Nested item\n\n\nLinks and Images\n[Link text](https://url.com)\n\n![Image caption](path/to/image.png)\n\n![Figure with options](image.png){#fig-id width=50%}\n\n\nTables\n| Column 1 | Column 2 | Column 3 |\n|----------|----------|----------|\n| Data 1 | Data 2 | Data 3 |\n| Data 4 | Data 5 | Data 6 |\n\n\nCross-References\nSee @fig-plot for details.\n\n![My plot](plot.png){#fig-plot}\n\nSee @tbl-results for the data.\n\n| Col 1 | Col 2 |\n|-------|-------|\n| A | B |\n\n: Results {#tbl-results}", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#rendering-documents", - "href": "quarto-guide.html#rendering-documents", - "title": "Quarto Guide for Beginners", - "section": "Rendering Documents", - "text": "Rendering Documents\n\nCommand Line\n# Render a single document\nquarto render document.qmd\n\n# Render to specific format\nquarto render document.qmd --to pdf\n\n# Render entire project\nquarto render\n\n# Preview with live reload\nquarto preview\n\n# Publish\nquarto publish gh-pages\n\n\nFrom RStudio or VS Code\n\nRStudio: Click the β€œRender” button\nVS Code: Click β€œPreview” or use the Quarto extension\n\n\n\nRender Options\nControl rendering in YAML:\nexecute:\n echo: true # Show code\n warning: false # Hide warnings\n error: true # Show errors\n cache: true # Cache results", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#special-features", - "href": "quarto-guide.html#special-features", - "title": "Quarto Guide for Beginners", - "section": "Special Features", - "text": "Special Features\n\nCallout Blocks\n::: {.callout-note}\nThis is a note callout.\n:::\n\n::: {.callout-warning}\nThis is a warning!\n:::\n\n::: {.callout-important}\nThis is important information.\n:::\n\n\nTabsets\n::: {.panel-tabset}\n\n## Tab 1\nContent for tab 1\n\n## Tab 2\nContent for tab 2\n\n:::\n\n\nColumns Layout\n::: {.columns}\n\n::: {.column width=\"50%\"}\nLeft column content\n:::\n\n::: {.column width=\"50%\"}\nRight column content\n:::\n\n:::\n\n\nDiagrams (Mermaid)\n```{mermaid}\ngraph LR\n A[Start] --> B[Process]\n B --> C[End]\n```", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#what-quarto-cannot-do", - "href": "quarto-guide.html#what-quarto-cannot-do", - "title": "Quarto Guide for Beginners", - "section": "What Quarto Cannot Do", - "text": "What Quarto Cannot Do\n\nLimitations\n\nNo Real-Time Collaboration\n\nNot like Google Docs\nUse Git for version control instead\n\nLimited WYSIWYG\n\nMust render to see final output\nNot a visual editor (though RStudio has visual mode)\n\nLaTeX Required for PDF\n\nMust install LaTeX distribution for PDF output\nCan be large download (several GB)\n\nCode Must Be Installed\n\nPython/R/Julia must be installed separately\nNeed required packages installed\n\nNo Dynamic Forms\n\nCannot create user input forms in HTML output\nUse Shiny for interactive applications\n\nProcessing Speed\n\nLarge projects can be slow to render\nUse caching to speed up\n\nNot a Database\n\nCannot query data directly in document\nMust load data first with code\n\nLimited Styling Control\n\nHTML/CSS knowledge needed for custom designs\nPDF styling requires LaTeX knowledge", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#best-practices", - "href": "quarto-guide.html#best-practices", - "title": "Quarto Guide for Beginners", - "section": "Best Practices", - "text": "Best Practices\n\nProject Organization\nmy-project/\nβ”œβ”€β”€ _quarto.yml # Project config\nβ”œβ”€β”€ index.qmd # Homepage\nβ”œβ”€β”€ guide1.qmd # Content files\nβ”œβ”€β”€ guide2.qmd\nβ”œβ”€β”€ images/ # Images folder\nβ”‚ β”œβ”€β”€ logo.png\nβ”‚ └── diagram.svg\nβ”œβ”€β”€ data/ # Data folder\nβ”‚ └── dataset.csv\nβ”œβ”€β”€ scripts/ # Helper scripts\nβ”‚ └── utils.py\n└── _site/ # Generated output (don't edit)\n\n\nFile Naming\n\nUse lowercase, hyphens for spaces: my-document.qmd\nBe descriptive: serverless-monitoring.qmd not doc1.qmd\nGroup related files: tutorial-1.qmd, tutorial-2.qmd\n\n\n\nYAML Best Practices\n---\n# Put most important info first\ntitle: \"Clear, Descriptive Title\"\nsubtitle: \"Helpful subtitle\"\nauthor: \"Author Name\"\ndate: today\n\n# Group related options\nformat:\n html:\n toc: true\n theme: cosmo\n\n# Use comments\nexecute:\n echo: true # Show code by default\n---\n\n\nCode Best Practices\n\nUse meaningful labels: {#fig-scatter} not {#fig-1}\nSet global options in YAML instead of repeating\nCache expensive computations: cache: true\nOrganize code into separate scripts if complex\nTest frequently - render often to catch errors early", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#common-issues-and-solutions", - "href": "quarto-guide.html#common-issues-and-solutions", - "title": "Quarto Guide for Beginners", - "section": "Common Issues and Solutions", - "text": "Common Issues and Solutions\n\nIssue: β€œFile not found”\nProblem: Referenced image or data file not found\nSolution: Use relative paths from the .qmd file location\n# Good\n![Logo](images/logo.png)\n\n# Bad (absolute paths break portability)\n![Logo](/Users/name/project/images/logo.png)\n\n\nIssue: Code not executing\nProblem: Code block shown but not running\nSolution: Check code block syntax\n# Correct (with braces)\n\n::: {#65165942 .cell execution_count=3}\n``` {.python .cell-code}\nprint(\"Hello\")\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nHello\n```\n:::\n:::\n\n\n# Wrong (no braces - just displays)\n```python\nprint(\"Hello\")\n```\n\n\nIssue: Links not working in rendered site\nProblem: Cross-references broken after rendering\nSolution: Use .qmd extension in links - Quarto converts automatically\n# Correct\n[See guide](guide.qmd)\n\n# Incorrect\n[See guide](guide.html)\n\n\nIssue: Changes not showing\nProblem: Made changes but don’t see them in preview\nSolution: - Refresh browser (hard refresh: Cmd+Shift+R or Ctrl+Shift+R) - Stop and restart quarto preview - Check if file is saved\n\n\nIssue: Table of contents not showing\nProblem: TOC enabled but not visible\nSolution: Need at least 2 headers for TOC to appear\n---\nformat:\n html:\n toc: true\n---\n\n## First Section\nContent\n\n## Second Section\nMore content", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#quick-reference", - "href": "quarto-guide.html#quick-reference", - "title": "Quarto Guide for Beginners", - "section": "Quick Reference", - "text": "Quick Reference\n\nCommon Quarto Commands\nquarto render # Render project\nquarto render file.qmd # Render single file\nquarto preview # Live preview\nquarto create project # New project wizard\nquarto check # Check installation\nquarto --help # Help\n\n\nCommon YAML Settings\ntitle: \"Title\"\nauthor: \"Name\"\ndate: today\nformat: html\ntoc: true\nnumber-sections: true\ncode-fold: true\ntheme: cosmo\n\n\nFormat Options Quick Reference\n# Multiple formats\nformat:\n html: default\n pdf: default\n docx: default\n\n# Or with options\nformat:\n html:\n theme: cosmo\n pdf:\n documentclass: article", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#next-steps", - "href": "quarto-guide.html#next-steps", - "title": "Quarto Guide for Beginners", - "section": "Next Steps", - "text": "Next Steps\n\nLearning Resources\n\nOfficial Docs: https://quarto.org/docs/guide/\nGallery: https://quarto.org/docs/gallery/\nExamples: Browse _site/ in this project for rendered examples\n\n\n\nPractice Exercises\n\nCreate a simple .qmd document with text and headers\nAdd a code block that creates a simple plot\nRender to HTML, PDF, and Word\nCreate a presentation with 5 slides\nAdd your document to the website navigation\n\n\n\nGetting Help\n\nCheck the Quarto documentation\nSearch GitHub Issues\nAsk on Quarto Discussions", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "quarto-guide.html#summary", - "href": "quarto-guide.html#summary", - "title": "Quarto Guide for Beginners", - "section": "Summary", - "text": "Summary\nQuarto is powerful for creating reproducible, multi-format documents. Key takeaways:\nβœ… Files: Create .qmd files with YAML + Markdown + Code βœ… Formats: Output to HTML, PDF, Word, PowerPoint, and more βœ… Configuration: Use _quarto.yml for project-level settings βœ… Navigation: Add files to sidebar in _quarto.yml βœ… Rendering: Use quarto render or IDE buttons βœ… Limitations: Know what Quarto can’t do (real-time collab, dynamic forms) βœ… Best Practices: Organize files, use clear names, test often\nReady to create? Start with a simple document and experiment!", - "crumbs": [ - "Documentation", - "Quarto Guide for Beginners" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html", - "href": "Presentations/aws-grafana-tutorial.html", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "", - "text": "This page provides introductory instructions and guidance for integrating Amazon Web Services (AWS) with Grafana for monitoring and observability.\n\n\n\n\n\n\nNoteAbout This Tutorial\n\n\n\nThis presentation covers AWS and Grafana monitoring setup, configuration, and best practices.\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size (150MB), it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Walkthrough of AWS Console and AWS SSO - NASA SMCE and SMDC for Cloud Management - Common AWS S3 operators - Grafana setup and support\nDuration: [43 minutes]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#aws-and-grafana-monitoring-tutorial", - "href": "Presentations/aws-grafana-tutorial.html#aws-and-grafana-monitoring-tutorial", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "", - "text": "This page provides introductory instructions and guidance for integrating Amazon Web Services (AWS) with Grafana for monitoring and observability.\n\n\n\n\n\n\nNoteAbout This Tutorial\n\n\n\nThis presentation covers AWS and Grafana monitoring setup, configuration, and best practices.\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size (150MB), it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Walkthrough of AWS Console and AWS SSO - NASA SMCE and SMDC for Cloud Management - Common AWS S3 operators - Grafana setup and support\nDuration: [43 minutes]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#what-youll-learn", - "href": "Presentations/aws-grafana-tutorial.html#what-youll-learn", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "What You’ll Learn", - "text": "What You’ll Learn\nThis tutorial covers the following topics:\n\nπŸ”§ Setup and Configuration\n\nAWS account setup and IAM configuration\nGrafana installation and initial setup\nLog aggregation and analysis\n\n\n\nπŸš€ Advanced Topics\n\nMulti-account AWS monitoring\nCost management and optimization\nTroubleshooting common issues", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#prerequisites", - "href": "Presentations/aws-grafana-tutorial.html#prerequisites", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Prerequisites", - "text": "Prerequisites\nBefore starting this tutorial, ensure you have:\n\nAWS Account with appropriate IAM permissions\nBasic understanding of AWS services (EC2, CloudWatch, IAM)\nGrafana installed or access to a Grafana instance\nNetwork access to AWS APIs and Grafana", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#technical-details", - "href": "Presentations/aws-grafana-tutorial.html#technical-details", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Technical Details", - "text": "Technical Details\n\nEmbedding Method\nThis presentation is embedded using Google Slides’ publish-to-web feature with auto-advance enabled:\n<iframe src=\"https://docs.google.com/presentation/d/e/[ID]/pubembed?start=true&loop=false&delayms=3000\"\n width=\"1280\"\n height=\"749\"\n allowfullscreen=\"true\">\n</iframe>\n\n\nURL Parameters\n\n\n\nParameter\nValue\nDescription\n\n\n\n\nstart\ntrue\nAuto-start presentation when loaded\n\n\nloop\nfalse\nDon’t loop slides continuously\n\n\ndelayms\n3000\n3-second delay between auto-advanced slides\n\n\n\n\n\nEmbed Features\nThis embed uses: - Published URL (/pubembed) - Publicly accessible without authentication - Auto-advance - Presentation starts automatically - Large format - 1280x749 for better readability - Fullscreen support - Expandable for detailed viewing", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#related-resources", - "href": "Presentations/aws-grafana-tutorial.html#related-resources", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Related Resources", - "text": "Related Resources\n\nAWS Documentation\n\nAWS CloudWatch Documentation\nAWS IAM Best Practices\nAWS Well-Architected Framework\n\n\n\nGrafana Resources\n\nGrafana CloudWatch Data Source\nGrafana Dashboard Best Practices\nGrafana Alerting Guide", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#getting-started-checklist", - "href": "Presentations/aws-grafana-tutorial.html#getting-started-checklist", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Getting Started Checklist", - "text": "Getting Started Checklist\n\n\n\n\n\n\nImportantBefore You Begin\n\n\n\nComplete these steps to get the most out of this tutorial:\n\nHave AWS account credentials ready\nInstall AWS CLI (optional but recommended)\nSet up Grafana instance or have access to one\nReview IAM permissions requirements\nPrepare note-taking materials\nBookmark this page for future reference", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#support-and-questions", - "href": "Presentations/aws-grafana-tutorial.html#support-and-questions", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Support and Questions", - "text": "Support and Questions\n\nNeed Help?\nIf you encounter issues or have questions:\n\nReview the presentation - Most common questions are addressed in the slides\nCheck AWS documentation - Official docs have detailed troubleshooting\nGrafana community - Active community forums for Grafana-specific questions\nNASA Disasters team - Contact the infrastructure team for project-specific help\n\n\n\nFeedback\nWe welcome feedback on this tutorial! If you have suggestions for improvements or find any issues, please reach out to the infrastructure team.", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/aws-grafana-tutorial.html#conclusion", - "href": "Presentations/aws-grafana-tutorial.html#conclusion", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "Conclusion", - "text": "Conclusion\nThis tutorial provides comprehensive guidance for setting up and using AWS with Grafana for monitoring and observability. The combination of AWS’s robust cloud infrastructure and Grafana’s powerful visualization capabilities creates a strong foundation for modern monitoring solutions.\nKey Takeaways:\n\n\nAWS and Grafana integration enables powerful monitoring\n\n\nProper configuration is essential for security and performance\n\n\nFollowing best practices ensures scalable, maintainable solutions\n\n\nGood luck with your AWS and Grafana monitoring journey!", - "crumbs": [ - "Presentations", - "PowerPoints", - "AWS and Grafana Monitoring Tutorial" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html", - "href": "Presentations/disasters-powerpoint-template.html", - "title": "NASA Disasters PowerPoint Template", - "section": "", - "text": "Note\n\n\n\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\nPresentation Viewer\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nDownload: Click the link above, then go to File β†’ Download β†’ Microsoft PowerPoint (.pptx)\nPresent mode: Click the link above and press the β€œPresent” button in Google Slides for full-screen mode\n\n\n\n\n\n\n\n\n\n Back to top", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html#embedded-aws-presentation", - "href": "Presentations/disasters-powerpoint-template.html#embedded-aws-presentation", - "title": "NASA Disasters PowerPoint Template", - "section": "", - "text": "This page demonstrates embedding an external PowerPoint presentation hosted on Google Drive.\n\n\n\n\n\n\nNote\n\n\n\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nDownload: Click the link above, then go to File β†’ Download β†’ Microsoft PowerPoint (.pptx)\nPresent mode: Click the link above and press the β€œPresent” button in Google Slides for full-screen mode", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html#technical-details", - "href": "Presentations/disasters-powerpoint-template.html#technical-details", - "title": "NASA Disasters PowerPoint Template", - "section": "Technical Details", - "text": "Technical Details\n\nEmbedding Method\nThis presentation is embedded using an HTML <iframe> element that points to the Google Slides embed URL:\n<iframe src=\"https://docs.google.com/presentation/d/[ID]/embed?start=false&loop=false&delayms=3000\"\n width=\"960\"\n height=\"569\"\n allowfullscreen=\"true\">\n</iframe>\n\n\nURL Parameters\n\n\n\nParameter\nValue\nDescription\n\n\n\n\nstart\nfalse\nDon’t auto-start presentation\n\n\nloop\nfalse\nDon’t loop slides\n\n\ndelayms\n3000\nDelay between slides in auto-play (ms)\n\n\n\n\n\nEmbedding Other Presentations\nTo embed your own Google Slides presentation:\n\nGet the presentation ID from your Google Slides URL:\nhttps://docs.google.com/presentation/d/[THIS-IS-THE-ID]/edit\nCreate the embed URL:\nhttps://docs.google.com/presentation/d/[YOUR-ID]/embed?start=false&loop=false&delayms=3000\nAdd to your .qmd file:\n<iframe src=\"YOUR-EMBED-URL\"\n width=\"960\"\n height=\"569\"\n allowfullscreen=\"true\">\n</iframe>\nEnsure sharing is enabled: The presentation must be set to β€œAnyone with the link can view”\n\n\n\nResponsive Sizing\nFor responsive iframe sizing, you can use CSS:\n.responsive-iframe {\n position: relative;\n width: 100%;\n padding-bottom: 56.25%; /* 16:9 aspect ratio */\n height: 0;\n}\n\n.responsive-iframe iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\nThen wrap your iframe:\n<div class=\"responsive-iframe\">\n <iframe src=\"...\"></iframe>\n</div>", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html#limitations-and-considerations", - "href": "Presentations/disasters-powerpoint-template.html#limitations-and-considerations", - "title": "NASA Disasters PowerPoint Template", - "section": "Limitations and Considerations", - "text": "Limitations and Considerations\n\n\n\n\n\n\nWarningImportant Limitations\n\n\n\n\nRequires internet connection - Embedded presentations load from Google servers\nSharing permissions - Presentation must be publicly accessible or shared with viewers\nGoogle account dependency - If the presentation owner deletes their account or changes permissions, the embed will break\nLimited offline support - Unlike locally hosted files, embedded presentations won’t work offline\nThird-party dependency - Relies on Google’s infrastructure and terms of service\n\n\n\n\nBest Practices\nβœ… Do: - Use for external presentations you don’t control - Test embedding before sharing widely - Provide alternative download/view links - Document the source and owner\n❌ Don’t: - Embed sensitive or proprietary information - Rely solely on embedded content for critical documentation - Assume it will work indefinitely without maintenance - Embed presentations without permission", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html#alternative-embedding-methods", - "href": "Presentations/disasters-powerpoint-template.html#alternative-embedding-methods", - "title": "NASA Disasters PowerPoint Template", - "section": "Alternative Embedding Methods", - "text": "Alternative Embedding Methods\n\nOption 1: PDF Embed\nConvert PowerPoint to PDF and embed:\n<iframe src=\"presentation.pdf\"\n width=\"100%\"\n height=\"600px\">\n</iframe>\n\n\nOption 2: Quarto Native Presentation\nCreate a native Quarto presentation using .qmd files with presentation formats like PowerPoint or Reveal.js.\nAdvantages: - Full version control - Offline support - Customizable with Quarto features - No external dependencies\nSee the Quarto Guide for Beginners for more details on creating presentations.\n\n\nOption 3: Static Images\nExport slides as images and display them:\n![Slide 1](images/slide-1.png)\n\n![Slide 2](images/slide-2.png)", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-powerpoint-template.html#conclusion", - "href": "Presentations/disasters-powerpoint-template.html#conclusion", - "title": "NASA Disasters PowerPoint Template", - "section": "Conclusion", - "text": "Conclusion\nThis page successfully demonstrates embedding a PowerPoint presentation from Google Drive into a Quarto document. This method works well for:\n\nSharing presentations created by others\nQuick embedding without conversion\nMaintaining a single source presentation\n\nFor production use, consider the tradeoffs between embedded content and native Quarto presentations based on your needs for control, offline access, and long-term maintenance.", - "crumbs": [ - "Presentations", - "PowerPoints", - "Disasters Logo and Template Overview" - ] - }, - { - "objectID": "Presentations/disasters-training-1.html", - "href": "Presentations/disasters-training-1.html", - "title": "AWS and Grafana Monitoring Tutorial", - "section": "", - "text": "Back to top" - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "", - "text": "This page provides comprehensive instructions and guidance for using JupyterHub and performing data conversions for the Disasters project.\n\n\n\n\n\n\nNoteAbout This Tutorial\n\n\n\nThis presentation covers JupyterHub setup, data transformation workflows, and conversion best practices.\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Live demonstrations of JupyterHub setup and navigation - Step-by-step data conversion walkthroughs - Real-world examples of geospatial data processing - Troubleshooting common issues and best practices\nDuration: [Add duration here]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#jupyterhub-and-data-conversions-tutorial", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#jupyterhub-and-data-conversions-tutorial", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "", - "text": "This page provides comprehensive instructions and guidance for using JupyterHub and performing data conversions for the Disasters project.\n\n\n\n\n\n\nNoteAbout This Tutorial\n\n\n\nThis presentation covers JupyterHub setup, data transformation workflows, and conversion best practices.\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Live demonstrations of JupyterHub setup and navigation - Step-by-step data conversion walkthroughs - Real-world examples of geospatial data processing - Troubleshooting common issues and best practices\nDuration: [Add duration here]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#what-youll-learn", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#what-youll-learn", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "What You’ll Learn", - "text": "What You’ll Learn\nThis tutorial covers the following topics:\n\nπŸš€ JupyterHub Basics\n\nJupyterHub environment overview\nNavigating the JupyterHub interface\nCreating and managing notebooks\n\n\n\nπŸ”„ Data Conversion Workflows\n\nConnecting to AWS S3 buckets\nRetrieving data\nFilename transformations\nGeoTIFF generation and optimization\nWorking with COG (Cloud Optimized GeoTIFF)", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#prerequisites", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#prerequisites", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Prerequisites", - "text": "Prerequisites\nBefore starting this tutorial, ensure you have:\n\nJupyterHub access with appropriate credentials\nBasic Python knowledge (numpy, pandas recommended)\nUnderstanding of geospatial concepts (projections, coordinate systems)\nFamiliarity with notebook environments (Jupyter, JupyterLab)", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#technical-details", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#technical-details", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Technical Details", - "text": "Technical Details\n\nEmbedding Method\nThis presentation is embedded using Google Slides’ embed feature:\n<iframe src=\"https://docs.google.com/presentation/d/[ID]/embed?start=true&loop=false&delayms=3000\"\n width=\"1280\"\n height=\"749\"\n allowfullscreen=\"true\">\n</iframe>\n\n\nURL Parameters\n\n\n\nParameter\nValue\nDescription\n\n\n\n\nstart\ntrue\nAuto-start presentation when loaded\n\n\nloop\nfalse\nDon’t loop slides continuously\n\n\ndelayms\n3000\n3-second delay between auto-advanced slides", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#related-resources", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#related-resources", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Related Resources", - "text": "Related Resources\n\nJupyterHub Documentation\n\nJupyterHub Documentation\nJupyter Notebook Documentation\nJupyterLab Documentation\n\n\n\nGeospatial Data Resources\n\nGDAL Documentation\nRasterio Documentation\nCOG Specification\n\n\n\nPython Libraries\n\nNumPy Documentation\nPandas Documentation\nXarray Documentation\n\n\n\nAdditional Guides\n\nJupyterHub Training Guide - Detailed JupyterHub setup\nConvert to GeoTIFF Guide - Step-by-step conversion instructions\n\n\n\n\nFeedback\nWe welcome feedback on this tutorial! If you have suggestions for improvements or find any issues, please reach out to the data team.", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#getting-started-checklist", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#getting-started-checklist", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Getting Started Checklist", - "text": "Getting Started Checklist\n\n\n\n\n\n\nImportantBefore You Begin\n\n\n\nComplete these steps to get the most out of this tutorial:\n\nHave JupyterHub login credentials ready\nVerify Python environment and required libraries\nDownload sample datasets if needed\nReview basic geospatial data concepts\nPrepare note-taking materials\nBookmark this page for future reference", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#common-data-conversion-tasks", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#common-data-conversion-tasks", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Common Data Conversion Tasks", - "text": "Common Data Conversion Tasks\n\nConverting NetCDF to GeoTIFF\nimport xarray as xr\nimport rasterio\nfrom rasterio.transform import from_bounds\n\n# Open NetCDF file\nds = xr.open_dataset('input.nc')\n\n# Convert to GeoTIFF\n# (See full tutorial for complete workflow)\n\n\nCreating Cloud Optimized GeoTIFFs\nfrom rio_cogeo.cogeo import cog_translate\nfrom rio_cogeo.profiles import cog_profiles\n\n# Convert to COG\ncog_translate(\n 'input.tif',\n 'output_cog.tif',\n cog_profiles.get('lzw')\n)", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#support-and-questions", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#support-and-questions", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Support and Questions", - "text": "Support and Questions\n\nNeed Help?\nIf you encounter issues or have questions:\n\nReview the presentation - Most common questions are addressed in the slides\nCheck JupyterHub documentation - Official docs have detailed troubleshooting\nConsult data conversion guides - Specific format conversions have dedicated pages\nNASA Disasters team - Contact the data team for project-specific help\n\n\n\nFeedback\nWe welcome feedback on this tutorial! If you have suggestions for improvements or find any issues, please reach out to the data team.", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Presentations/jupyterhub-data-conversions-tutorial.html#conclusion", - "href": "Presentations/jupyterhub-data-conversions-tutorial.html#conclusion", - "title": "JupyterHub and Data Conversions Tutorial", - "section": "Conclusion", - "text": "Conclusion\nThis tutorial provides comprehensive guidance for using JupyterHub and performing data conversions for the Disasters project.", - "crumbs": [ - "Presentations", - "PowerPoints", - "JupyterHub and Data Conversions Tutorial" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#setup-clone-required-repositorythis-notebook-requires-the-disasters-aws-conversion-repository-for-processing-functions", - "href": "Jupyterhub/simple_disaster_template.html#setup-clone-required-repositorythis-notebook-requires-the-disasters-aws-conversion-repository-for-processing-functions", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ”§ Setup: Clone Required RepositoryThis notebook requires the disasters-aws-conversion repository for processing functions:", - "text": "πŸ”§ Setup: Clone Required RepositoryThis notebook requires the disasters-aws-conversion repository for processing functions:\n\nimport osimport subprocess# Check if disasters-aws-conversion exists, if not clone itrepo_name = \"disasters-aws-conversion\"repo_url = \"https://github.com/Disasters-Learning-Portal/disasters-aws-conversion.git\"if not os.path.exists(f\"../{repo_name}\"): print(f\"πŸ“₯ Cloning {repo_name} repository...\") try: result = subprocess.run( [\"git\", \"clone\", repo_url, f\"../{repo_name}\"], capture_output=True, text=True, check=True ) print(f\"βœ… Successfully cloned {repo_name}\") except subprocess.CalledProcessError as e: print(f\"❌ Error cloning repository: {e.stderr}\")else: print(f\"βœ… {repo_name} repository already exists\")\n\n\n# ========================================\n# INPUTS\n# ========================================\n\n# S3 Paths\nBUCKET = 'nasa-disasters' # S3 bucket (DO NOT CHANGE)\nDESTINATION_BASE = 'drcs_activations_new' # Where to save COGs in S3 bucket (DO NOT CHANGE)\nGEOTIFF_DIR = 'drcs_activations' # This is where all non-converted files should be placed\n\n\n# Event Details\nEVENT_NAME = '202510_Flood_AK' # Your sensor or product name (e.g, Sentinel-1, Planet, Landsat)\nSUB_PRODUCT_NAME = 'aria' # Sub-directories within PRODUCT_NAME (RGB, trueColor, SWIR, etc.). Can leave blank and it will read from PRODUCT_NAME.\nSOURCE_PATH = f'{GEOTIFF_DIR}/{EVENT_NAME}/{SUB_PRODUCT_NAME}' # Where your files are\n\n\n# Processing Options\nOVERWRITE = False # Set to True to replace existing files\nVERIFY = True # Set to True to verify results after processing\nSAVE_RESULTS = True # Set to False to skip saving results CSV to /output directory\n\nprint(f\"Event: {GEOTIFF_DIR}\")\nprint(f\"Source: s3://{BUCKET}/{SOURCE_PATH}\")\nprint(f\"Destination: s3://{BUCKET}/{DESTINATION_BASE}/\")\n\nEvent: drcs_activations\nSource: s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria\nDestination: s3://nasa-disasters/drcs_activations_new/", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-0-setup---clone-required-repositoryrun-this-cell-first-this-notebook-requires-the-disasters-aws-conversion-repository-for-processing-functions.", - "href": "Jupyterhub/simple_disaster_template.html#step-0-setup---clone-required-repositoryrun-this-cell-first-this-notebook-requires-the-disasters-aws-conversion-repository-for-processing-functions.", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ”§ Step 0: Setup - Clone Required RepositoryRun this cell first! This notebook requires the disasters-aws-conversion repository for processing functions.", - "text": "πŸ”§ Step 0: Setup - Clone Required RepositoryRun this cell first! This notebook requires the disasters-aws-conversion repository for processing functions.\n\nimport osimport subprocess# Check if disasters-aws-conversion exists, if not clone itrepo_name = \"disasters-aws-conversion\"repo_url = \"https://github.com/Disasters-Learning-Portal/disasters-aws-conversion.git\"if not os.path.exists(f\"../{repo_name}\"): print(f\"πŸ“₯ Cloning {repo_name} repository...\") try: result = subprocess.run( [\"git\", \"clone\", repo_url, f\"../{repo_name}\"], capture_output=True, text=True, check=True ) print(f\"βœ… Successfully cloned {repo_name}\") except subprocess.CalledProcessError as e: print(f\"❌ Error cloning repository: {e.stderr}\")else: print(f\"βœ… {repo_name} repository already exists\")\n\n\n# ========================================\n# INPUTS\n# ========================================\n\n# S3 Paths\nBUCKET = 'nasa-disasters' # S3 bucket (DO NOT CHANGE)\nDESTINATION_BASE = 'drcs_activations_new' # Where to save COGs in S3 bucket (DO NOT CHANGE)\nGEOTIFF_DIR = 'drcs_activations' # This is where all non-converted files should be placed\n\n\n# Event Details\nEVENT_NAME = '202510_Flood_AK' # Your sensor or product name (e.g, Sentinel-1, Planet, Landsat)\nSUB_PRODUCT_NAME = 'aria' # Sub-directories within PRODUCT_NAME (RGB, trueColor, SWIR, etc.). Can leave blank and it will read from PRODUCT_NAME.\nSOURCE_PATH = f'{GEOTIFF_DIR}/{EVENT_NAME}/{SUB_PRODUCT_NAME}' # Where your files are\n\n\n# Processing Options\nOVERWRITE = False # Set to True to replace existing files\nVERIFY = True # Set to True to verify results after processing\nSAVE_RESULTS = True # Set to False to skip saving results CSV to /output directory\n\nprint(f\"Event: {GEOTIFF_DIR}\")\nprint(f\"Source: s3://{BUCKET}/{SOURCE_PATH}\")\nprint(f\"Destination: s3://{BUCKET}/{DESTINATION_BASE}/\")\n\nEvent: drcs_activations\nSource: s3://nasa-disasters/drcs_activations/202510_Flood_AK/aria\nDestination: s3://nasa-disasters/drcs_activations_new/", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#tips-troubleshooting-workflow-summary1.-setup---clone-disasters-aws-conversion-repository-step-02.-configure-basic-settings-step-13.-list-files-from-s3-to-see-naming-patterns-step-24.-define-functions-to-transform-filenames-step-35.-preview-transformations-step-46.-process-all-files-step-57.-review-results-step-6-common-issues1.-modulenotfounderror-no-module-named-core-or-import-errors---run-step-0-first-to-clone-the-disasters-aws-conversion-repository---restart-kernel-and-run-all-cells-from-the-beginning2.-no-files-found---check-source_path-in-step-1---verify-bucket-permissions---ensure-files-have-.tif-extension3.-wrong-filename-transformations---review-actual-filenames-in-step-2---adjust-functions-in-step-3---re-run-step-4-to-preview4.-files-being-skipped---files-already-exist-in-destination---set-overwrite-true-in-step-15.-processing-errors---check-aws-credentials---verify-s3-write-permissions---check-available-disk-space-for-temp-files-need-more-controluse-the-full-template-at-disaster_processing_template.ipynb-for--manual-chunk-configuration--custom-compression-settings--detailed-memory-management--advanced-processing-options", - "href": "Jupyterhub/simple_disaster_template.html#tips-troubleshooting-workflow-summary1.-setup---clone-disasters-aws-conversion-repository-step-02.-configure-basic-settings-step-13.-list-files-from-s3-to-see-naming-patterns-step-24.-define-functions-to-transform-filenames-step-35.-preview-transformations-step-46.-process-all-files-step-57.-review-results-step-6-common-issues1.-modulenotfounderror-no-module-named-core-or-import-errors---run-step-0-first-to-clone-the-disasters-aws-conversion-repository---restart-kernel-and-run-all-cells-from-the-beginning2.-no-files-found---check-source_path-in-step-1---verify-bucket-permissions---ensure-files-have-.tif-extension3.-wrong-filename-transformations---review-actual-filenames-in-step-2---adjust-functions-in-step-3---re-run-step-4-to-preview4.-files-being-skipped---files-already-exist-in-destination---set-overwrite-true-in-step-15.-processing-errors---check-aws-credentials---verify-s3-write-permissions---check-available-disk-space-for-temp-files-need-more-controluse-the-full-template-at-disaster_processing_template.ipynb-for--manual-chunk-configuration--custom-compression-settings--detailed-memory-management--advanced-processing-options", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ’‘ Tips & Troubleshooting### Workflow Summary:1. Setup - Clone disasters-aws-conversion repository (Step 0)2. Configure basic settings (Step 1)3. List files from S3 to see naming patterns (Step 2)4. Define functions to transform filenames (Step 3)5. Preview transformations (Step 4)6. Process all files (Step 5)7. Review results (Step 6)### Common Issues:1. β€œModuleNotFoundError: No module named β€˜core’” or import errors - Run Step 0 first to clone the disasters-aws-conversion repository - Restart kernel and run all cells from the beginning2. β€œNo files found” - Check SOURCE_PATH in Step 1 - Verify bucket permissions - Ensure files have .tif extension3. Wrong filename transformations - Review actual filenames in Step 2 - Adjust functions in Step 3 - Re-run Step 4 to preview4. Files being skipped - Files already exist in destination - Set OVERWRITE = True in Step 15. Processing errors - Check AWS credentials - Verify S3 write permissions - Check available disk space for temp files### Need More Control?Use the full template at disaster_processing_template.ipynb for:- Manual chunk configuration- Custom compression settings- Detailed memory management- Advanced processing options", - "text": "πŸ’‘ Tips & Troubleshooting### Workflow Summary:1. Setup - Clone disasters-aws-conversion repository (Step 0)2. Configure basic settings (Step 1)3. List files from S3 to see naming patterns (Step 2)4. Define functions to transform filenames (Step 3)5. Preview transformations (Step 4)6. Process all files (Step 5)7. Review results (Step 6)### Common Issues:1. β€œModuleNotFoundError: No module named β€˜core’” or import errors - Run Step 0 first to clone the disasters-aws-conversion repository - Restart kernel and run all cells from the beginning2. β€œNo files found” - Check SOURCE_PATH in Step 1 - Verify bucket permissions - Ensure files have .tif extension3. Wrong filename transformations - Review actual filenames in Step 2 - Adjust functions in Step 3 - Re-run Step 4 to preview4. Files being skipped - Files already exist in destination - Set OVERWRITE = True in Step 15. Processing errors - Check AWS credentials - Verify S3 write permissions - Check available disk space for temp files### Need More Control?Use the full template at disaster_processing_template.ipynb for:- Manual chunk configuration- Custom compression settings- Detailed memory management- Advanced processing options", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "Jupyterhub/simple_disaster_template.html#step-0-setup---clone-required-repository", - "href": "Jupyterhub/simple_disaster_template.html#step-0-setup---clone-required-repository", - "title": "🌍 Simple Disaster COG Processing", - "section": "πŸ”§ Step 0: Setup - Clone Required Repository", - "text": "πŸ”§ Step 0: Setup - Clone Required Repository\nRun this cell first! This notebook requires the disasters-aws-conversion repository for processing functions.\n\nimport os\nimport subprocess\n\n# Check if disasters-aws-conversion exists, if not clone it\nrepo_name = \"disasters-aws-conversion\"\nrepo_url = \"https://github.com/Disasters-Learning-Portal/disasters-aws-conversion.git\"\n\nif not os.path.exists(repo_name):\n print(f\"πŸ“₯ Cloning {repo_name} repository...\")\n try:\n result = subprocess.run(\n [\"git\", \"clone\", repo_url, f\"{repo_name}\"],\n capture_output=True,\n text=True,\n check=True\n )\n print(f\"βœ… Successfully cloned {repo_name}\")\n except subprocess.CalledProcessError as e:\n print(f\"❌ Error cloning repository: {e.stderr}\")\nelse:\n print(f\"βœ… {repo_name} repository already exists\")", - "crumbs": [ - "JupyterHub", - "🌍 Simple Disaster COG Processing" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html", - "href": "AWS/AWS_SSO_Remote_Server.html", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "This guide explains how to use your AWS SSO credentials from your local machine on remote servers (like JupyterHub or SSH servers) without storing permanent credentials.\n\n\n\n\n\nβœ… Completed AWS SSO Setup Guide on your local machine\nβœ… SSH/SCP access to your remote server\nβœ… AWS CLI v2 installed on the remote server\n\n\n\n\n\nAWS SSO generates temporary credentials stored in:\n\nConfiguration: ~/.aws/config (SSO profile settings)\nCredentials Cache: ~/.aws/sso/cache/ (temporary session tokens)\n\nTo use SSO on a remote server, you need to:\n\nCopy the SSO profile configuration once\nSync the temporary credentials cache regularly (before each session)\n\n\n\n\n\n\n\nFirst, copy your SSO profile configuration from your local machine to the remote server:\nLinux/macOS:\n# Copy the AWS config file containing your SSO profile\nscp ~/.aws/config username@remote-host:~/.aws/config\nWindows (PowerShell):\n# Copy the AWS config file containing your SSO profile\nscp \"$env:USERPROFILE\\.aws\\config\" username@remote-host:~/.aws/config\nAlternative: If you have other profiles in your config, you can manually copy just the SSO section:\nLinux/macOS:\n# View your local SSO configuration\ncat ~/.aws/config\nWindows (PowerShell):\n# View your local SSO configuration\nGet-Content \"$env:USERPROFILE\\.aws\\config\"\nThen SSH into your remote server and create/edit ~/.aws/config:\n[profile disasters-sso]\nsso_session = disasters\nsso_account_id = 867530900000\nsso_role_name = Project-Power-User\nregion = us-east-1\noutput = json\n\n[sso-session disasters]\nsso_start_url = https://d-9067c5bbc5.awsapps.com/start/#\nsso_region = us-east-1\nsso_registration_scopes = sso:account:access\nπŸ’‘ Important: Replace the account ID, role name, and SSO URL with your actual values from the local AWS SSO setup.\n\n\n\n\n\nSince SSO credentials are temporary and expire, you’ll need to sync them from your local machine to the remote server regularly. Below are automated solutions for both Windows and Linux.\n\n\n\n\n\n\nOpen PowerShell and run:\nTest-Path $PROFILE\nIf it returns False, create the profile:\nNew-Item -Type File -Path $PROFILE -Force\n\n\n\nEdit your PowerShell profile:\nnotepad $PROFILE\nAdd the following function (replace username and remote-host with your actual values):\nfunction disasterlogin {\n try {\n Write-Host \"Logging into AWS SSO...\" -ForegroundColor Yellow\n aws sso login --profile disasters-sso\n\n Write-Host \"Copying SSO cache to remote server...\" -ForegroundColor Yellow\n scp -r \"$env:USERPROFILE\\.aws\\sso\\cache\\*\" username@remote-host:~/.aws/sso/cache/\n\n Write-Host \"Complete!\" -ForegroundColor Green\n }\n catch {\n Write-Host \"Error: $_\" -ForegroundColor Red\n }\n}\n\n\n\nClose and reopen PowerShell, or run:\n. $PROFILE\n\n\n\nFrom now on, simply run:\ndisasterlogin\nThis will:\n\nPrompt you to log in via AWS SSO in your browser\nAutomatically copy the temporary credentials to your remote server\nDisplay status updates\n\n\n\n\n\n\n\n\nEdit your shell profile file (choose based on your shell):\n# For bash\nnano ~/.bashrc\n\n# For zsh (macOS default)\nnano ~/.zshrc\nAdd the following function (replace username and remote-host with your actual values):\ndisasterlogin() {\n echo -e \"\\033[1;33mLogging into AWS SSO...\\033[0m\"\n aws sso login --profile disasters-sso\n\n if [ $? -eq 0 ]; then\n echo -e \"\\033[1;33mCopying SSO cache to remote server...\\033[0m\"\n scp -r ~/.aws/sso/cache/* username@remote-host:~/.aws/sso/cache/\n\n if [ $? -eq 0 ]; then\n echo -e \"\\033[1;32mComplete!\\033[0m\"\n else\n echo -e \"\\033[1;31mError copying credentials to remote server\\033[0m\"\n return 1\n fi\n else\n echo -e \"\\033[1;31mError logging into AWS SSO\\033[0m\"\n return 1\n fi\n}\n\n\n\n# For bash\nsource ~/.bashrc\n\n# For zsh\nsource ~/.zshrc\n\n\n\nFrom now on, simply run:\ndisasterlogin\nThis will: 1. Prompt you to log in via AWS SSO in your browser 2. Automatically copy the temporary credentials to your remote server 3. Display status updates with color-coded messages\n\n\n\n\n\n\n\nSSH into your remote server:\nssh username@remote-host\nTest the AWS CLI with your SSO profile:\n# List S3 buckets\naws s3 ls --profile disasters-sso\n\n# Verify identity\naws sts get-caller-identity --profile disasters-sso\nExpected output:\n{\n \"UserId\": \"AIDAXXXXXXXXXXXXXXXXX:user@example.com\",\n \"Account\": \"867530900000\",\n \"Arn\": \"arn:aws:sts::867530900000:assumed-role/Project-Power-User/user@example.com\"\n}\n\n\n\n\n\n\n\n\nOn your local machine, run the login function:\n\nWindows: disasterlogin in PowerShell\nLinux/macOS: disasterlogin in terminal\n\nSSH into your remote server:\nssh username@remote-host\nUse AWS commands (optionally set the profile as default):\nTemporary (for current session only):\n# For bash/zsh\nexport AWS_PROFILE=disasters-sso\naws s3 ls\nPermanent (add to shell profile):\nTo avoid setting this every time you log in, add it to your shell profile:\n# For bash - add to ~/.bashrc\necho 'export AWS_PROFILE=disasters-sso' >> ~/.bashrc\nsource ~/.bashrc\n\n# For zsh - add to ~/.zshrc\necho 'export AWS_PROFILE=disasters-sso' >> ~/.zshrc\nsource ~/.zshrc\nAlternative for csh/tcsh shells:\nIf export doesn’t work, you may be using a csh/tcsh shell. Use setenv instead:\n# Temporary (for current session)\nsetenv AWS_PROFILE disasters-sso\naws s3 ls\n\n# Permanent - add to ~/.cshrc or ~/.tcshrc\necho 'setenv AWS_PROFILE disasters-sso' >> ~/.cshrc\nsource ~/.cshrc\n\n\n\n\nIf you see errors like β€œThe security token included in the request is invalid”:\n\nRun disasterlogin again on your local machine\nThe fresh credentials will be synced to the remote server\nContinue working on the remote server\n\n\n\n\n\n\n\n\nCause: SSH key not configured or remote directory doesn’t exist\nSolution:\n# Ensure .aws/sso/cache directory exists on remote server\nssh username@remote-host \"mkdir -p ~/.aws/sso/cache\"\n\n# Test SSH connection\nssh username@remote-host \"echo 'SSH works'\"\n\n\n\nCause: AWS CLI not installed on remote server\nSolution: Install AWS CLI v2 on the remote server\n# On the remote server (Linux)\ncurl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\nunzip awscliv2.zip\nsudo ./aws/install\n\n\n\nCause: Missing or incorrect ~/.aws/config on remote server\nSolution: Re-copy the config file from Step 1\n\n\n\n\n\n\nAlways sync before starting work - Run disasterlogin at the beginning of each session\nDon’t store permanent credentials - Never put long-term credentials on remote servers\nUse SSH keys - Set up SSH key authentication for passwordless SCP\nSet AWS_PROFILE - Export AWS_PROFILE=disasters-sso to avoid typing --profile repeatedly\nMonitor credential expiration - SSO tokens typically last 1-12 hours\n\n\n\n\n\n\n\n\nβœ… No permanent credentials on remote servers - Only temporary tokens are synced\nβœ… Automatic expiration - Tokens expire after a few hours\nβœ… Centralized access control - Revoke access in AWS SSO, affects all servers immediately\nβœ… No credential storage - Credentials are never stored in code or config files\n\n\n\n\n\n❌ Don’t copy ~/.aws/credentials to remote servers\n❌ Don’t run aws configure with permanent keys on remote servers\n❌ Don’t commit credentials to git repositories\n❌ Don’t share your SSO cache with other users\n\n\n\n\n\n\n\nAWS SSO Setup Guide (Local)\nAWS CLI SSO Documentation\nSSH Key Setup Guide\n\n\nπŸ” Remember: Temporary credentials are your friend. Never use permanent credentials on shared servers!", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#use-aws-sso-credentials-on-remote-servers", - "href": "AWS/AWS_SSO_Remote_Server.html#use-aws-sso-credentials-on-remote-servers", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "This guide explains how to use your AWS SSO credentials from your local machine on remote servers (like JupyterHub or SSH servers) without storing permanent credentials.", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#prerequisites", - "href": "AWS/AWS_SSO_Remote_Server.html#prerequisites", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "βœ… Completed AWS SSO Setup Guide on your local machine\nβœ… SSH/SCP access to your remote server\nβœ… AWS CLI v2 installed on the remote server", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#how-it-works", - "href": "AWS/AWS_SSO_Remote_Server.html#how-it-works", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "AWS SSO generates temporary credentials stored in:\n\nConfiguration: ~/.aws/config (SSO profile settings)\nCredentials Cache: ~/.aws/sso/cache/ (temporary session tokens)\n\nTo use SSO on a remote server, you need to:\n\nCopy the SSO profile configuration once\nSync the temporary credentials cache regularly (before each session)", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#step-1-initial-setup---copy-sso-configuration", - "href": "AWS/AWS_SSO_Remote_Server.html#step-1-initial-setup---copy-sso-configuration", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "First, copy your SSO profile configuration from your local machine to the remote server:\nLinux/macOS:\n# Copy the AWS config file containing your SSO profile\nscp ~/.aws/config username@remote-host:~/.aws/config\nWindows (PowerShell):\n# Copy the AWS config file containing your SSO profile\nscp \"$env:USERPROFILE\\.aws\\config\" username@remote-host:~/.aws/config\nAlternative: If you have other profiles in your config, you can manually copy just the SSO section:\nLinux/macOS:\n# View your local SSO configuration\ncat ~/.aws/config\nWindows (PowerShell):\n# View your local SSO configuration\nGet-Content \"$env:USERPROFILE\\.aws\\config\"\nThen SSH into your remote server and create/edit ~/.aws/config:\n[profile disasters-sso]\nsso_session = disasters\nsso_account_id = 867530900000\nsso_role_name = Project-Power-User\nregion = us-east-1\noutput = json\n\n[sso-session disasters]\nsso_start_url = https://d-9067c5bbc5.awsapps.com/start/#\nsso_region = us-east-1\nsso_registration_scopes = sso:account:access\nπŸ’‘ Important: Replace the account ID, role name, and SSO URL with your actual values from the local AWS SSO setup.", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#step-2-automate-credential-sync", - "href": "AWS/AWS_SSO_Remote_Server.html#step-2-automate-credential-sync", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "Since SSO credentials are temporary and expire, you’ll need to sync them from your local machine to the remote server regularly. Below are automated solutions for both Windows and Linux.", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#step-2-windows---powershell-profile-setup", - "href": "AWS/AWS_SSO_Remote_Server.html#step-2-windows---powershell-profile-setup", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "Open PowerShell and run:\nTest-Path $PROFILE\nIf it returns False, create the profile:\nNew-Item -Type File -Path $PROFILE -Force\n\n\n\nEdit your PowerShell profile:\nnotepad $PROFILE\nAdd the following function (replace username and remote-host with your actual values):\nfunction disasterlogin {\n try {\n Write-Host \"Logging into AWS SSO...\" -ForegroundColor Yellow\n aws sso login --profile disasters-sso\n\n Write-Host \"Copying SSO cache to remote server...\" -ForegroundColor Yellow\n scp -r \"$env:USERPROFILE\\.aws\\sso\\cache\\*\" username@remote-host:~/.aws/sso/cache/\n\n Write-Host \"Complete!\" -ForegroundColor Green\n }\n catch {\n Write-Host \"Error: $_\" -ForegroundColor Red\n }\n}\n\n\n\nClose and reopen PowerShell, or run:\n. $PROFILE\n\n\n\nFrom now on, simply run:\ndisasterlogin\nThis will:\n\nPrompt you to log in via AWS SSO in your browser\nAutomatically copy the temporary credentials to your remote server\nDisplay status updates", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#step-2-linuxmacos---bash-profile-setup", - "href": "AWS/AWS_SSO_Remote_Server.html#step-2-linuxmacos---bash-profile-setup", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "Edit your shell profile file (choose based on your shell):\n# For bash\nnano ~/.bashrc\n\n# For zsh (macOS default)\nnano ~/.zshrc\nAdd the following function (replace username and remote-host with your actual values):\ndisasterlogin() {\n echo -e \"\\033[1;33mLogging into AWS SSO...\\033[0m\"\n aws sso login --profile disasters-sso\n\n if [ $? -eq 0 ]; then\n echo -e \"\\033[1;33mCopying SSO cache to remote server...\\033[0m\"\n scp -r ~/.aws/sso/cache/* username@remote-host:~/.aws/sso/cache/\n\n if [ $? -eq 0 ]; then\n echo -e \"\\033[1;32mComplete!\\033[0m\"\n else\n echo -e \"\\033[1;31mError copying credentials to remote server\\033[0m\"\n return 1\n fi\n else\n echo -e \"\\033[1;31mError logging into AWS SSO\\033[0m\"\n return 1\n fi\n}\n\n\n\n# For bash\nsource ~/.bashrc\n\n# For zsh\nsource ~/.zshrc\n\n\n\nFrom now on, simply run:\ndisasterlogin\nThis will: 1. Prompt you to log in via AWS SSO in your browser 2. Automatically copy the temporary credentials to your remote server 3. Display status updates with color-coded messages", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#verification", - "href": "AWS/AWS_SSO_Remote_Server.html#verification", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "SSH into your remote server:\nssh username@remote-host\nTest the AWS CLI with your SSO profile:\n# List S3 buckets\naws s3 ls --profile disasters-sso\n\n# Verify identity\naws sts get-caller-identity --profile disasters-sso\nExpected output:\n{\n \"UserId\": \"AIDAXXXXXXXXXXXXXXXXX:user@example.com\",\n \"Account\": \"867530900000\",\n \"Arn\": \"arn:aws:sts::867530900000:assumed-role/Project-Power-User/user@example.com\"\n}", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#daily-workflow", - "href": "AWS/AWS_SSO_Remote_Server.html#daily-workflow", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "On your local machine, run the login function:\n\nWindows: disasterlogin in PowerShell\nLinux/macOS: disasterlogin in terminal\n\nSSH into your remote server:\nssh username@remote-host\nUse AWS commands (optionally set the profile as default):\nTemporary (for current session only):\n# For bash/zsh\nexport AWS_PROFILE=disasters-sso\naws s3 ls\nPermanent (add to shell profile):\nTo avoid setting this every time you log in, add it to your shell profile:\n# For bash - add to ~/.bashrc\necho 'export AWS_PROFILE=disasters-sso' >> ~/.bashrc\nsource ~/.bashrc\n\n# For zsh - add to ~/.zshrc\necho 'export AWS_PROFILE=disasters-sso' >> ~/.zshrc\nsource ~/.zshrc\nAlternative for csh/tcsh shells:\nIf export doesn’t work, you may be using a csh/tcsh shell. Use setenv instead:\n# Temporary (for current session)\nsetenv AWS_PROFILE disasters-sso\naws s3 ls\n\n# Permanent - add to ~/.cshrc or ~/.tcshrc\necho 'setenv AWS_PROFILE disasters-sso' >> ~/.cshrc\nsource ~/.cshrc\n\n\n\n\nIf you see errors like β€œThe security token included in the request is invalid”:\n\nRun disasterlogin again on your local machine\nThe fresh credentials will be synced to the remote server\nContinue working on the remote server", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#troubleshooting", - "href": "AWS/AWS_SSO_Remote_Server.html#troubleshooting", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "Cause: SSH key not configured or remote directory doesn’t exist\nSolution:\n# Ensure .aws/sso/cache directory exists on remote server\nssh username@remote-host \"mkdir -p ~/.aws/sso/cache\"\n\n# Test SSH connection\nssh username@remote-host \"echo 'SSH works'\"\n\n\n\nCause: AWS CLI not installed on remote server\nSolution: Install AWS CLI v2 on the remote server\n# On the remote server (Linux)\ncurl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\nunzip awscliv2.zip\nsudo ./aws/install\n\n\n\nCause: Missing or incorrect ~/.aws/config on remote server\nSolution: Re-copy the config file from Step 1", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#best-practices", - "href": "AWS/AWS_SSO_Remote_Server.html#best-practices", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "Always sync before starting work - Run disasterlogin at the beginning of each session\nDon’t store permanent credentials - Never put long-term credentials on remote servers\nUse SSH keys - Set up SSH key authentication for passwordless SCP\nSet AWS_PROFILE - Export AWS_PROFILE=disasters-sso to avoid typing --profile repeatedly\nMonitor credential expiration - SSO tokens typically last 1-12 hours", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#security-considerations", - "href": "AWS/AWS_SSO_Remote_Server.html#security-considerations", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "βœ… No permanent credentials on remote servers - Only temporary tokens are synced\nβœ… Automatic expiration - Tokens expire after a few hours\nβœ… Centralized access control - Revoke access in AWS SSO, affects all servers immediately\nβœ… No credential storage - Credentials are never stored in code or config files\n\n\n\n\n\n❌ Don’t copy ~/.aws/credentials to remote servers\n❌ Don’t run aws configure with permanent keys on remote servers\n❌ Don’t commit credentials to git repositories\n❌ Don’t share your SSO cache with other users", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "AWS/AWS_SSO_Remote_Server.html#resources", - "href": "AWS/AWS_SSO_Remote_Server.html#resources", - "title": "πŸ–₯️ AWS SSO Remote Server Configuration Guide", - "section": "", - "text": "AWS SSO Setup Guide (Local)\nAWS CLI SSO Documentation\nSSH Key Setup Guide\n\n\nπŸ” Remember: Temporary credentials are your friend. Never use permanent credentials on shared servers!", - "crumbs": [ - "AWS", - "πŸ–₯️ AWS SSO Remote Server Configuration Guide" - ] - }, - { - "objectID": "Presentations/stac-airflow-tutorial.html", - "href": "Presentations/stac-airflow-tutorial.html", - "title": "STAC Database and Apache Airflow Tutorial", - "section": "", - "text": "This page provides comprehensive instructions and guidance for using VEDA STAC Database and Apache Airflow for the Disasters project.\n\n\n\n\n\n\nNote\n\n\n\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Introduction to STAC (SpatioTemporal Asset Catalog) concepts - STAC database structure and implementation - Apache Airflow setup and configuration - Building data pipelines with Airflow - Integrating STAC with Airflow workflows\nDuration: [Add duration here]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "STAC Database and Apache Airflow Tutorial" - ] - }, - { - "objectID": "Presentations/stac-airflow-tutorial.html#stac-database-and-apache-airflow-tutorial", - "href": "Presentations/stac-airflow-tutorial.html#stac-database-and-apache-airflow-tutorial", - "title": "STAC Database and Apache Airflow Tutorial", - "section": "", - "text": "This page provides comprehensive instructions and guidance for using VEDA STAC Database and Apache Airflow for the Disasters project.\n\n\n\n\n\n\nNote\n\n\n\nControls:\n\n\nClick the β€œοΈ™β€ menu for additional options such as Full Screen mode\n\n\nAdvance slides using your mouse cursor\n\n\n\n\n\n\nWatch the complete walkthrough of this tutorial with live demonstrations and explanations:\n\n\n\n\n\n\nWarningLarge Video File Notice\n\n\n\nDue to the video file size, it cannot be embedded directly. Please use the button below to watch the video in a new tab.\n\n β–Ά Watch Tutorial Video \n\n\n\n\n\n\n\n\n\nNoteVideo Details\n\n\n\n\n\nThis recorded tutorial includes: - Introduction to STAC (SpatioTemporal Asset Catalog) concepts - STAC database structure and implementation - Apache Airflow setup and configuration - Building data pipelines with Airflow - Integrating STAC with Airflow workflows\nDuration: [Add duration here]\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nTipAlternative Viewing Options\n\n\n\n\n\nIf the embedded presentation doesn’t load properly, you can:\n\nOpen in new tab: View presentation in Google Slides β†’\nFullscreen mode: Click the fullscreen button in the embedded player above\nDownload: Open the link above and look for download options if available", - "crumbs": [ - "Presentations", - "PowerPoints", - "STAC Database and Apache Airflow Tutorial" - ] - }, - { - "objectID": "Presentations/stac-airflow-tutorial.html#what-youll-learn", - "href": "Presentations/stac-airflow-tutorial.html#what-youll-learn", - "title": "STAC Database and Apache Airflow Tutorial", - "section": "What You’ll Learn", - "text": "What You’ll Learn\nThis tutorial covers the following topics:\n\nπŸ“Š STAC Database Fundamentals\n\nUnderstanding STAC specification\nSTAC database architecture\nCataloging geospatial assets\n\n\n\nβš™οΈ Apache Airflow Workflows\n\nApache Airflow overview\nDAG (Directed Acyclic Graph) creation\nTask scheduling and orchestration", - "crumbs": [ - "Presentations", - "PowerPoints", - "STAC Database and Apache Airflow Tutorial" - ] - }, - { - "objectID": "Presentations/stac-airflow-tutorial.html#related-resources", - "href": "Presentations/stac-airflow-tutorial.html#related-resources", - "title": "STAC Database and Apache Airflow Tutorial", - "section": "Related Resources", - "text": "Related Resources\n\nSTAC Resources\n\nSTAC Specification\nSTAC API Documentation\nPySTAC Documentation\n\n\n\nApache Airflow Resources\n\nApache Airflow Documentation\nAirflow Best Practices\nAirflow DAG Authoring\n\n\n\n\nFeedback\nWe welcome feedback on this tutorial! If you have suggestions for improvements or find any issues, please reach out to the data team.", - "crumbs": [ - "Presentations", - "PowerPoints", - "STAC Database and Apache Airflow Tutorial" - ] - }, - { - "objectID": "Presentations/stac-airflow-tutorial.html#conclusion", - "href": "Presentations/stac-airflow-tutorial.html#conclusion", - "title": "STAC Database and Apache Airflow Tutorial", - "section": "Conclusion", - "text": "Conclusion\nThis tutorial provides comprehensive guidance for using STAC Database and Apache Airflow for the Disasters project’s data pipeline management.", - "crumbs": [ - "Presentations", - "PowerPoints", - "STAC Database and Apache Airflow Tutorial" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html", - "href": "user_data_notebooks/Texas_Flood_2025.html", - "title": "The Texas Flooding of July 4, 2025", - "section": "", - "text": "Disclaimer: it is highly recommended to run a tutorial within NASA VEDA JupyterHub, which already includes functions for processing and visualizing data specific to VEDA stories. Running the tutorial outside of the VEDA JupyterHub may lead to errors, specifically related to EarthData authentication. Additionally, it is recommended to use the Pangeo workspace within the VEDA JupyterHub, since certain packages relevant to this tutorial are already installed.\n\n\n \n\n\n\nApproach\nAbout the Data\nTerminology\nInstall the Required Libraries\nQuerying the STAC API\nRequesting Tiles\nCreate Maps Using Folium\nSummary", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#table-of-contents", - "href": "user_data_notebooks/Texas_Flood_2025.html#table-of-contents", - "title": "The Texas Flooding of July 4, 2025", - "section": "", - "text": "Approach\nAbout the Data\nTerminology\nInstall the Required Libraries\nQuerying the STAC API\nRequesting Tiles\nCreate Maps Using Folium\nSummary", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#terminology", - "href": "user_data_notebooks/Texas_Flood_2025.html#terminology", - "title": "The Texas Flooding of July 4, 2025", - "section": "Terminology", - "text": "Terminology\nSpatialTemporal Asset Catalog (STAC): This is a specification that standardizes metadata for geospatial assets such as satelite imagery so that they can be used for use.\nApplication Programming Interface (API): Protocals that is used to communicate between softwares and makes a request (for tiles in out case).\nCollection: A set of STAC definied for a specific item (such as Sentinel-2-vars-daily in our case)\nTiles: A square fragment of a satellite image. Together they make an image, but we call up once specific one for this example since th area we are looking at is small.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#install-the-required-libraires", - "href": "user_data_notebooks/Texas_Flood_2025.html#install-the-required-libraires", - "title": "The Texas Flooding of July 4, 2025", - "section": "Install the Required Libraires", - "text": "Install the Required Libraires\n\n#Import the following libraries:\n\nimport requests\nfrom folium import Map, TileLayer\nimport folium.plugins\nimport folium\nfrom pystac_client import Client", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#querying-the-stac-api", - "href": "user_data_notebooks/Texas_Flood_2025.html#querying-the-stac-api", - "title": "The Texas Flooding of July 4, 2025", - "section": "Querying the STAC API", - "text": "Querying the STAC API\n\n#Define the STAC and RASTER URL's and define the product\nSTAC_API_URL = \"https://dev.openveda.cloud/api/stac\" \nRASTER_API_URL = \"https://dev.openveda.cloud/api/raster\"\ncollection_name = \"sentinel-2-all-vars-daily\"\n\n#For True Color:\nasset='trueColor'\n\n# Fetch the collection from the STAC API \ncatalog = Client.open(STAC_API_URL)\ncollection = catalog.get_collection(collection_name)\n\n# Print the properties of the collection to the console\ncollection\n\n\n\n\n\n\n <CollectionClient id=sentinel-2-all-vars-daily>\n\n\n \n \n \n \n \n \n type\n \"Collection\"\n \n \n \n \n \n \n \n id\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n \n description\n \"Sentinel-2 is a multispectral optical imaging mission providing high-resolution imagery for disaster monitoring and environmental assessment. This collection includes multiple spectral band products and derived indices: true color and false color composites for visual analysis, NDVI for vegetation health monitoring, burn ratio for fire damage assessment, MNDWI for water detection, and cloud masks for data quality filtering.\"\n \n \n \n \n \n \n links[] 5 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"items\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n rel\n \"http://www.opengis.net/def/rel/ogc/1.0/queryables\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/queryables\"\n \n \n \n \n \n \n \n type\n \"application/schema+json\"\n \n \n \n \n \n \n \n title\n \"Queryables\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n stac_extensions[] 3 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/render/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 2\n \"https://stac-extensions.github.io/authentication/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n tenant[] 1 items\n \n \n \n \n \n \n 0\n \"nasa-disasters\"\n \n \n \n \n \n \n \n \n \n \n \n \n renders\n \n \n \n \n \n ndvi\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"ndvi\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"mndwi\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 999\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colorIR\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"colorIR\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n burnRatio\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"burnRatio\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n -9999\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n cloudMask\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"cloudMask\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"trueColor\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ndviChange\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"ndviChange\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n shortwaveIR\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"shortwaveIR\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"naturalColor\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n item_assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"MNDWI\"\n \n \n \n \n \n \n \n description\n \"Modified Normalized Difference Water Index for detecting and mapping surface water bodies and flood extent.\"\n \n \n \n \n \n \n \n \n \n \n \n \n colorIR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n \n \n \n \n \n \n burnRatio\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Burn Ratio\"\n \n \n \n \n \n \n \n description\n \"Normalized Burn Ratio (NBR) index highlighting burned areas by comparing near-infrared and shortwave infrared bands for fire damage assessment.\"\n \n \n \n \n \n \n \n \n \n \n \n \n cloudMask\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Cloud Mask\"\n \n \n \n \n \n \n \n description\n \"Cloud and cloud shadow mask identifying pixels obscured by atmospheric conditions for data quality filtering.\"\n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n \n \n \n \n \n \n ndviChange\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"NDVI Change\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index change between dates measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n \n \n \n \n \n \n shortwaveIR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Shortwave Infrared\"\n \n \n \n \n \n \n \n description\n \"Shortwave infrared composite highlighting moisture content and penetrating smoke for fire and drought monitoring.\"\n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dashboard:is_periodic\n False\n \n \n \n \n \n \n \n dashboard:time_interval\n \"P1D\"\n \n \n \n \n \n \n \n auth:schemes\n \n \n \n \n \n oidc\n \n \n \n \n \n type\n \"openIdConnect\"\n \n \n \n \n \n \n \n openIdConnectUrl\n \"https://keycloak.delta-backend.xyz/realms/veda/.well-known/openid-configuration\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 Daily\"\n \n \n \n \n \n \n \n extent\n \n \n \n \n \n spatial\n \n \n \n \n bbox[] 1 items\n \n \n \n \n \n 0[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n -30.82134245583779\n \n \n \n \n \n \n \n \n \n \n \n 2\n -49.85229056436889\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n temporal\n \n \n \n \n interval[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n \"2015-03-13T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"2025-07-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n license\n \"CC0-1.0\"\n \n \n \n \n \n \n providers[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n name\n \"NASA\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n summaries\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n#For NDVI:\n# Using the NDVI asset with Magma colormap\nASSET_NAME = \"ndviChange\"\nCOLORMAP = \"magma\"\nRESCALE_VALUES = {\"min\": -1, \"max\": 1} \n\ncatalog = Client.open(STAC_API_URL)\n\n# Search for items (using the original wide search)\nsearch = catalog.search(\n collections=collection_name,\n datetime=['2025-01-01T00:00:00Z', '2025-07-31T00:00:00Z']\n)\nitems_dict = search.item_collection()\n\n\nitem_post_id = items_dict[0].id\nprint(f\"Found {len(items_dict)} items. Using Post-Event Item ID: {item_post_id}\")\n\nFound 31 items. Using Post-Event Item ID: sentinel-2-2025-07-17\n\n\nNow, we will extract the dates to find the correct date for the before/after of the Guadalupe River\n\ncollection.extra_fields[\"renders\"][asset]\nitems = list(collection.get_items()) # Convert the iterator to a list\nprint(f\"Found {len(items)} items\")\n\n# The search function lets you search for items within a specific date/time range\nsearch = catalog.search(\n collections=collection_name,\n datetime=['2025-01-01T00:00:00Z','2025-07-31T00:00:00Z']\n)\n# Take a look at the items we found\nprint(f\"# items in date range: {len(search.item_collection())}\")\nfor item in search.item_collection():\n print(item)\n\n[item for item in search.item_collection() if item.properties['datetime'] > '2025-01-08T00:00:00Z']\n\nitems_dict = search.item_collection()\nitems_dict\n\nFound 45 items\n# items in date range: 31\n<Item id=sentinel-2-2025-07-17>\n<Item id=sentinel-2-2025-07-10>\n<Item id=sentinel-2-2025-07-08>\n<Item id=sentinel-2-2025-06-29>\n<Item id=sentinel-2-2025-06-28>\n<Item id=sentinel-2-2025-06-21>\n<Item id=sentinel-2-2025-06-20>\n<Item id=sentinel-2-2025-06-19>\n<Item id=sentinel-2-2025-06-18>\n<Item id=sentinel-2-2025-06-17>\n<Item id=sentinel-2-2025-06-14>\n<Item id=sentinel-2-2025-06-11>\n<Item id=sentinel-2-2025-06-09>\n<Item id=sentinel-2-2025-06-08>\n<Item id=sentinel-2-2025-04-09>\n<Item id=sentinel-2-2025-04-08>\n<Item id=sentinel-2-2025-04-07>\n<Item id=sentinel-2-2025-03-31>\n<Item id=sentinel-2-2025-03-22>\n<Item id=sentinel-2-2025-03-19>\n<Item id=sentinel-2-2025-03-18>\n<Item id=sentinel-2-2025-03-17>\n<Item id=sentinel-2-2025-03-13>\n<Item id=sentinel-2-2025-03-12>\n<Item id=sentinel-2-2025-03-10>\n<Item id=sentinel-2-2025-02-25>\n<Item id=sentinel-2-2025-02-23>\n<Item id=sentinel-2-2025-02-20>\n<Item id=sentinel-2-2025-02-17>\n<Item id=sentinel-2-2025-02-10>\n<Item id=sentinel-2-2025-01-12>\n\n\n\n\n\n\n\n <pystac.item_collection.ItemCollection object at 0x7f9520a182f0>\n\n\n \n \n \n \n \n \n type\n \"FeatureCollection\"\n \n \n \n \n \n \n features[] 31 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-07-17\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-07-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-07-17\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n cloudMask\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/cloudMask/202507_Flood_TX_CentralTX_S2C_cloudMask_merged_2025-07-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Cloud Mask\"\n \n \n \n \n \n \n \n description\n \"Cloud and cloud shadow mask identifying pixels obscured by atmospheric conditions for data quality filtering.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.8223923697283\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78831378349626\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 14185\n \n \n \n \n \n \n \n \n \n \n \n 1\n 21784\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint16\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n 1.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 102593\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 191473\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 650.8202920432828\n \n \n \n \n \n \n \n stddev\n 475.6618962119826\n \n \n \n \n \n \n \n maximum\n 999\n \n \n \n \n \n \n \n minimum\n 1\n \n \n \n \n \n \n \n valid_percent\n 43.05454694527736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.8223923697283\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78831378349626\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.8223923697283\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78831378349626\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.8223923697283\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00019831896111564582\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00019831896111564582\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_CentralTX_S2C_trueColor_merged_2025-07-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28371\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43569\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 6.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n 2\n 15237\n \n \n \n \n \n \n \n \n \n \n \n 3\n 186636\n \n \n \n \n \n \n \n \n \n \n \n 4\n 142154\n \n \n \n \n \n \n \n \n \n \n \n 5\n 61891\n \n \n \n \n \n \n \n \n \n \n \n 6\n 34921\n \n \n \n \n \n \n \n \n \n \n \n 7\n 18193\n \n \n \n \n \n \n \n \n \n \n \n 8\n 11157\n \n \n \n \n \n \n \n \n \n \n \n 9\n 21289\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 124.69952104044502\n \n \n \n \n \n \n \n stddev\n 41.03315331347393\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 6\n \n \n \n \n \n \n \n valid_percent\n 71.95845436656671\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 430\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34744\n \n \n \n \n \n \n \n \n \n \n \n 2\n 171886\n \n \n \n \n \n \n \n \n \n \n \n 3\n 138945\n \n \n \n \n \n \n \n \n \n \n \n 4\n 65009\n \n \n \n \n \n \n \n \n \n \n \n 5\n 29568\n \n \n \n \n \n \n \n \n \n \n \n 6\n 14837\n \n \n \n \n \n \n \n \n \n \n \n 7\n 10854\n \n \n \n \n \n \n \n \n \n \n \n 8\n 6731\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18480\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 129.78852210855288\n \n \n \n \n \n \n \n stddev\n 36.60979383671847\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 71.95874718890555\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 788\n \n \n \n \n \n \n \n \n \n \n \n 1\n 117713\n \n \n \n \n \n \n \n \n \n \n \n 2\n 211912\n \n \n \n \n \n \n \n \n \n \n \n 3\n 74662\n \n \n \n \n \n \n \n \n \n \n \n 4\n 30909\n \n \n \n \n \n \n \n \n \n \n \n 5\n 16861\n \n \n \n \n \n \n \n \n \n \n \n 6\n 10346\n \n \n \n \n \n \n \n \n \n \n \n 7\n 6741\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4874\n \n \n \n \n \n \n \n \n \n \n \n 9\n 16678\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 108.59281685670337\n \n \n \n \n \n \n \n stddev\n 38.9508496291858\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 71.95874718890555\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ndviChange\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202507_Flood_TX_CentralTX_S2_NDVIchange_c2025-06-17_2025-07-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28371\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43569\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.5497827529907227\n \n \n \n \n \n \n \n min\n -0.7521868944168091\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 10\n \n \n \n \n \n \n \n \n \n \n \n 1\n 52\n \n \n \n \n \n \n \n \n \n \n \n 2\n 2108\n \n \n \n \n \n \n \n \n \n \n \n 3\n 5003\n \n \n \n \n \n \n \n \n \n \n \n 4\n 10112\n \n \n \n \n \n \n \n \n \n \n \n 5\n 253348\n \n \n \n \n \n \n \n \n \n \n \n 6\n 110049\n \n \n \n \n \n \n \n \n \n \n \n 7\n 3773\n \n \n \n \n \n \n \n \n \n \n \n 8\n 434\n \n \n \n \n \n \n \n \n \n \n \n 9\n 54\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.005643127607731859\n \n \n \n \n \n \n \n stddev\n 0.07083062711588488\n \n \n \n \n \n \n \n maximum\n 0.5497827529907227\n \n \n \n \n \n \n \n minimum\n -0.7521868944168091\n \n \n \n \n \n \n \n valid_percent\n 56.35995478823088\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-07-10\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-07-10T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-07-10\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202507_Flood_TX_NW_CentralTX_S2C_colorInfrared_merged_2025-07-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19105\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32633\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 36.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 639\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1504\n \n \n \n \n \n \n \n \n \n \n \n 2\n 1081\n \n \n \n \n \n \n \n \n \n \n \n 3\n 2422\n \n \n \n \n \n \n \n \n \n \n \n 4\n 26996\n \n \n \n \n \n \n \n \n \n \n \n 5\n 131254\n \n \n \n \n \n \n \n \n \n \n \n 6\n 133884\n \n \n \n \n \n \n \n \n \n \n \n 7\n 87763\n \n \n \n \n \n \n \n \n \n \n \n 8\n 59543\n \n \n \n \n \n \n \n \n \n \n \n 9\n 57084\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 186.02584981181673\n \n \n \n \n \n \n \n stddev\n 33.41249862413897\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 36\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 32.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 10820\n \n \n \n \n \n \n \n \n \n \n \n 1\n 114442\n \n \n \n \n \n \n \n \n \n \n \n 2\n 116048\n \n \n \n \n \n \n \n \n \n \n \n 3\n 89579\n \n \n \n \n \n \n \n \n \n \n \n 4\n 65500\n \n \n \n \n \n \n \n \n \n \n \n 5\n 44561\n \n \n \n \n \n \n \n \n \n \n \n 6\n 30653\n \n \n \n \n \n \n \n \n \n \n \n 7\n 16269\n \n \n \n \n \n \n \n \n \n \n \n 8\n 7507\n \n \n \n \n \n \n \n \n \n \n \n 9\n 6791\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 110.79457355078958\n \n \n \n \n \n \n \n stddev\n 42.86224069906333\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 32\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1785\n \n \n \n \n \n \n \n \n \n \n \n 1\n 103710\n \n \n \n \n \n \n \n \n \n \n \n 2\n 173593\n \n \n \n \n \n \n \n \n \n \n \n 3\n 106601\n \n \n \n \n \n \n \n \n \n \n \n 4\n 66805\n \n \n \n \n \n \n \n \n \n \n \n 5\n 29948\n \n \n \n \n \n \n \n \n \n \n \n 6\n 11561\n \n \n \n \n \n \n \n \n \n \n \n 7\n 3775\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2004\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2388\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 100.39091542704662\n \n \n \n \n \n \n \n stddev\n 31.334905755231578\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_NW_CentralTX_S2C_trueColor_merged_2025-07-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19105\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32633\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 938\n \n \n \n \n \n \n \n \n \n \n \n 1\n 21752\n \n \n \n \n \n \n \n \n \n \n \n 2\n 78166\n \n \n \n \n \n \n \n \n \n \n \n 3\n 80383\n \n \n \n \n \n \n \n \n \n \n \n 4\n 69196\n \n \n \n \n \n \n \n \n \n \n \n 5\n 58517\n \n \n \n \n \n \n \n \n \n \n \n 6\n 48679\n \n \n \n \n \n \n \n \n \n \n \n 7\n 38758\n \n \n \n \n \n \n \n \n \n \n \n 8\n 30418\n \n \n \n \n \n \n \n \n \n \n \n 9\n 75363\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 161.44347332576618\n \n \n \n \n \n \n \n stddev\n 53.96591272472363\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 532\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3524\n \n \n \n \n \n \n \n \n \n \n \n 2\n 63899\n \n \n \n \n \n \n \n \n \n \n \n 3\n 126535\n \n \n \n \n \n \n \n \n \n \n \n 4\n 96682\n \n \n \n \n \n \n \n \n \n \n \n 5\n 70310\n \n \n \n \n \n \n \n \n \n \n \n 6\n 51096\n \n \n \n \n \n \n \n \n \n \n \n 7\n 35967\n \n \n \n \n \n \n \n \n \n \n \n 8\n 23146\n \n \n \n \n \n \n \n \n \n \n \n 9\n 30479\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 149.25610251508454\n \n \n \n \n \n \n \n stddev\n 42.69678850334295\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 854\n \n \n \n \n \n \n \n \n \n \n \n 1\n 55408\n \n \n \n \n \n \n \n \n \n \n \n 2\n 149922\n \n \n \n \n \n \n \n \n \n \n \n 3\n 113994\n \n \n \n \n \n \n \n \n \n \n \n 4\n 76494\n \n \n \n \n \n \n \n \n \n \n \n 5\n 52953\n \n \n \n \n \n \n \n \n \n \n \n 6\n 25917\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13612\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5854\n \n \n \n \n \n \n \n \n \n \n \n 9\n 7162\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 119.71948742457734\n \n \n \n \n \n \n \n stddev\n 36.89140002729093\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 81.7333984375\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-07-08\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-07-08T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-07-08\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202507_Flood_TX_ReevesCountyTX_S2B_colorInfrared_merged_2025-07-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19511\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22807\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 38.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1678\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5412\n \n \n \n \n \n \n \n \n \n \n \n 2\n 4321\n \n \n \n \n \n \n \n \n \n \n \n 3\n 4054\n \n \n \n \n \n \n \n \n \n \n \n 4\n 15865\n \n \n \n \n \n \n \n \n \n \n \n 5\n 60905\n \n \n \n \n \n \n \n \n \n \n \n 6\n 94882\n \n \n \n \n \n \n \n \n \n \n \n 7\n 175064\n \n \n \n \n \n \n \n \n \n \n \n 8\n 240321\n \n \n \n \n \n \n \n \n \n \n \n 9\n 268161\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 212.6158858249403\n \n \n \n \n \n \n \n stddev\n 34.208465710960795\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 38\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 4.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 5\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4370\n \n \n \n \n \n \n \n \n \n \n \n 2\n 23378\n \n \n \n \n \n \n \n \n \n \n \n 3\n 77473\n \n \n \n \n \n \n \n \n \n \n \n 4\n 126406\n \n \n \n \n \n \n \n \n \n \n \n 5\n 194255\n \n \n \n \n \n \n \n \n \n \n \n 6\n 190175\n \n \n \n \n \n \n \n \n \n \n \n 7\n 157875\n \n \n \n \n \n \n \n \n \n \n \n 8\n 57507\n \n \n \n \n \n \n \n \n \n \n \n 9\n 39219\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 155.73035376488951\n \n \n \n \n \n \n \n stddev\n 41.944408417792715\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 4\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 36.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4134\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23608\n \n \n \n \n \n \n \n \n \n \n \n 2\n 129519\n \n \n \n \n \n \n \n \n \n \n \n 3\n 202910\n \n \n \n \n \n \n \n \n \n \n \n 4\n 219251\n \n \n \n \n \n \n \n \n \n \n \n 5\n 179131\n \n \n \n \n \n \n \n \n \n \n \n 6\n 70150\n \n \n \n \n \n \n \n \n \n \n \n 7\n 19244\n \n \n \n \n \n \n \n \n \n \n \n 8\n 8144\n \n \n \n \n \n \n \n \n \n \n \n 9\n 14572\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 132.47952652174263\n \n \n \n \n \n \n \n stddev\n 34.239401911026086\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 36\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_ReevesCountyTX_S2B_trueColor_merged_2025-07-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19511\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22807\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 6.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 5\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3463\n \n \n \n \n \n \n \n \n \n \n \n 3\n 12221\n \n \n \n \n \n \n \n \n \n \n \n 4\n 30672\n \n \n \n \n \n \n \n \n \n \n \n 5\n 50783\n \n \n \n \n \n \n \n \n \n \n \n 6\n 85363\n \n \n \n \n \n \n \n \n \n \n \n 7\n 103859\n \n \n \n \n \n \n \n \n \n \n \n 8\n 123423\n \n \n \n \n \n \n \n \n \n \n \n 9\n 460852\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 217.74102494306064\n \n \n \n \n \n \n \n stddev\n 43.62049408549872\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 6\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1286\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5331\n \n \n \n \n \n \n \n \n \n \n \n 2\n 15550\n \n \n \n \n \n \n \n \n \n \n \n 3\n 49647\n \n \n \n \n \n \n \n \n \n \n \n 4\n 102473\n \n \n \n \n \n \n \n \n \n \n \n 5\n 126946\n \n \n \n \n \n \n \n \n \n \n \n 6\n 118066\n \n \n \n \n \n \n \n \n \n \n \n 7\n 140363\n \n \n \n \n \n \n \n \n \n \n \n 8\n 129471\n \n \n \n \n \n \n \n \n \n \n \n 9\n 181530\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 194.3013117589699\n \n \n \n \n \n \n \n stddev\n 41.95601647182171\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11445\n \n \n \n \n \n \n \n \n \n \n \n 2\n 76325\n \n \n \n \n \n \n \n \n \n \n \n 3\n 151186\n \n \n \n \n \n \n \n \n \n \n \n 4\n 131305\n \n \n \n \n \n \n \n \n \n \n \n 5\n 166238\n \n \n \n \n \n \n \n \n \n \n \n 6\n 156874\n \n \n \n \n \n \n \n \n \n \n \n 7\n 96958\n \n \n \n \n \n \n \n \n \n \n \n 8\n 37667\n \n \n \n \n \n \n \n \n \n \n \n 9\n 41472\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 161.3210828988943\n \n \n \n \n \n \n \n stddev\n 39.21495405743108\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 96.95060843072976\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-29\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-29T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-29\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2C_colorInfrared_2025-06-29_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10725\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18647\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 29.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3770\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3233\n \n \n \n \n \n \n \n \n \n \n \n 3\n 4626\n \n \n \n \n \n \n \n \n \n \n \n 4\n 33247\n \n \n \n \n \n \n \n \n \n \n \n 5\n 178749\n \n \n \n \n \n \n \n \n \n \n \n 6\n 171022\n \n \n \n \n \n \n \n \n \n \n \n 7\n 80871\n \n \n \n \n \n \n \n \n \n \n \n 8\n 24883\n \n \n \n \n \n \n \n \n \n \n \n 9\n 28600\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 172.690855391621\n \n \n \n \n \n \n \n stddev\n 31.398073897514557\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 29\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3706\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6513\n \n \n \n \n \n \n \n \n \n \n \n 2\n 36476\n \n \n \n \n \n \n \n \n \n \n \n 3\n 94506\n \n \n \n \n \n \n \n \n \n \n \n 4\n 141958\n \n \n \n \n \n \n \n \n \n \n \n 5\n 136890\n \n \n \n \n \n \n \n \n \n \n \n 6\n 70575\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13186\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2727\n \n \n \n \n \n \n \n \n \n \n \n 9\n 24027\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 139.08797053701343\n \n \n \n \n \n \n \n stddev\n 38.417676022316265\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 25.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4012\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8393\n \n \n \n \n \n \n \n \n \n \n \n 2\n 97965\n \n \n \n \n \n \n \n \n \n \n \n 3\n 213189\n \n \n \n \n \n \n \n \n \n \n \n 4\n 159128\n \n \n \n \n \n \n \n \n \n \n \n 5\n 16947\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2734\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2015\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2228\n \n \n \n \n \n \n \n \n \n \n \n 9\n 23953\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 115.65447900724511\n \n \n \n \n \n \n \n stddev\n 36.66006012155539\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 25\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010160625438747018\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010160625438747032\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2C_trueColor_2025-06-29_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10725\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18647\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3608\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5340\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8652\n \n \n \n \n \n \n \n \n \n \n \n 3\n 22687\n \n \n \n \n \n \n \n \n \n \n \n 4\n 39202\n \n \n \n \n \n \n \n \n \n \n \n 5\n 58012\n \n \n \n \n \n \n \n \n \n \n \n 6\n 79236\n \n \n \n \n \n \n \n \n \n \n \n 7\n 88450\n \n \n \n \n \n \n \n \n \n \n \n 8\n 79517\n \n \n \n \n \n \n \n \n \n \n \n 9\n 144641\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 200.22185153349895\n \n \n \n \n \n \n \n stddev\n 44.6477179772496\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3125\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4555\n \n \n \n \n \n \n \n \n \n \n \n 2\n 11395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 49906\n \n \n \n \n \n \n \n \n \n \n \n 4\n 93135\n \n \n \n \n \n \n \n \n \n \n \n 5\n 126748\n \n \n \n \n \n \n \n \n \n \n \n 6\n 122520\n \n \n \n \n \n \n \n \n \n \n \n 7\n 66039\n \n \n \n \n \n \n \n \n \n \n \n 8\n 16783\n \n \n \n \n \n \n \n \n \n \n \n 9\n 35139\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 167.0375142865239\n \n \n \n \n \n \n \n stddev\n 37.391312765369086\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3050\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8287\n \n \n \n \n \n \n \n \n \n \n \n 2\n 39973\n \n \n \n \n \n \n \n \n \n \n \n 3\n 107656\n \n \n \n \n \n \n \n \n \n \n \n 4\n 173618\n \n \n \n \n \n \n \n \n \n \n \n 5\n 133135\n \n \n \n \n \n \n \n \n \n \n \n 6\n 25989\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4992\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1807\n \n \n \n \n \n \n \n \n \n \n \n 9\n 30838\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 141.70152547015653\n \n \n \n \n \n \n \n stddev\n 37.01677070914419\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010160625438747006\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010160625438747006\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-28\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-28T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-28\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_Roswell_Mescalero_S2A_colorInfrared_2025-06-28_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 18372\n \n \n \n \n \n \n \n \n \n \n \n 1\n 52655\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 15.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 16\n \n \n \n \n \n \n \n \n \n \n \n 1\n 232\n \n \n \n \n \n \n \n \n \n \n \n 2\n 688\n \n \n \n \n \n \n \n \n \n \n \n 3\n 1910\n \n \n \n \n \n \n \n \n \n \n \n 4\n 4055\n \n \n \n \n \n \n \n \n \n \n \n 5\n 21757\n \n \n \n \n \n \n \n \n \n \n \n 6\n 48565\n \n \n \n \n \n \n \n \n \n \n \n 7\n 55348\n \n \n \n \n \n \n \n \n \n \n \n 8\n 42591\n \n \n \n \n \n \n \n \n \n \n \n 9\n 35886\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 195.33803210644024\n \n \n \n \n \n \n \n stddev\n 34.78649821352782\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 15\n \n \n \n \n \n \n \n valid_percent\n 57.570268854748605\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 21.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 225\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1700\n \n \n \n \n \n \n \n \n \n \n \n 2\n 9010\n \n \n \n \n \n \n \n \n \n \n \n 3\n 17554\n \n \n \n \n \n \n \n \n \n \n \n 4\n 40359\n \n \n \n \n \n \n \n \n \n \n \n 5\n 52748\n \n \n \n \n \n \n \n \n \n \n \n 6\n 38187\n \n \n \n \n \n \n \n \n \n \n \n 7\n 24832\n \n \n \n \n \n \n \n \n \n \n \n 8\n 7903\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18530\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 158.65759448087638\n \n \n \n \n \n \n \n stddev\n 43.86575128261171\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 21\n \n \n \n \n \n \n \n valid_percent\n 57.570268854748605\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 23.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 264\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3346\n \n \n \n \n \n \n \n \n \n \n \n 2\n 17616\n \n \n \n \n \n \n \n \n \n \n \n 3\n 53198\n \n \n \n \n \n \n \n \n \n \n \n 4\n 71459\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31841\n \n \n \n \n \n \n \n \n \n \n \n 6\n 9136\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4246\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3280\n \n \n \n \n \n \n \n \n \n \n \n 9\n 16662\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 134.5152192866078\n \n \n \n \n \n \n \n stddev\n 44.17471932744346\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 23\n \n \n \n \n \n \n \n valid_percent\n 57.570268854748605\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010520989757794922\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.000105209897577949\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_Roswell_Mescalero_S2A_trueColor_2025-06-28_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 18372\n \n \n \n \n \n \n \n \n \n \n \n 1\n 52655\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 502\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1335\n \n \n \n \n \n \n \n \n \n \n \n 2\n 2921\n \n \n \n \n \n \n \n \n \n \n \n 3\n 5739\n \n \n \n \n \n \n \n \n \n \n \n 4\n 8593\n \n \n \n \n \n \n \n \n \n \n \n 5\n 12937\n \n \n \n \n \n \n \n \n \n \n \n 6\n 20029\n \n \n \n \n \n \n \n \n \n \n \n 7\n 25834\n \n \n \n \n \n \n \n \n \n \n \n 8\n 27383\n \n \n \n \n \n \n \n \n \n \n \n 9\n 105093\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 217.33912324234905\n \n \n \n \n \n \n \n stddev\n 43.72341277959431\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 57.384230970670394\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 42.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 440\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1080\n \n \n \n \n \n \n \n \n \n \n \n 2\n 4788\n \n \n \n \n \n \n \n \n \n \n \n 3\n 10894\n \n \n \n \n \n \n \n \n \n \n \n 4\n 20028\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32849\n \n \n \n \n \n \n \n \n \n \n \n 6\n 39800\n \n \n \n \n \n \n \n \n \n \n \n 7\n 37042\n \n \n \n \n \n \n \n \n \n \n \n 8\n 21509\n \n \n \n \n \n \n \n \n \n \n \n 9\n 41936\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 189.17413935712045\n \n \n \n \n \n \n \n stddev\n 43.40339622955632\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 42\n \n \n \n \n \n \n \n valid_percent\n 57.384230970670394\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 10\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1156\n \n \n \n \n \n \n \n \n \n \n \n 2\n 7971\n \n \n \n \n \n \n \n \n \n \n \n 3\n 20307\n \n \n \n \n \n \n \n \n \n \n \n 4\n 44752\n \n \n \n \n \n \n \n \n \n \n \n 5\n 57274\n \n \n \n \n \n \n \n \n \n \n \n 6\n 30518\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13734\n \n \n \n \n \n \n \n \n \n \n \n 8\n 6320\n \n \n \n \n \n \n \n \n \n \n \n 9\n 28324\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 160.90844528108155\n \n \n \n \n \n \n \n stddev\n 46.872924190836926\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 57.384230970670394\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010520989757794912\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010520989757794912\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-21\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-21T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-21\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2A_colorInfrared_2025-06-21_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 38.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 55\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1294\n \n \n \n \n \n \n \n \n \n \n \n 2\n 5438\n \n \n \n \n \n \n \n \n \n \n \n 3\n 9326\n \n \n \n \n \n \n \n \n \n \n \n 4\n 53675\n \n \n \n \n \n \n \n \n \n \n \n 5\n 150824\n \n \n \n \n \n \n \n \n \n \n \n 6\n 139855\n \n \n \n \n \n \n \n \n \n \n \n 7\n 88332\n \n \n \n \n \n \n \n \n \n \n \n 8\n 32168\n \n \n \n \n \n \n \n \n \n \n \n 9\n 36893\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 177.3755281350172\n \n \n \n \n \n \n \n stddev\n 32.31712400888848\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 38\n \n \n \n \n \n \n \n valid_percent\n 85.86123196095076\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 36.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 750\n \n \n \n \n \n \n \n \n \n \n \n 1\n 12173\n \n \n \n \n \n \n \n \n \n \n \n 2\n 74315\n \n \n \n \n \n \n \n \n \n \n \n 3\n 89086\n \n \n \n \n \n \n \n \n \n \n \n 4\n 113225\n \n \n \n \n \n \n \n \n \n \n \n 5\n 110067\n \n \n \n \n \n \n \n \n \n \n \n 6\n 65494\n \n \n \n \n \n \n \n \n \n \n \n 7\n 19150\n \n \n \n \n \n \n \n \n \n \n \n 8\n 7285\n \n \n \n \n \n \n \n \n \n \n \n 9\n 26315\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 142.62940176881781\n \n \n \n \n \n \n \n stddev\n 41.19787467368248\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 36\n \n \n \n \n \n \n \n valid_percent\n 85.86123196095076\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 38.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1158\n \n \n \n \n \n \n \n \n \n \n \n 1\n 44861\n \n \n \n \n \n \n \n \n \n \n \n 2\n 138698\n \n \n \n \n \n \n \n \n \n \n \n 3\n 165948\n \n \n \n \n \n \n \n \n \n \n \n 4\n 107002\n \n \n \n \n \n \n \n \n \n \n \n 5\n 19598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 7078\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4755\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4116\n \n \n \n \n \n \n \n \n \n \n \n 9\n 24646\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 119.52298497663462\n \n \n \n \n \n \n \n stddev\n 39.08601814224436\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 38\n \n \n \n \n \n \n \n valid_percent\n 85.86123196095076\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001024149632094342\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943437\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2A_trueColor_2025-06-21_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 9.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2\n \n \n \n \n \n \n \n \n \n \n \n 1\n 7\n \n \n \n \n \n \n \n \n \n \n \n 2\n 1073\n \n \n \n \n \n \n \n \n \n \n \n 3\n 9470\n \n \n \n \n \n \n \n \n \n \n \n 4\n 32976\n \n \n \n \n \n \n \n \n \n \n \n 5\n 60100\n \n \n \n \n \n \n \n \n \n \n \n 6\n 62940\n \n \n \n \n \n \n \n \n \n \n \n 7\n 76158\n \n \n \n \n \n \n \n \n \n \n \n 8\n 83278\n \n \n \n \n \n \n \n \n \n \n \n 9\n 190527\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 202.85543365257845\n \n \n \n \n \n \n \n stddev\n 45.94229872055704\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 9\n \n \n \n \n \n \n \n valid_percent\n 85.64088364813243\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 349\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3207\n \n \n \n \n \n \n \n \n \n \n \n 2\n 33966\n \n \n \n \n \n \n \n \n \n \n \n 3\n 59819\n \n \n \n \n \n \n \n \n \n \n \n 4\n 86599\n \n \n \n \n \n \n \n \n \n \n \n 5\n 104346\n \n \n \n \n \n \n \n \n \n \n \n 6\n 88942\n \n \n \n \n \n \n \n \n \n \n \n 7\n 65989\n \n \n \n \n \n \n \n \n \n \n \n 8\n 23483\n \n \n \n \n \n \n \n \n \n \n \n 9\n 49831\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 171.89144310796448\n \n \n \n \n \n \n \n stddev\n 40.587680660082356\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 85.64088364813243\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 754\n \n \n \n \n \n \n \n \n \n \n \n 1\n 20959\n \n \n \n \n \n \n \n \n \n \n \n 2\n 73692\n \n \n \n \n \n \n \n \n \n \n \n 3\n 114101\n \n \n \n \n \n \n \n \n \n \n \n 4\n 119623\n \n \n \n \n \n \n \n \n \n \n \n 5\n 98025\n \n \n \n \n \n \n \n \n \n \n \n 6\n 32613\n \n \n \n \n \n \n \n \n \n \n \n 7\n 10382\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5654\n \n \n \n \n \n \n \n \n \n \n \n 9\n 40728\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 147.03224007852384\n \n \n \n \n \n \n \n stddev\n 41.66475049612327\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 85.64088364813243\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-20\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-20T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-20\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202507_Flood_TX_NW_CentralTX_S2C_colorInfrared_merged_2025-06-20_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19105\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32633\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 36.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 209\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4364\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8304\n \n \n \n \n \n \n \n \n \n \n \n 3\n 7915\n \n \n \n \n \n \n \n \n \n \n \n 4\n 10549\n \n \n \n \n \n \n \n \n \n \n \n 5\n 44463\n \n \n \n \n \n \n \n \n \n \n \n 6\n 117806\n \n \n \n \n \n \n \n \n \n \n \n 7\n 128397\n \n \n \n \n \n \n \n \n \n \n \n 8\n 92337\n \n \n \n \n \n \n \n \n \n \n \n 9\n 91076\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 198.19859127062642\n \n \n \n \n \n \n \n stddev\n 36.74165872099933\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 36\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 34.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 15617\n \n \n \n \n \n \n \n \n \n \n \n 1\n 61996\n \n \n \n \n \n \n \n \n \n \n \n 2\n 83828\n \n \n \n \n \n \n \n \n \n \n \n 3\n 87585\n \n \n \n \n \n \n \n \n \n \n \n 4\n 79429\n \n \n \n \n \n \n \n \n \n \n \n 5\n 66182\n \n \n \n \n \n \n \n \n \n \n \n 6\n 49990\n \n \n \n \n \n \n \n \n \n \n \n 7\n 29631\n \n \n \n \n \n \n \n \n \n \n \n 8\n 13985\n \n \n \n \n \n \n \n \n \n \n \n 9\n 17177\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 129.61719362114678\n \n \n \n \n \n \n \n stddev\n 48.11211521992692\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 34\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 32.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 9292\n \n \n \n \n \n \n \n \n \n \n \n 1\n 56940\n \n \n \n \n \n \n \n \n \n \n \n 2\n 135198\n \n \n \n \n \n \n \n \n \n \n \n 3\n 125037\n \n \n \n \n \n \n \n \n \n \n \n 4\n 87306\n \n \n \n \n \n \n \n \n \n \n \n 5\n 45908\n \n \n \n \n \n \n \n \n \n \n \n 6\n 22035\n \n \n \n \n \n \n \n \n \n \n \n 7\n 8044\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4466\n \n \n \n \n \n \n \n \n \n \n \n 9\n 11194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 114.30350797356654\n \n \n \n \n \n \n \n stddev\n 38.86362021961743\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 32\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_NW_CentralTX_S2C_trueColor_merged_2025-06-20_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n 2\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19105\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32633\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4303\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18757\n \n \n \n \n \n \n \n \n \n \n \n 2\n 40321\n \n \n \n \n \n \n \n \n \n \n \n 3\n 51400\n \n \n \n \n \n \n \n \n \n \n \n 4\n 46660\n \n \n \n \n \n \n \n \n \n \n \n 5\n 56110\n \n \n \n \n \n \n \n \n \n \n \n 6\n 54044\n \n \n \n \n \n \n \n \n \n \n \n 7\n 50117\n \n \n \n \n \n \n \n \n \n \n \n 8\n 44921\n \n \n \n \n \n \n \n \n \n \n \n 9\n 138787\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 184.57167899964386\n \n \n \n \n \n \n \n stddev\n 55.861402388286315\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2110\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11327\n \n \n \n \n \n \n \n \n \n \n \n 2\n 33745\n \n \n \n \n \n \n \n \n \n \n \n 3\n 77223\n \n \n \n \n \n \n \n \n \n \n \n 4\n 89109\n \n \n \n \n \n \n \n \n \n \n \n 5\n 81491\n \n \n \n \n \n \n \n \n \n \n \n 6\n 68227\n \n \n \n \n \n \n \n \n \n \n \n 7\n 50541\n \n \n \n \n \n \n \n \n \n \n \n 8\n 32693\n \n \n \n \n \n \n \n \n \n \n \n 9\n 58954\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 166.98820189149617\n \n \n \n \n \n \n \n stddev\n 46.971591790956786\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4414\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38258\n \n \n \n \n \n \n \n \n \n \n \n 2\n 92838\n \n \n \n \n \n \n \n \n \n \n \n 3\n 106438\n \n \n \n \n \n \n \n \n \n \n \n 4\n 92994\n \n \n \n \n \n \n \n \n \n \n \n 5\n 65339\n \n \n \n \n \n \n \n \n \n \n \n 6\n 40796\n \n \n \n \n \n \n \n \n \n \n \n 7\n 23847\n \n \n \n \n \n \n \n \n \n \n \n 8\n 12278\n \n \n \n \n \n \n \n \n \n \n \n 9\n 28218\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 137.8777135847414\n \n \n \n \n \n \n \n stddev\n 45.139994778221386\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 82.26236979166667\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -98.89607268429235\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607195910046208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.1929523538602\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010102900957827543\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735513803916\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 7\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-19\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-19T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-19\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2C_colorInfrared_2025-06-19_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 35.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1963\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4074\n \n \n \n \n \n \n \n \n \n \n \n 2\n 4186\n \n \n \n \n \n \n \n \n \n \n \n 3\n 6333\n \n \n \n \n \n \n \n \n \n \n \n 4\n 24864\n \n \n \n \n \n \n \n \n \n \n \n 5\n 146998\n \n \n \n \n \n \n \n \n \n \n \n 6\n 166973\n \n \n \n \n \n \n \n \n \n \n \n 7\n 97262\n \n \n \n \n \n \n \n \n \n \n \n 8\n 31143\n \n \n \n \n \n \n \n \n \n \n \n 9\n 47778\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 179.90479218321437\n \n \n \n \n \n \n \n stddev\n 34.131406156304344\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 35\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 27.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2579\n \n \n \n \n \n \n \n \n \n \n \n 1\n 7281\n \n \n \n \n \n \n \n \n \n \n \n 2\n 30890\n \n \n \n \n \n \n \n \n \n \n \n 3\n 71732\n \n \n \n \n \n \n \n \n \n \n \n 4\n 124165\n \n \n \n \n \n \n \n \n \n \n \n 5\n 144055\n \n \n \n \n \n \n \n \n \n \n \n 6\n 86263\n \n \n \n \n \n \n \n \n \n \n \n 7\n 19385\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4461\n \n \n \n \n \n \n \n \n \n \n \n 9\n 40763\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 148.67237110919646\n \n \n \n \n \n \n \n stddev\n 42.207367961665824\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 27\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 28.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2944\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9368\n \n \n \n \n \n \n \n \n \n \n \n 2\n 80743\n \n \n \n \n \n \n \n \n \n \n \n 3\n 193342\n \n \n \n \n \n \n \n \n \n \n \n 4\n 171812\n \n \n \n \n \n \n \n \n \n \n \n 5\n 21911\n \n \n \n \n \n \n \n \n \n \n \n 6\n 4265\n \n \n \n \n \n \n \n \n \n \n \n 7\n 3098\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3356\n \n \n \n \n \n \n \n \n \n \n \n 9\n 40735\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 124.86471121612419\n \n \n \n \n \n \n \n stddev\n 43.04367460816058\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 28\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001024149632094342\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943437\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2C_trueColor_2025-06-19_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1530\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5483\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8026\n \n \n \n \n \n \n \n \n \n \n \n 3\n 17744\n \n \n \n \n \n \n \n \n \n \n \n 4\n 29675\n \n \n \n \n \n \n \n \n \n \n \n 5\n 42627\n \n \n \n \n \n \n \n \n \n \n \n 6\n 64235\n \n \n \n \n \n \n \n \n \n \n \n 7\n 83858\n \n \n \n \n \n \n \n \n \n \n \n 8\n 86007\n \n \n \n \n \n \n \n \n \n \n \n 9\n 191042\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 209.22568635697542\n \n \n \n \n \n \n \n stddev\n 43.723387862604945\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1732\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5078\n \n \n \n \n \n \n \n \n \n \n \n 2\n 10372\n \n \n \n \n \n \n \n \n \n \n \n 3\n 39654\n \n \n \n \n \n \n \n \n \n \n \n 4\n 77240\n \n \n \n \n \n \n \n \n \n \n \n 5\n 119333\n \n \n \n \n \n \n \n \n \n \n \n 6\n 128059\n \n \n \n \n \n \n \n \n \n \n \n 7\n 72233\n \n \n \n \n \n \n \n \n \n \n \n 8\n 20463\n \n \n \n \n \n \n \n \n \n \n \n 9\n 56063\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 176.3903384776709\n \n \n \n \n \n \n \n stddev\n 39.21593480273656\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1063\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6234\n \n \n \n \n \n \n \n \n \n \n \n 2\n 26196\n \n \n \n \n \n \n \n \n \n \n \n 3\n 77962\n \n \n \n \n \n \n \n \n \n \n \n 4\n 161245\n \n \n \n \n \n \n \n \n \n \n \n 5\n 157112\n \n \n \n \n \n \n \n \n \n \n \n 6\n 38034\n \n \n \n \n \n \n \n \n \n \n \n 7\n 7908\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3016\n \n \n \n \n \n \n \n \n \n \n \n 9\n 51457\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 151.79102535329207\n \n \n \n \n \n \n \n stddev\n 41.109792327525916\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 8\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-18\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-18T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-18\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202507_Flood_TX_ReevesCountyTX_S2B_colorInfrared_merged_2025-06-18_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19511\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22807\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 40.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 106\n \n \n \n \n \n \n \n \n \n \n \n 1\n 669\n \n \n \n \n \n \n \n \n \n \n \n 2\n 341\n \n \n \n \n \n \n \n \n \n \n \n 3\n 905\n \n \n \n \n \n \n \n \n \n \n \n 4\n 17165\n \n \n \n \n \n \n \n \n \n \n \n 5\n 53074\n \n \n \n \n \n \n \n \n \n \n \n 6\n 89405\n \n \n \n \n \n \n \n \n \n \n \n 7\n 156042\n \n \n \n \n \n \n \n \n \n \n \n 8\n 256978\n \n \n \n \n \n \n \n \n \n \n \n 9\n 294693\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 216.89884262081625\n \n \n \n \n \n \n \n stddev\n 29.73568870827532\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 40\n \n \n \n \n \n \n \n valid_percent\n 96.80752031071836\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 44.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 537\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4836\n \n \n \n \n \n \n \n \n \n \n \n 2\n 27478\n \n \n \n \n \n \n \n \n \n \n \n 3\n 73480\n \n \n \n \n \n \n \n \n \n \n \n 4\n 121609\n \n \n \n \n \n \n \n \n \n \n \n 5\n 197092\n \n \n \n \n \n \n \n \n \n \n \n 6\n 193288\n \n \n \n \n \n \n \n \n \n \n \n 7\n 158477\n \n \n \n \n \n \n \n \n \n \n \n 8\n 60666\n \n \n \n \n \n \n \n \n \n \n \n 9\n 31910\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 170.9523541678888\n \n \n \n \n \n \n \n stddev\n 34.808563159509994\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 44\n \n \n \n \n \n \n \n valid_percent\n 96.80696354760548\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 46.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 131\n \n \n \n \n \n \n \n \n \n \n \n 1\n 15021\n \n \n \n \n \n \n \n \n \n \n \n 2\n 113891\n \n \n \n \n \n \n \n \n \n \n \n 3\n 201709\n \n \n \n \n \n \n \n \n \n \n \n 4\n 259233\n \n \n \n \n \n \n \n \n \n \n \n 5\n 183311\n \n \n \n \n \n \n \n \n \n \n \n 6\n 72328\n \n \n \n \n \n \n \n \n \n \n \n 7\n 16227\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5235\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2292\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 138.45518980236446\n \n \n \n \n \n \n \n stddev\n 27.38600197306657\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 46\n \n \n \n \n \n \n \n valid_percent\n 96.80752031071836\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_ReevesCountyTX_S2B_trueColor_merged_2025-06-18_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19511\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22807\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 66.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 88\n \n \n \n \n \n \n \n \n \n \n \n 1\n 772\n \n \n \n \n \n \n \n \n \n \n \n 2\n 2156\n \n \n \n \n \n \n \n \n \n \n \n 3\n 8682\n \n \n \n \n \n \n \n \n \n \n \n 4\n 21153\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34147\n \n \n \n \n \n \n \n \n \n \n \n 6\n 59040\n \n \n \n \n \n \n \n \n \n \n \n 7\n 73358\n \n \n \n \n \n \n \n \n \n \n \n 8\n 94412\n \n \n \n \n \n \n \n \n \n \n \n 9\n 575565\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 234.76948214402793\n \n \n \n \n \n \n \n stddev\n 30.493656679743843\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 66\n \n \n \n \n \n \n \n valid_percent\n 96.80696354760548\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 69.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 17\n \n \n \n \n \n \n \n \n \n \n \n 1\n 305\n \n \n \n \n \n \n \n \n \n \n \n 2\n 7432\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32047\n \n \n \n \n \n \n \n \n \n \n \n 4\n 73172\n \n \n \n \n \n \n \n \n \n \n \n 5\n 130461\n \n \n \n \n \n \n \n \n \n \n \n 6\n 133488\n \n \n \n \n \n \n \n \n \n \n \n 7\n 143217\n \n \n \n \n \n \n \n \n \n \n \n 8\n 135634\n \n \n \n \n \n \n \n \n \n \n \n 9\n 213605\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 204.85705412375285\n \n \n \n \n \n \n \n stddev\n 35.69291606448503\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 69\n \n \n \n \n \n \n \n valid_percent\n 96.80752031071836\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 69.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 222\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6147\n \n \n \n \n \n \n \n \n \n \n \n 2\n 53617\n \n \n \n \n \n \n \n \n \n \n \n 3\n 124089\n \n \n \n \n \n \n \n \n \n \n \n 4\n 153567\n \n \n \n \n \n \n \n \n \n \n \n 5\n 203894\n \n \n \n \n \n \n \n \n \n \n \n 6\n 163848\n \n \n \n \n \n \n \n \n \n \n \n 7\n 98415\n \n \n \n \n \n \n \n \n \n \n \n 8\n 38864\n \n \n \n \n \n \n \n \n \n \n \n 9\n 26715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 171.06886992769543\n \n \n \n \n \n \n \n stddev\n 32.18873344229535\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 69\n \n \n \n \n \n \n \n valid_percent\n 96.80752031071836\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.7664257295008\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.62638828399006\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -105.00021299182417\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.794305530422112e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735523603072\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 9\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-17\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-17\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202507_Flood_TX_CentralTX_S2C_colorInfrared_merged_2025-06-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28371\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43569\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 14.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 30\n \n \n \n \n \n \n \n \n \n \n \n 1\n 564\n \n \n \n \n \n \n \n \n \n \n \n 2\n 1405\n \n \n \n \n \n \n \n \n \n \n \n 3\n 1705\n \n \n \n \n \n \n \n \n \n \n \n 4\n 4822\n \n \n \n \n \n \n \n \n \n \n \n 5\n 44791\n \n \n \n \n \n \n \n \n \n \n \n 6\n 150986\n \n \n \n \n \n \n \n \n \n \n \n 7\n 148277\n \n \n \n \n \n \n \n \n \n \n \n 8\n 68903\n \n \n \n \n \n \n \n \n \n \n \n 9\n 38644\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 188.77273448417503\n \n \n \n \n \n \n \n stddev\n 28.551431595055693\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 14\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 10.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 17\n \n \n \n \n \n \n \n \n \n \n \n 1\n 90010\n \n \n \n \n \n \n \n \n \n \n \n 2\n 219281\n \n \n \n \n \n \n \n \n \n \n \n 3\n 90947\n \n \n \n \n \n \n \n \n \n \n \n 4\n 36281\n \n \n \n \n \n \n \n \n \n \n \n 5\n 13034\n \n \n \n \n \n \n \n \n \n \n \n 6\n 5409\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2239\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1206\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1703\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 79.77643780956127\n \n \n \n \n \n \n \n stddev\n 28.262464523437416\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 10\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 34.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 13716\n \n \n \n \n \n \n \n \n \n \n \n 1\n 241816\n \n \n \n \n \n \n \n \n \n \n \n 2\n 142973\n \n \n \n \n \n \n \n \n \n \n \n 3\n 40499\n \n \n \n \n \n \n \n \n \n \n \n 4\n 12023\n \n \n \n \n \n \n \n \n \n \n \n 5\n 4345\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1988\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1049\n \n \n \n \n \n \n \n \n \n \n \n 8\n 608\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1110\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 82.1141098001204\n \n \n \n \n \n \n \n stddev\n 22.270663970246282\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 34\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202507_Flood_TX_CentralTX_S2C_trueColor_merged_2025-06-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 3\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28371\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43569\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 15.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 5\n \n \n \n \n \n \n \n \n \n \n \n 1\n 506\n \n \n \n \n \n \n \n \n \n \n \n 2\n 69949\n \n \n \n \n \n \n \n \n \n \n \n 3\n 167036\n \n \n \n \n \n \n \n \n \n \n \n 4\n 103131\n \n \n \n \n \n \n \n \n \n \n \n 5\n 54907\n \n \n \n \n \n \n \n \n \n \n \n 6\n 28884\n \n \n \n \n \n \n \n \n \n \n \n 7\n 15125\n \n \n \n \n \n \n \n \n \n \n \n 8\n 8436\n \n \n \n \n \n \n \n \n \n \n \n 9\n 12148\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 118.84555351022652\n \n \n \n \n \n \n \n stddev\n 38.74708548668454\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 15\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38128\n \n \n \n \n \n \n \n \n \n \n \n 2\n 163838\n \n \n \n \n \n \n \n \n \n \n \n 3\n 141316\n \n \n \n \n \n \n \n \n \n \n \n 4\n 54652\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31201\n \n \n \n \n \n \n \n \n \n \n \n 6\n 13952\n \n \n \n \n \n \n \n \n \n \n \n 7\n 6693\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3546\n \n \n \n \n \n \n \n \n \n \n \n 9\n 6230\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 122.63315562877206\n \n \n \n \n \n \n \n stddev\n 30.410745533552507\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3702\n \n \n \n \n \n \n \n \n \n \n \n 1\n 175382\n \n \n \n \n \n \n \n \n \n \n \n 2\n 164700\n \n \n \n \n \n \n \n \n \n \n \n 3\n 65735\n \n \n \n \n \n \n \n \n \n \n \n 4\n 27341\n \n \n \n \n \n \n \n \n \n \n \n 5\n 10770\n \n \n \n \n \n \n \n \n \n \n \n 6\n 4963\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2705\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1545\n \n \n \n \n \n \n \n \n \n \n \n 9\n 3284\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 97.77661167460288\n \n \n \n \n \n \n \n stddev\n 27.733606327348852\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 67.36773214955024\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -96.78821462401571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28.822293210247743\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -101.1084940324395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.915948055782291e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31.635546833153736\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 10\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-14\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-14T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-14\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2B_colorInfrared_2025-06-14_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 31.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 475\n \n \n \n \n \n \n \n \n \n \n \n 1\n 279\n \n \n \n \n \n \n \n \n \n \n \n 2\n 472\n \n \n \n \n \n \n \n \n \n \n \n 3\n 1073\n \n \n \n \n \n \n \n \n \n \n \n 4\n 31877\n \n \n \n \n \n \n \n \n \n \n \n 5\n 190021\n \n \n \n \n \n \n \n \n \n \n \n 6\n 172772\n \n \n \n \n \n \n \n \n \n \n \n 7\n 100563\n \n \n \n \n \n \n \n \n \n \n \n 8\n 29296\n \n \n \n \n \n \n \n \n \n \n \n 9\n 4746\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 172.61599513896465\n \n \n \n \n \n \n \n stddev\n 23.214333500371186\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 31\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 27.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 207\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3702\n \n \n \n \n \n \n \n \n \n \n \n 2\n 59754\n \n \n \n \n \n \n \n \n \n \n \n 3\n 107242\n \n \n \n \n \n \n \n \n \n \n \n 4\n 131550\n \n \n \n \n \n \n \n \n \n \n \n 5\n 137860\n \n \n \n \n \n \n \n \n \n \n \n 6\n 76001\n \n \n \n \n \n \n \n \n \n \n \n 7\n 14089\n \n \n \n \n \n \n \n \n \n \n \n 8\n 895\n \n \n \n \n \n \n \n \n \n \n \n 9\n 274\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 133.63479967041278\n \n \n \n \n \n \n \n stddev\n 29.596369446267325\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 27\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 20.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 128\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1122\n \n \n \n \n \n \n \n \n \n \n \n 2\n 105731\n \n \n \n \n \n \n \n \n \n \n \n 3\n 201848\n \n \n \n \n \n \n \n \n \n \n \n 4\n 195771\n \n \n \n \n \n \n \n \n \n \n \n 5\n 24679\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1666\n \n \n \n \n \n \n \n \n \n \n \n 7\n 289\n \n \n \n \n \n \n \n \n \n \n \n 8\n 119\n \n \n \n \n \n \n \n \n \n \n \n 9\n 221\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 108.48233736036751\n \n \n \n \n \n \n \n stddev\n 19.114154655153627\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 20\n \n \n \n \n \n \n \n valid_percent\n 88.13501432512734\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001024149632094342\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943437\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2B_trueColor_2025-06-14_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10625\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18489\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 172\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1652\n \n \n \n \n \n \n \n \n \n \n \n 2\n 10398\n \n \n \n \n \n \n \n \n \n \n \n 3\n 30996\n \n \n \n \n \n \n \n \n \n \n \n 4\n 50115\n \n \n \n \n \n \n \n \n \n \n \n 5\n 61053\n \n \n \n \n \n \n \n \n \n \n \n 6\n 75446\n \n \n \n \n \n \n \n \n \n \n \n 7\n 86452\n \n \n \n \n \n \n \n \n \n \n \n 8\n 83103\n \n \n \n \n \n \n \n \n \n \n \n 9\n 130840\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 197.7495506641495\n \n \n \n \n \n \n \n stddev\n 43.36829393444803\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 118\n \n \n \n \n \n \n \n \n \n \n \n 1\n 228\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8821\n \n \n \n \n \n \n \n \n \n \n \n 3\n 57489\n \n \n \n \n \n \n \n \n \n \n \n 4\n 94727\n \n \n \n \n \n \n \n \n \n \n \n 5\n 140665\n \n \n \n \n \n \n \n \n \n \n \n 6\n 129797\n \n \n \n \n \n \n \n \n \n \n \n 7\n 73087\n \n \n \n \n \n \n \n \n \n \n \n 8\n 19180\n \n \n \n \n \n \n \n \n \n \n \n 9\n 6115\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 162.51709173618093\n \n \n \n \n \n \n \n stddev\n 30.70486584269924\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 27.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 40\n \n \n \n \n \n \n \n \n \n \n \n 1\n 556\n \n \n \n \n \n \n \n \n \n \n \n 2\n 22643\n \n \n \n \n \n \n \n \n \n \n \n 3\n 95969\n \n \n \n \n \n \n \n \n \n \n \n 4\n 155999\n \n \n \n \n \n \n \n \n \n \n \n 5\n 183058\n \n \n \n \n \n \n \n \n \n \n \n 6\n 61780\n \n \n \n \n \n \n \n \n \n \n \n 7\n 7204\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1690\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1288\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 137.5152038655142\n \n \n \n \n \n \n \n stddev\n 24.967917190858447\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 27\n \n \n \n \n \n \n \n valid_percent\n 87.91168161078099\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -107.02300475024049\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37565966114931\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.91655500501972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010241496320943453\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.463818645249546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 11\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-11\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n 2\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 3\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-11T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-11\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_Mora_LasVegas_S2B_colorInfrared_2025-06-11_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.149947152157075\n \n \n \n \n \n \n \n \n \n \n \n 2\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 3\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 9858\n \n \n \n \n \n \n \n \n \n \n \n 1\n 12092\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 5.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 233\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2836\n \n \n \n \n \n \n \n \n \n \n \n 2\n 2791\n \n \n \n \n \n \n \n \n \n \n \n 3\n 2733\n \n \n \n \n \n \n \n \n \n \n \n 4\n 4313\n \n \n \n \n \n \n \n \n \n \n \n 5\n 69660\n \n \n \n \n \n \n \n \n \n \n \n 6\n 344877\n \n \n \n \n \n \n \n \n \n \n \n 7\n 259996\n \n \n \n \n \n \n \n \n \n \n \n 8\n 85865\n \n \n \n \n \n \n \n \n \n \n \n 9\n 73603\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 183.68948066316608\n \n \n \n \n \n \n \n stddev\n 30.181359043538986\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 5\n \n \n \n \n \n \n \n valid_percent\n 99.04881642964072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 19.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4023\n \n \n \n \n \n \n \n \n \n \n \n 1\n 47120\n \n \n \n \n \n \n \n \n \n \n \n 2\n 184948\n \n \n \n \n \n \n \n \n \n \n \n 3\n 297761\n \n \n \n \n \n \n \n \n \n \n \n 4\n 158104\n \n \n \n \n \n \n \n \n \n \n \n 5\n 69414\n \n \n \n \n \n \n \n \n \n \n \n 6\n 21055\n \n \n \n \n \n \n \n \n \n \n \n 7\n 8806\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4703\n \n \n \n \n \n \n \n \n \n \n \n 9\n 50973\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 114.25562901239451\n \n \n \n \n \n \n \n stddev\n 45.2588148623244\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 19\n \n \n \n \n \n \n \n valid_percent\n 99.04881642964072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 21.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3776\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30938\n \n \n \n \n \n \n \n \n \n \n \n 2\n 346532\n \n \n \n \n \n \n \n \n \n \n \n 3\n 300081\n \n \n \n \n \n \n \n \n \n \n \n 4\n 81410\n \n \n \n \n \n \n \n \n \n \n \n 5\n 21035\n \n \n \n \n \n \n \n \n \n \n \n 6\n 5861\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2877\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2715\n \n \n \n \n \n \n \n \n \n \n \n 9\n 51682\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 104.59440765042679\n \n \n \n \n \n \n \n stddev\n 43.68727476744306\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 21\n \n \n \n \n \n \n \n valid_percent\n 99.04881642964072\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.149947152157075\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.149947152157075\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014303\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.149947152157075\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010092830731398869\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.000100928307313988\n \n \n \n \n \n \n \n \n \n \n \n 5\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_Mora_LasVegas_S2B_trueColor_2025-06-11_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n 2\n -104.89150000014304\n \n \n \n \n \n \n \n \n \n \n \n 3\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 9858\n \n \n \n \n \n \n \n \n \n \n \n 1\n 12092\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 33.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2956\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8169\n \n \n \n \n \n \n \n \n \n \n \n 2\n 60389\n \n \n \n \n \n \n \n \n \n \n \n 3\n 107233\n \n \n \n \n \n \n \n \n \n \n \n 4\n 127749\n \n \n \n \n \n \n \n \n \n \n \n 5\n 193917\n \n \n \n \n \n \n \n \n \n \n \n 6\n 116964\n \n \n \n \n \n \n \n \n \n \n \n 7\n 83223\n \n \n \n \n \n \n \n \n \n \n \n 8\n 42213\n \n \n \n \n \n \n \n \n \n \n \n 9\n 102622\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 162.50322614985186\n \n \n \n \n \n \n \n stddev\n 48.08983266710749\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 33\n \n \n \n \n \n \n \n valid_percent\n 98.87666074101796\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 33.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2294\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3778\n \n \n \n \n \n \n \n \n \n \n \n 2\n 42037\n \n \n \n \n \n \n \n \n \n \n \n 3\n 174228\n \n \n \n \n \n \n \n \n \n \n \n 4\n 227565\n \n \n \n \n \n \n \n \n \n \n \n 5\n 202355\n \n \n \n \n \n \n \n \n \n \n \n 6\n 73081\n \n \n \n \n \n \n \n \n \n \n \n 7\n 36119\n \n \n \n \n \n \n \n \n \n \n \n 8\n 13875\n \n \n \n \n \n \n \n \n \n \n \n 9\n 70106\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 148.5935337659296\n \n \n \n \n \n \n \n stddev\n 41.95990429910034\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 33\n \n \n \n \n \n \n \n valid_percent\n 98.87701160179641\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1859\n \n \n \n \n \n \n \n \n \n \n \n 1\n 16714\n \n \n \n \n \n \n \n \n \n \n \n 2\n 208120\n \n \n \n \n \n \n \n \n \n \n \n 3\n 287422\n \n \n \n \n \n \n \n \n \n \n \n 4\n 183075\n \n \n \n \n \n \n \n \n \n \n \n 5\n 51750\n \n \n \n \n \n \n \n \n \n \n \n 6\n 22825\n \n \n \n \n \n \n \n \n \n \n \n 7\n 7708\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3963\n \n \n \n \n \n \n \n \n \n \n \n 9\n 62000\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 123.0517117794842\n \n \n \n \n \n \n \n stddev\n 44.466851705685634\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 98.87677769461078\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014304\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -104.89150000014304\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.14994715215707\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010092830731398836\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.11192509218378\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010092830731398836\n \n \n \n \n \n \n \n \n \n \n \n 5\n 36.14489840565837\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 12\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-09\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-09T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-09\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2C_colorInfrared_2025-06-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10731\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18657\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 31.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1167\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2047\n \n \n \n \n \n \n \n \n \n \n \n 2\n 1637\n \n \n \n \n \n \n \n \n \n \n \n 3\n 1983\n \n \n \n \n \n \n \n \n \n \n \n 4\n 26820\n \n \n \n \n \n \n \n \n \n \n \n 5\n 174344\n \n \n \n \n \n \n \n \n \n \n \n 6\n 172968\n \n \n \n \n \n \n \n \n \n \n \n 7\n 101871\n \n \n \n \n \n \n \n \n \n \n \n 8\n 30539\n \n \n \n \n \n \n \n \n \n \n \n 9\n 17116\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 174.80425718012714\n \n \n \n \n \n \n \n stddev\n 27.317252333798095\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 31\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2540\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6060\n \n \n \n \n \n \n \n \n \n \n \n 2\n 54441\n \n \n \n \n \n \n \n \n \n \n \n 3\n 96029\n \n \n \n \n \n \n \n \n \n \n \n 4\n 140881\n \n \n \n \n \n \n \n \n \n \n \n 5\n 130869\n \n \n \n \n \n \n \n \n \n \n \n 6\n 73605\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13715\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2127\n \n \n \n \n \n \n \n \n \n \n \n 9\n 10225\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 137.3293169359764\n \n \n \n \n \n \n \n stddev\n 33.809314113255354\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2777\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11381\n \n \n \n \n \n \n \n \n \n \n \n 2\n 131473\n \n \n \n \n \n \n \n \n \n \n \n 3\n 208710\n \n \n \n \n \n \n \n \n \n \n \n 4\n 147941\n \n \n \n \n \n \n \n \n \n \n \n 5\n 13304\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2085\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1347\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1396\n \n \n \n \n \n \n \n \n \n \n \n 9\n 10078\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 112.29378576868265\n \n \n \n \n \n \n \n stddev\n 28.289548883427734\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010155627846948921\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010155627846948902\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2C_trueColor_2025-06-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10731\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18657\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2225\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3927\n \n \n \n \n \n \n \n \n \n \n \n 2\n 11078\n \n \n \n \n \n \n \n \n \n \n \n 3\n 29024\n \n \n \n \n \n \n \n \n \n \n \n 4\n 36704\n \n \n \n \n \n \n \n \n \n \n \n 5\n 56057\n \n \n \n \n \n \n \n \n \n \n \n 6\n 74439\n \n \n \n \n \n \n \n \n \n \n \n 7\n 87987\n \n \n \n \n \n \n \n \n \n \n \n 8\n 84284\n \n \n \n \n \n \n \n \n \n \n \n 9\n 143546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 200.4881525721228\n \n \n \n \n \n \n \n stddev\n 44.00330264921176\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1942\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2886\n \n \n \n \n \n \n \n \n \n \n \n 2\n 16216\n \n \n \n \n \n \n \n \n \n \n \n 3\n 62153\n \n \n \n \n \n \n \n \n \n \n \n 4\n 96732\n \n \n \n \n \n \n \n \n \n \n \n 5\n 127597\n \n \n \n \n \n \n \n \n \n \n \n 6\n 124850\n \n \n \n \n \n \n \n \n \n \n \n 7\n 62837\n \n \n \n \n \n \n \n \n \n \n \n 8\n 15478\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18580\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 165.45196317198562\n \n \n \n \n \n \n \n stddev\n 34.129329160357095\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 42.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1964\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9516\n \n \n \n \n \n \n \n \n \n \n \n 2\n 57189\n \n \n \n \n \n \n \n \n \n \n \n 3\n 118063\n \n \n \n \n \n \n \n \n \n \n \n 4\n 172531\n \n \n \n \n \n \n \n \n \n \n \n 5\n 119174\n \n \n \n \n \n \n \n \n \n \n \n 6\n 29610\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4963\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1601\n \n \n \n \n \n \n \n \n \n \n \n 9\n 14660\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 138.5040423525944\n \n \n \n \n \n \n \n stddev\n 31.33891173315184\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 42\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010155627846948929\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010155627846948929\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 13\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-08\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-08T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-08\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_Roswell_Mescalero_S2A_colorInfrared_2025-06-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 18372\n \n \n \n \n \n \n \n \n \n \n \n 1\n 52655\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 44\n \n \n \n \n \n \n \n \n \n \n \n 1\n 145\n \n \n \n \n \n \n \n \n \n \n \n 2\n 562\n \n \n \n \n \n \n \n \n \n \n \n 3\n 990\n \n \n \n \n \n \n \n \n \n \n \n 4\n 1427\n \n \n \n \n \n \n \n \n \n \n \n 5\n 19791\n \n \n \n \n \n \n \n \n \n \n \n 6\n 48475\n \n \n \n \n \n \n \n \n \n \n \n 7\n 63513\n \n \n \n \n \n \n \n \n \n \n \n 8\n 49982\n \n \n \n \n \n \n \n \n \n \n \n 9\n 26107\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 197.55443620993574\n \n \n \n \n \n \n \n stddev\n 28.69759338702131\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 57.56699546089386\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 35.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 197\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4307\n \n \n \n \n \n \n \n \n \n \n \n 2\n 9375\n \n \n \n \n \n \n \n \n \n \n \n 3\n 19642\n \n \n \n \n \n \n \n \n \n \n \n 4\n 43118\n \n \n \n \n \n \n \n \n \n \n \n 5\n 57213\n \n \n \n \n \n \n \n \n \n \n \n 6\n 43903\n \n \n \n \n \n \n \n \n \n \n \n 7\n 23523\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5554\n \n \n \n \n \n \n \n \n \n \n \n 9\n 4204\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 155.21418620519722\n \n \n \n \n \n \n \n stddev\n 34.82485669354433\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 35\n \n \n \n \n \n \n \n valid_percent\n 57.56699546089386\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 35.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 183\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8223\n \n \n \n \n \n \n \n \n \n \n \n 2\n 26623\n \n \n \n \n \n \n \n \n \n \n \n 3\n 67096\n \n \n \n \n \n \n \n \n \n \n \n 4\n 75631\n \n \n \n \n \n \n \n \n \n \n \n 5\n 24355\n \n \n \n \n \n \n \n \n \n \n \n 6\n 4277\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1184\n \n \n \n \n \n \n \n \n \n \n \n 8\n 787\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2677\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 124.03977520423055\n \n \n \n \n \n \n \n stddev\n 27.6383681787878\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 35\n \n \n \n \n \n \n \n valid_percent\n 57.56699546089386\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601717\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.408746932057156\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010520989757794922\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.000105209897577949\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_Roswell_Mescalero_S2A_trueColor_2025-06-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n 2\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 18372\n \n \n \n \n \n \n \n \n \n \n \n 1\n 52655\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 184\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2152\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3928\n \n \n \n \n \n \n \n \n \n \n \n 3\n 4484\n \n \n \n \n \n \n \n \n \n \n \n 4\n 7088\n \n \n \n \n \n \n \n \n \n \n \n 5\n 12285\n \n \n \n \n \n \n \n \n \n \n \n 6\n 17379\n \n \n \n \n \n \n \n \n \n \n \n 7\n 28588\n \n \n \n \n \n \n \n \n \n \n \n 8\n 32287\n \n \n \n \n \n \n \n \n \n \n \n 9\n 101974\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 220.0199478010354\n \n \n \n \n \n \n \n stddev\n 40.87699679842963\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 57.379593662709496\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 90\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1719\n \n \n \n \n \n \n \n \n \n \n \n 2\n 6357\n \n \n \n \n \n \n \n \n \n \n \n 3\n 10557\n \n \n \n \n \n \n \n \n \n \n \n 4\n 21194\n \n \n \n \n \n \n \n \n \n \n \n 5\n 39068\n \n \n \n \n \n \n \n \n \n \n \n 6\n 47156\n \n \n \n \n \n \n \n \n \n \n \n 7\n 42846\n \n \n \n \n \n \n \n \n \n \n \n 8\n 22640\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18722\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 183.50383410427432\n \n \n \n \n \n \n \n stddev\n 37.149962915249574\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 57.379593662709496\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 52\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3764\n \n \n \n \n \n \n \n \n \n \n \n 2\n 9792\n \n \n \n \n \n \n \n \n \n \n \n 3\n 29751\n \n \n \n \n \n \n \n \n \n \n \n 4\n 50924\n \n \n \n \n \n \n \n \n \n \n \n 5\n 67573\n \n \n \n \n \n \n \n \n \n \n \n 6\n 30543\n \n \n \n \n \n \n \n \n \n \n \n 7\n 9460\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2979\n \n \n \n \n \n \n \n \n \n \n \n 9\n 5511\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 149.98532438946702\n \n \n \n \n \n \n \n stddev\n 32.89288503021603\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 57.379593662709496\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -102.71976912601718\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.40874693205715\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010520989757794912\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.25959628298409\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010520989757794912\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166317035923\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 14\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-04-09\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-04-09T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-04-09\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_PAH_S2C_NDVI_merged_2025-04-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27298\n \n \n \n \n \n \n \n \n \n \n \n 1\n 48535\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.8082879781723022\n \n \n \n \n \n \n \n min\n -0.5638952255249023\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 4722\n \n \n \n \n \n \n \n \n \n \n \n 3\n 14701\n \n \n \n \n \n \n \n \n \n \n \n 4\n 125243\n \n \n \n \n \n \n \n \n \n \n \n 5\n 111372\n \n \n \n \n \n \n \n \n \n \n \n 6\n 96718\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13190\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1319\n \n \n \n \n \n \n \n \n \n \n \n 9\n 16\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.16824859287277896\n \n \n \n \n \n \n \n stddev\n 0.1424797544646726\n \n \n \n \n \n \n \n maximum\n 0.8082879781723022\n \n \n \n \n \n \n \n minimum\n -0.5638952255249023\n \n \n \n \n \n \n \n valid_percent\n 62.26976182725694\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/MNDWI/202504_SevereWx_US_PAH_S2C_MNDWI_merged_2025-04-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"MNDWI\"\n \n \n \n \n \n \n \n description\n \"Modified Normalized Difference Water Index for detecting and mapping surface water bodies and flood extent.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.9355154988561\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.887649123709\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 13648\n \n \n \n \n \n \n \n \n \n \n \n 1\n 24267\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.6358888149261475\n \n \n \n \n \n \n \n min\n -0.6659184694290161\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 7\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22831\n \n \n \n \n \n \n \n \n \n \n \n 2\n 112689\n \n \n \n \n \n \n \n \n \n \n \n 3\n 70834\n \n \n \n \n \n \n \n \n \n \n \n 4\n 34707\n \n \n \n \n \n \n \n \n \n \n \n 5\n 19636\n \n \n \n \n \n \n \n \n \n \n \n 6\n 17145\n \n \n \n \n \n \n \n \n \n \n \n 7\n 23083\n \n \n \n \n \n \n \n \n \n \n \n 8\n 29838\n \n \n \n \n \n \n \n \n \n \n \n 9\n 35537\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n -0.061656429280971974\n \n \n \n \n \n \n \n stddev\n 0.32586243029366707\n \n \n \n \n \n \n \n maximum\n 0.6358888149261475\n \n \n \n \n \n \n \n minimum\n -0.6659184694290161\n \n \n \n \n \n \n \n valid_percent\n 62.104458279079864\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.9355154988561\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.887649123709\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.9355154988561\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.887649123709\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.9355154988561\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00021347323168896816\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00021347323168896816\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_PAH_S2C_trueColor_merged_2025-04-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27298\n \n \n \n \n \n \n \n \n \n \n \n 1\n 48535\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 3.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 15\n \n \n \n \n \n \n \n \n \n \n \n 1\n 19\n \n \n \n \n \n \n \n \n \n \n \n 2\n 2394\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33827\n \n \n \n \n \n \n \n \n \n \n \n 4\n 91320\n \n \n \n \n \n \n \n \n \n \n \n 5\n 56156\n \n \n \n \n \n \n \n \n \n \n \n 6\n 39482\n \n \n \n \n \n \n \n \n \n \n \n 7\n 21373\n \n \n \n \n \n \n \n \n \n \n \n 8\n 13535\n \n \n \n \n \n \n \n \n \n \n \n 9\n 109159\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 171.75623774776736\n \n \n \n \n \n \n \n stddev\n 60.4077437532797\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 3\n \n \n \n \n \n \n \n valid_percent\n 62.26942274305556\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 52.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 488\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11503\n \n \n \n \n \n \n \n \n \n \n \n 2\n 82013\n \n \n \n \n \n \n \n \n \n \n \n 3\n 70730\n \n \n \n \n \n \n \n \n \n \n \n 4\n 44594\n \n \n \n \n \n \n \n \n \n \n \n 5\n 21115\n \n \n \n \n \n \n \n \n \n \n \n 6\n 12562\n \n \n \n \n \n \n \n \n \n \n \n 7\n 8796\n \n \n \n \n \n \n \n \n \n \n \n 8\n 8392\n \n \n \n \n \n \n \n \n \n \n \n 9\n 107089\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 166.30352971286368\n \n \n \n \n \n \n \n stddev\n 62.735580013367176\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 52\n \n \n \n \n \n \n \n valid_percent\n 62.26976182725694\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 32.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 246\n \n \n \n \n \n \n \n \n \n \n \n 1\n 20370\n \n \n \n \n \n \n \n \n \n \n \n 2\n 109505\n \n \n \n \n \n \n \n \n \n \n \n 3\n 63720\n \n \n \n \n \n \n \n \n \n \n \n 4\n 27599\n \n \n \n \n \n \n \n \n \n \n \n 5\n 13484\n \n \n \n \n \n \n \n \n \n \n \n 6\n 9540\n \n \n \n \n \n \n \n \n \n \n \n 7\n 7647\n \n \n \n \n \n \n \n \n \n \n \n 8\n 7953\n \n \n \n \n \n \n \n \n \n \n \n 9\n 107218\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 151.8085639917012\n \n \n \n \n \n \n \n stddev\n 72.2865011190005\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 32\n \n \n \n \n \n \n \n valid_percent\n 62.26976182725694\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 15\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-04-08\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n 2\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-04-08T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-04-08\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_PAH_S2A_NDVI_merged_2025-04-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n 2\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27476\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34862\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.7207437753677368\n \n \n \n \n \n \n \n min\n -0.5077634453773499\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2\n \n \n \n \n \n \n \n \n \n \n \n 1\n 138\n \n \n \n \n \n \n \n \n \n \n \n 2\n 24034\n \n \n \n \n \n \n \n \n \n \n \n 3\n 14172\n \n \n \n \n \n \n \n \n \n \n \n 4\n 14810\n \n \n \n \n \n \n \n \n \n \n \n 5\n 91399\n \n \n \n \n \n \n \n \n \n \n \n 6\n 225855\n \n \n \n \n \n \n \n \n \n \n \n 7\n 102280\n \n \n \n \n \n \n \n \n \n \n \n 8\n 42488\n \n \n \n \n \n \n \n \n \n \n \n 9\n 9668\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.27722733192212573\n \n \n \n \n \n \n \n stddev\n 0.16942706902631907\n \n \n \n \n \n \n \n maximum\n 0.7207437753677368\n \n \n \n \n \n \n \n minimum\n -0.5077634453773499\n \n \n \n \n \n \n \n valid_percent\n 63.43377745977723\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010237291207570683\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010237291207570683\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/MNDWI/202504_SevereWx_US_PAH_S2A_MNDWI_merged_2025-04-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"MNDWI\"\n \n \n \n \n \n \n \n description\n \"Modified Normalized Difference Water Index for detecting and mapping surface water bodies and flood extent.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n 2\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 13738\n \n \n \n \n \n \n \n \n \n \n \n 1\n 17431\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.46867701411247253\n \n \n \n \n \n \n \n min\n -0.5102433562278748\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 25256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 252746\n \n \n \n \n \n \n \n \n \n \n \n 2\n 169342\n \n \n \n \n \n \n \n \n \n \n \n 3\n 21833\n \n \n \n \n \n \n \n \n \n \n \n 4\n 11449\n \n \n \n \n \n \n \n \n \n \n \n 5\n 6943\n \n \n \n \n \n \n \n \n \n \n \n 6\n 5506\n \n \n \n \n \n \n \n \n \n \n \n 7\n 7090\n \n \n \n \n \n \n \n \n \n \n \n 8\n 24267\n \n \n \n \n \n \n \n \n \n \n \n 9\n 447\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n -0.27225670702199933\n \n \n \n \n \n \n \n stddev\n 0.17191783232441182\n \n \n \n \n \n \n \n maximum\n 0.46867701411247253\n \n \n \n \n \n \n \n minimum\n -0.5102433562278748\n \n \n \n \n \n \n \n valid_percent\n 63.4377658957302\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00020474582415141366\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00020474582415141366\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_PAH_S2A_trueColor_merged_2025-04-08_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n 2\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27476\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34862\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 57.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2800\n \n \n \n \n \n \n \n \n \n \n \n 1\n 44682\n \n \n \n \n \n \n \n \n \n \n \n 2\n 269763\n \n \n \n \n \n \n \n \n \n \n \n 3\n 112268\n \n \n \n \n \n \n \n \n \n \n \n 4\n 53075\n \n \n \n \n \n \n \n \n \n \n \n 5\n 31814\n \n \n \n \n \n \n \n \n \n \n \n 6\n 9911\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1765\n \n \n \n \n \n \n \n \n \n \n \n 8\n 258\n \n \n \n \n \n \n \n \n \n \n \n 9\n 83\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 118.53426643035301\n \n \n \n \n \n \n \n stddev\n 21.965308531918\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 57\n \n \n \n \n \n \n \n valid_percent\n 63.623892906868804\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 61.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 963\n \n \n \n \n \n \n \n \n \n \n \n 1\n 118711\n \n \n \n \n \n \n \n \n \n \n \n 2\n 266927\n \n \n \n \n \n \n \n \n \n \n \n 3\n 107647\n \n \n \n \n \n \n \n \n \n \n \n 4\n 28716\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2519\n \n \n \n \n \n \n \n \n \n \n \n 6\n 543\n \n \n \n \n \n \n \n \n \n \n \n 7\n 230\n \n \n \n \n \n \n \n \n \n \n \n 8\n 104\n \n \n \n \n \n \n \n \n \n \n \n 9\n 59\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 111.5009583620652\n \n \n \n \n \n \n \n stddev\n 15.463591107977019\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 61\n \n \n \n \n \n \n \n valid_percent\n 63.623892906868804\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 56.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 30355\n \n \n \n \n \n \n \n \n \n \n \n 1\n 372000\n \n \n \n \n \n \n \n \n \n \n \n 2\n 106197\n \n \n \n \n \n \n \n \n \n \n \n 3\n 15299\n \n \n \n \n \n \n \n \n \n \n \n 4\n 1571\n \n \n \n \n \n \n \n \n \n \n \n 5\n 563\n \n \n \n \n \n \n \n \n \n \n \n 6\n 217\n \n \n \n \n \n \n \n \n \n \n \n 7\n 125\n \n \n \n \n \n \n \n \n \n \n \n 8\n 59\n \n \n \n \n \n \n \n \n \n \n \n 9\n 33\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 88.96940649938547\n \n \n \n \n \n \n \n stddev\n 12.2216564881924\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 56\n \n \n \n \n \n \n \n valid_percent\n 63.623892906868804\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -85.73500638200515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.036199304615515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010237291207570683\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010237291207570683\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997436807636\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 16\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-04-07\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-04-07T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-04-07\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_SHV_S2B_NDVI_merged_2025-04-07_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 47646\n \n \n \n \n \n \n \n \n \n \n \n 1\n 46266\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.7748370170593262\n \n \n \n \n \n \n \n min\n -0.2459956556558609\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 696\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3040\n \n \n \n \n \n \n \n \n \n \n \n 2\n 163604\n \n \n \n \n \n \n \n \n \n \n \n 3\n 61864\n \n \n \n \n \n \n \n \n \n \n \n 4\n 48372\n \n \n \n \n \n \n \n \n \n \n \n 5\n 87379\n \n \n \n \n \n \n \n \n \n \n \n 6\n 136574\n \n \n \n \n \n \n \n \n \n \n \n 7\n 34140\n \n \n \n \n \n \n \n \n \n \n \n 8\n 870\n \n \n \n \n \n \n \n \n \n \n \n 9\n 23\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.22598822747883748\n \n \n \n \n \n \n \n stddev\n 0.1809525420624763\n \n \n \n \n \n \n \n maximum\n 0.7748370170593262\n \n \n \n \n \n \n \n minimum\n -0.2459956556558609\n \n \n \n \n \n \n \n valid_percent\n 52.661942525125625\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.72997701800737e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.72997701800737e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/MNDWI/202504_SevereWx_US_SHV_S2B_MNDWI_merged_2025-04-07_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"MNDWI\"\n \n \n \n \n \n \n \n description\n \"Modified Normalized Difference Water Index for detecting and mapping surface water bodies and flood extent.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 23823\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23133\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.5518237352371216\n \n \n \n \n \n \n \n min\n -0.6758840084075928\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 60\n \n \n \n \n \n \n \n \n \n \n \n 2\n 50046\n \n \n \n \n \n \n \n \n \n \n \n 3\n 173806\n \n \n \n \n \n \n \n \n \n \n \n 4\n 71912\n \n \n \n \n \n \n \n \n \n \n \n 5\n 89913\n \n \n \n \n \n \n \n \n \n \n \n 6\n 126027\n \n \n \n \n \n \n \n \n \n \n \n 7\n 23274\n \n \n \n \n \n \n \n \n \n \n \n 8\n 615\n \n \n \n \n \n \n \n \n \n \n \n 9\n 24\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n -0.08943719746284148\n \n \n \n \n \n \n \n stddev\n 0.17742839784843908\n \n \n \n \n \n \n \n maximum\n 0.5518237352371216\n \n \n \n \n \n \n \n minimum\n -0.6758840084075928\n \n \n \n \n \n \n \n valid_percent\n 52.57518059045226\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001945995403601474\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.0001945995403601474\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_SHV_S2B_trueColor_merged_2025-04-07_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 47646\n \n \n \n \n \n \n \n \n \n \n \n 1\n 46266\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 12.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 44\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1340\n \n \n \n \n \n \n \n \n \n \n \n 2\n 112970\n \n \n \n \n \n \n \n \n \n \n \n 3\n 127757\n \n \n \n \n \n \n \n \n \n \n \n 4\n 29892\n \n \n \n \n \n \n \n \n \n \n \n 5\n 16777\n \n \n \n \n \n \n \n \n \n \n \n 6\n 13793\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13269\n \n \n \n \n \n \n \n \n \n \n \n 8\n 16300\n \n \n \n \n \n \n \n \n \n \n \n 9\n 204420\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 162.30710150923844\n \n \n \n \n \n \n \n stddev\n 78.0295980690976\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 12\n \n \n \n \n \n \n \n valid_percent\n 52.661942525125625\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4297\n \n \n \n \n \n \n \n \n \n \n \n 1\n 111537\n \n \n \n \n \n \n \n \n \n \n \n 2\n 116990\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33584\n \n \n \n \n \n \n \n \n \n \n \n 4\n 14805\n \n \n \n \n \n \n \n \n \n \n \n 5\n 11807\n \n \n \n \n \n \n \n \n \n \n \n 6\n 11129\n \n \n \n \n \n \n \n \n \n \n \n 7\n 11880\n \n \n \n \n \n \n \n \n \n \n \n 8\n 15212\n \n \n \n \n \n \n \n \n \n \n \n 9\n 205321\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 168.25163168468882\n \n \n \n \n \n \n \n stddev\n 73.80025211176566\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 52.661942525125625\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 44.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1780\n \n \n \n \n \n \n \n \n \n \n \n 1\n 183016\n \n \n \n \n \n \n \n \n \n \n \n 2\n 65315\n \n \n \n \n \n \n \n \n \n \n \n 3\n 18304\n \n \n \n \n \n \n \n \n \n \n \n 4\n 12630\n \n \n \n \n \n \n \n \n \n \n \n 5\n 10962\n \n \n \n \n \n \n \n \n \n \n \n 6\n 10741\n \n \n \n \n \n \n \n \n \n \n \n 7\n 11483\n \n \n \n \n \n \n \n \n \n \n \n 8\n 14688\n \n \n \n \n \n \n \n \n \n \n \n 9\n 207643\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 160.79647459193905\n \n \n \n \n \n \n \n stddev\n 80.82731218377494\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 44\n \n \n \n \n \n \n \n valid_percent\n 52.661942525125625\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.79351237702127\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.607132487713518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.72997701800737e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.72997701800737e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.24307733771331\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 17\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-31\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-31T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-31\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_SHV_S2B_NDVI_merged_2025-03-31_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 48677\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35726\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.6461928486824036\n \n \n \n \n \n \n \n min\n -0.17600017786026\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1109\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3403\n \n \n \n \n \n \n \n \n \n \n \n 2\n 6967\n \n \n \n \n \n \n \n \n \n \n \n 3\n 7950\n \n \n \n \n \n \n \n \n \n \n \n 4\n 18020\n \n \n \n \n \n \n \n \n \n \n \n 5\n 99092\n \n \n \n \n \n \n \n \n \n \n \n 6\n 220916\n \n \n \n \n \n \n \n \n \n \n \n 7\n 96255\n \n \n \n \n \n \n \n \n \n \n \n 8\n 6943\n \n \n \n \n \n \n \n \n \n \n \n 9\n 342\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.34107298962899973\n \n \n \n \n \n \n \n stddev\n 0.08937802729860084\n \n \n \n \n \n \n \n maximum\n 0.6461928486824036\n \n \n \n \n \n \n \n minimum\n -0.17600017786026\n \n \n \n \n \n \n \n valid_percent\n 59.86600835272606\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.523779161311543e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.523779161311543e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_SHV_S2B_trueColor_merged_2025-03-31_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 48677\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35726\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 57.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 23694\n \n \n \n \n \n \n \n \n \n \n \n 1\n 222885\n \n \n \n \n \n \n \n \n \n \n \n 2\n 158493\n \n \n \n \n \n \n \n \n \n \n \n 3\n 28066\n \n \n \n \n \n \n \n \n \n \n \n 4\n 7117\n \n \n \n \n \n \n \n \n \n \n \n 5\n 4299\n \n \n \n \n \n \n \n \n \n \n \n 6\n 3073\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2490\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2489\n \n \n \n \n \n \n \n \n \n \n \n 9\n 8392\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 101.30887552657495\n \n \n \n \n \n \n \n stddev\n 29.36137952416511\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 57\n \n \n \n \n \n \n \n valid_percent\n 59.86613821476063\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 66.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 24878\n \n \n \n \n \n \n \n \n \n \n \n 1\n 222700\n \n \n \n \n \n \n \n \n \n \n \n 2\n 168039\n \n \n \n \n \n \n \n \n \n \n \n 3\n 19024\n \n \n \n \n \n \n \n \n \n \n \n 4\n 5847\n \n \n \n \n \n \n \n \n \n \n \n 5\n 3700\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2784\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2441\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2499\n \n \n \n \n \n \n \n \n \n \n \n 9\n 9086\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 107.5580870199003\n \n \n \n \n \n \n \n stddev\n 28.269668882552388\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 66\n \n \n \n \n \n \n \n valid_percent\n 59.86613821476063\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 55.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 42877\n \n \n \n \n \n \n \n \n \n \n \n 1\n 332382\n \n \n \n \n \n \n \n \n \n \n \n 2\n 53949\n \n \n \n \n \n \n \n \n \n \n \n 3\n 8060\n \n \n \n \n \n \n \n \n \n \n \n 4\n 4276\n \n \n \n \n \n \n \n \n \n \n \n 5\n 3069\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2497\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2263\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2370\n \n \n \n \n \n \n \n \n \n \n \n 9\n 9255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 91.65922845652258\n \n \n \n \n \n \n \n stddev\n 30.089333882872467\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 55\n \n \n \n \n \n \n \n valid_percent\n 59.86613821476063\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -92.8927182010024\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.60718762099428\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.523779161311543e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -96.29518354417256\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.523779161311543e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.2430776033459\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 18\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-22\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-22T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-22\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_PAH_S2B_NDVI_merged_2025-03-22_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28651\n \n \n \n \n \n \n \n \n \n \n \n 1\n 24613\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.7991350293159485\n \n \n \n \n \n \n \n min\n -0.3157775402069092\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2161\n \n \n \n \n \n \n \n \n \n \n \n 1\n 12344\n \n \n \n \n \n \n \n \n \n \n \n 2\n 5200\n \n \n \n \n \n \n \n \n \n \n \n 3\n 24180\n \n \n \n \n \n \n \n \n \n \n \n 4\n 262935\n \n \n \n \n \n \n \n \n \n \n \n 5\n 159080\n \n \n \n \n \n \n \n \n \n \n \n 6\n 62385\n \n \n \n \n \n \n \n \n \n \n \n 7\n 24330\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5432\n \n \n \n \n \n \n \n \n \n \n \n 9\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.24942037649601212\n \n \n \n \n \n \n \n stddev\n 0.12472641756329188\n \n \n \n \n \n \n \n maximum\n 0.7991350293159485\n \n \n \n \n \n \n \n minimum\n -0.3157775402069092\n \n \n \n \n \n \n \n valid_percent\n 61.93037553267045\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.817416803407473e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.817416803407473e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_PAH_S2B_trueColor_merged_2025-03-22_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28651\n \n \n \n \n \n \n \n \n \n \n \n 1\n 24613\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 15.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 152\n \n \n \n \n \n \n \n \n \n \n \n 1\n 233\n \n \n \n \n \n \n \n \n \n \n \n 2\n 5029\n \n \n \n \n \n \n \n \n \n \n \n 3\n 83910\n \n \n \n \n \n \n \n \n \n \n \n 4\n 274070\n \n \n \n \n \n \n \n \n \n \n \n 5\n 113883\n \n \n \n \n \n \n \n \n \n \n \n 6\n 51230\n \n \n \n \n \n \n \n \n \n \n \n 7\n 22344\n \n \n \n \n \n \n \n \n \n \n \n 8\n 7356\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1904\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 131.79316778281446\n \n \n \n \n \n \n \n stddev\n 26.288935365773433\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 15\n \n \n \n \n \n \n \n valid_percent\n 62.15720436789772\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 61.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1195\n \n \n \n \n \n \n \n \n \n \n \n 1\n 108060\n \n \n \n \n \n \n \n \n \n \n \n 2\n 228427\n \n \n \n \n \n \n \n \n \n \n \n 3\n 144739\n \n \n \n \n \n \n \n \n \n \n \n 4\n 54436\n \n \n \n \n \n \n \n \n \n \n \n 5\n 16322\n \n \n \n \n \n \n \n \n \n \n \n 6\n 4784\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1577\n \n \n \n \n \n \n \n \n \n \n \n 8\n 442\n \n \n \n \n \n \n \n \n \n \n \n 9\n 129\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 117.38784098151973\n \n \n \n \n \n \n \n stddev\n 20.180712404431972\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 61\n \n \n \n \n \n \n \n valid_percent\n 62.15720436789772\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 250.0\n \n \n \n \n \n \n \n min\n 61.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 13696\n \n \n \n \n \n \n \n \n \n \n \n 1\n 311908\n \n \n \n \n \n \n \n \n \n \n \n 2\n 168802\n \n \n \n \n \n \n \n \n \n \n \n 3\n 51039\n \n \n \n \n \n \n \n \n \n \n \n 4\n 11098\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2675\n \n \n \n \n \n \n \n \n \n \n \n 6\n 666\n \n \n \n \n \n \n \n \n \n \n \n 7\n 153\n \n \n \n \n \n \n \n \n \n \n \n 8\n 61\n \n \n \n \n \n \n \n \n \n \n \n 9\n 13\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 99.39978682796803\n \n \n \n \n \n \n \n stddev\n 15.104985158084972\n \n \n \n \n \n \n \n maximum\n 250\n \n \n \n \n \n \n \n minimum\n 61\n \n \n \n \n \n \n \n valid_percent\n 62.15720436789772\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757004496577\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.03621009398964\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.817416803407473e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.817416803407473e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848998182333915\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 19\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-19\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-19T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-19\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_MOB_S2B_NDVI_merged_2025-03-19_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28436\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43767\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1043.765625\n \n \n \n \n \n \n \n min\n -52.213985443115234\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 485439\n \n \n \n \n \n \n \n \n \n \n \n 1\n 504\n \n \n \n \n \n \n \n \n \n \n \n 2\n 270\n \n \n \n \n \n \n \n \n \n \n \n 3\n 230\n \n \n \n \n \n \n \n \n \n \n \n 4\n 219\n \n \n \n \n \n \n \n \n \n \n \n 5\n 207\n \n \n \n \n \n \n \n \n \n \n \n 6\n 234\n \n \n \n \n \n \n \n \n \n \n \n 7\n 273\n \n \n \n \n \n \n \n \n \n \n \n 8\n 364\n \n \n \n \n \n \n \n \n \n \n \n 9\n 194244\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 286.3116554054054\n \n \n \n \n \n \n \n stddev\n 451.00081561258065\n \n \n \n \n \n \n \n maximum\n 1043.765625\n \n \n \n \n \n \n \n minimum\n -52.213985443115234\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.965791473820287e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.965791473820304e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_MOB_S2B_trueColor_merged_2025-03-19_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28436\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43767\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 21.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 10\n \n \n \n \n \n \n \n \n \n \n \n 1\n 99686\n \n \n \n \n \n \n \n \n \n \n \n 2\n 181362\n \n \n \n \n \n \n \n \n \n \n \n 3\n 106978\n \n \n \n \n \n \n \n \n \n \n \n 4\n 44489\n \n \n \n \n \n \n \n \n \n \n \n 5\n 24278\n \n \n \n \n \n \n \n \n \n \n \n 6\n 10909\n \n \n \n \n \n \n \n \n \n \n \n 7\n 6056\n \n \n \n \n \n \n \n \n \n \n \n 8\n 4045\n \n \n \n \n \n \n \n \n \n \n \n 9\n 8885\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 95.40867026369536\n \n \n \n \n \n \n \n stddev\n 38.26415086996274\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 21\n \n \n \n \n \n \n \n valid_percent\n 71.36501736111111\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 52542\n \n \n \n \n \n \n \n \n \n \n \n 1\n 170736\n \n \n \n \n \n \n \n \n \n \n \n 2\n 153840\n \n \n \n \n \n \n \n \n \n \n \n 3\n 60449\n \n \n \n \n \n \n \n \n \n \n \n 4\n 24590\n \n \n \n \n \n \n \n \n \n \n \n 5\n 9402\n \n \n \n \n \n \n \n \n \n \n \n 6\n 5117\n \n \n \n \n \n \n \n \n \n \n \n 7\n 3105\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2046\n \n \n \n \n \n \n \n \n \n \n \n 9\n 4871\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 94.3158447332843\n \n \n \n \n \n \n \n stddev\n 30.66878187327538\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 71.36501736111111\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 92080\n \n \n \n \n \n \n \n \n \n \n \n 1\n 277445\n \n \n \n \n \n \n \n \n \n \n \n 2\n 77493\n \n \n \n \n \n \n \n \n \n \n \n 3\n 20675\n \n \n \n \n \n \n \n \n \n \n \n 4\n 7772\n \n \n \n \n \n \n \n \n \n \n \n 5\n 3994\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2109\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1146\n \n \n \n \n \n \n \n \n \n \n \n 8\n 658\n \n \n \n \n \n \n \n \n \n \n \n 9\n 3326\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 82.68875976478226\n \n \n \n \n \n \n \n stddev\n 24.717038108649344\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 71.36501736111111\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.965791473820302e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.965791473820302e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 20\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-18\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-18T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-18\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_PAH_S2B_NDVI_merged_2025-03-18_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19102\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23819\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n -0.2597891688346863\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 582197\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 259531\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 308.1553756082725\n \n \n \n \n \n \n \n stddev\n 461.25388443591817\n \n \n \n \n \n \n \n maximum\n 999.0\n \n \n \n \n \n \n \n minimum\n -0.2597891688346863\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010127662399322692\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010127662399322692\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_PAH_S2B_trueColor_merged_2025-03-18_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19102\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23819\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2914\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33936\n \n \n \n \n \n \n \n \n \n \n \n 2\n 160828\n \n \n \n \n \n \n \n \n \n \n \n 3\n 120615\n \n \n \n \n \n \n \n \n \n \n \n 4\n 86343\n \n \n \n \n \n \n \n \n \n \n \n 5\n 63590\n \n \n \n \n \n \n \n \n \n \n \n 6\n 36585\n \n \n \n \n \n \n \n \n \n \n \n 7\n 28298\n \n \n \n \n \n \n \n \n \n \n \n 8\n 17314\n \n \n \n \n \n \n \n \n \n \n \n 9\n 31730\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 141.58500600357638\n \n \n \n \n \n \n \n stddev\n 43.01694075406314\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 69.16165317062044\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2524\n \n \n \n \n \n \n \n \n \n \n \n 1\n 149514\n \n \n \n \n \n \n \n \n \n \n \n 2\n 143200\n \n \n \n \n \n \n \n \n \n \n \n 3\n 84327\n \n \n \n \n \n \n \n \n \n \n \n 4\n 70727\n \n \n \n \n \n \n \n \n \n \n \n 5\n 48105\n \n \n \n \n \n \n \n \n \n \n \n 6\n 27187\n \n \n \n \n \n \n \n \n \n \n \n 7\n 20512\n \n \n \n \n \n \n \n \n \n \n \n 8\n 12076\n \n \n \n \n \n \n \n \n \n \n \n 9\n 23981\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 128.1265904324121\n \n \n \n \n \n \n \n stddev\n 43.71782455424744\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 69.16165317062044\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 8496\n \n \n \n \n \n \n \n \n \n \n \n 1\n 210085\n \n \n \n \n \n \n \n \n \n \n \n 2\n 123957\n \n \n \n \n \n \n \n \n \n \n \n 3\n 76321\n \n \n \n \n \n \n \n \n \n \n \n 4\n 48401\n \n \n \n \n \n \n \n \n \n \n \n 5\n 40435\n \n \n \n \n \n \n \n \n \n \n \n 6\n 24774\n \n \n \n \n \n \n \n \n \n \n \n 7\n 16202\n \n \n \n \n \n \n \n \n \n \n \n 8\n 9674\n \n \n \n \n \n \n \n \n \n \n \n 9\n 23808\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 119.03665015897883\n \n \n \n \n \n \n \n stddev\n 45.30995536754007\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 69.16165317062044\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -89.47745240178966\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.007499248247356\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010127662399322692\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.88976030868433\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010127662399322692\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.94208531976598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 21\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-17\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-17\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_OHX_S2C_NDVI_merged_2025-03-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27951\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34590\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n -0.36234381794929504\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 532647\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 315225\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 371.58405042270533\n \n \n \n \n \n \n \n stddev\n 482.66538980555185\n \n \n \n \n \n \n \n maximum\n 999.0\n \n \n \n \n \n \n \n minimum\n -0.36234381794929504\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_OHX_S2C_trueColor_merged_2025-03-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27951\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34590\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 21.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9954\n \n \n \n \n \n \n \n \n \n \n \n 2\n 99904\n \n \n \n \n \n \n \n \n \n \n \n 3\n 236253\n \n \n \n \n \n \n \n \n \n \n \n 4\n 112798\n \n \n \n \n \n \n \n \n \n \n \n 5\n 48219\n \n \n \n \n \n \n \n \n \n \n \n 6\n 16114\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4922\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1676\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2778\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 111.26372134677884\n \n \n \n \n \n \n \n stddev\n 26.877578271156246\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 21\n \n \n \n \n \n \n \n valid_percent\n 62.81832635114735\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 42.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1218\n \n \n \n \n \n \n \n \n \n \n \n 1\n 127478\n \n \n \n \n \n \n \n \n \n \n \n 2\n 229108\n \n \n \n \n \n \n \n \n \n \n \n 3\n 123987\n \n \n \n \n \n \n \n \n \n \n \n 4\n 37238\n \n \n \n \n \n \n \n \n \n \n \n 5\n 7420\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2194\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1056\n \n \n \n \n \n \n \n \n \n \n \n 8\n 612\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2306\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 100.69281678955046\n \n \n \n \n \n \n \n stddev\n 22.56602186647425\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 42\n \n \n \n \n \n \n \n valid_percent\n 62.81809046648551\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 19502\n \n \n \n \n \n \n \n \n \n \n \n 1\n 305074\n \n \n \n \n \n \n \n \n \n \n \n 2\n 169263\n \n \n \n \n \n \n \n \n \n \n \n 3\n 26063\n \n \n \n \n \n \n \n \n \n \n \n 4\n 6073\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2513\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1019\n \n \n \n \n \n \n \n \n \n \n \n 7\n 644\n \n \n \n \n \n \n \n \n \n \n \n 8\n 415\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2053\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 82.8318441512601\n \n \n \n \n \n \n \n stddev\n 19.041864426125688\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 62.81832635114735\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 22\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-13\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-13T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-13\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202504_SevereWx_US_SHV_S2C_NDVI_merged_2025-03-13_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 38479\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34890\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.7484680414199829\n \n \n \n \n \n \n \n min\n -0.3044547736644745\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 234\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5104\n \n \n \n \n \n \n \n \n \n \n \n 2\n 10979\n \n \n \n \n \n \n \n \n \n \n \n 3\n 14889\n \n \n \n \n \n \n \n \n \n \n \n 4\n 83430\n \n \n \n \n \n \n \n \n \n \n \n 5\n 383345\n \n \n \n \n \n \n \n \n \n \n \n 6\n 239618\n \n \n \n \n \n \n \n \n \n \n \n 7\n 6917\n \n \n \n \n \n \n \n \n \n \n \n 8\n 180\n \n \n \n \n \n \n \n \n \n \n \n 9\n 8\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.28717129137885655\n \n \n \n \n \n \n \n stddev\n 0.08848033712569062\n \n \n \n \n \n \n \n maximum\n 0.7484680414199829\n \n \n \n \n \n \n \n minimum\n -0.3044547736644745\n \n \n \n \n \n \n \n valid_percent\n 78.28310010764262\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.65096162836041e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.65096162836041e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202504_SevereWx_US_SHV_S2C_trueColor_merged_2025-03-13_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n 2\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 38479\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34890\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 15.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 27\n \n \n \n \n \n \n \n \n \n \n \n 1\n 585\n \n \n \n \n \n \n \n \n \n \n \n 2\n 211786\n \n \n \n \n \n \n \n \n \n \n \n 3\n 355610\n \n \n \n \n \n \n \n \n \n \n \n 4\n 134873\n \n \n \n \n \n \n \n \n \n \n \n 5\n 29087\n \n \n \n \n \n \n \n \n \n \n \n 6\n 7471\n \n \n \n \n \n \n \n \n \n \n \n 7\n 3003\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1334\n \n \n \n \n \n \n \n \n \n \n \n 9\n 928\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 99.61643686619114\n \n \n \n \n \n \n \n stddev\n 20.984427659267403\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 15\n \n \n \n \n \n \n \n valid_percent\n 78.28310010764262\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 47.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 900\n \n \n \n \n \n \n \n \n \n \n \n 1\n 298476\n \n \n \n \n \n \n \n \n \n \n \n 2\n 315495\n \n \n \n \n \n \n \n \n \n \n \n 3\n 101044\n \n \n \n \n \n \n \n \n \n \n \n 4\n 19141\n \n \n \n \n \n \n \n \n \n \n \n 5\n 5702\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1912\n \n \n \n \n \n \n \n \n \n \n \n 7\n 874\n \n \n \n \n \n \n \n \n \n \n \n 8\n 500\n \n \n \n \n \n \n \n \n \n \n \n 9\n 660\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 95.98372104889997\n \n \n \n \n \n \n \n stddev\n 17.431978572058597\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 47\n \n \n \n \n \n \n \n valid_percent\n 78.28310010764262\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 35.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 569\n \n \n \n \n \n \n \n \n \n \n \n 1\n 404571\n \n \n \n \n \n \n \n \n \n \n \n 2\n 284720\n \n \n \n \n \n \n \n \n \n \n \n 3\n 40574\n \n \n \n \n \n \n \n \n \n \n \n 4\n 8954\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2576\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1091\n \n \n \n \n \n \n \n \n \n \n \n 7\n 613\n \n \n \n \n \n \n \n \n \n \n \n 8\n 419\n \n \n \n \n \n \n \n \n \n \n \n 9\n 617\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 80.27013685974562\n \n \n \n \n \n \n \n stddev\n 15.669549160684577\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 35\n \n \n \n \n \n \n \n valid_percent\n 78.28310010764262\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -91.80655954834758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 30.628069045539178\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.65096162836041e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -95.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.65096162836041e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 23\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-12\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-12T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-12\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_OHX_S2B_NDVI_merged_2025-03-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27951\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34590\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n -0.3396110534667969\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 533023\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 314849\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 371.1248490338164\n \n \n \n \n \n \n \n stddev\n 482.560248022114\n \n \n \n \n \n \n \n maximum\n 999.0\n \n \n \n \n \n \n \n minimum\n -0.3396110534667969\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_OHX_S2B_trueColor_merged_2025-03-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27951\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34590\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 13921\n \n \n \n \n \n \n \n \n \n \n \n 1\n 74758\n \n \n \n \n \n \n \n \n \n \n \n 2\n 195972\n \n \n \n \n \n \n \n \n \n \n \n 3\n 119566\n \n \n \n \n \n \n \n \n \n \n \n 4\n 73132\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34204\n \n \n \n \n \n \n \n \n \n \n \n 6\n 11160\n \n \n \n \n \n \n \n \n \n \n \n 7\n 5512\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2211\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2555\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 118.62875170500065\n \n \n \n \n \n \n \n stddev\n 28.480984435247812\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 62.86220089824879\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 57.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 9021\n \n \n \n \n \n \n \n \n \n \n \n 1\n 221775\n \n \n \n \n \n \n \n \n \n \n \n 2\n 141228\n \n \n \n \n \n \n \n \n \n \n \n 3\n 116321\n \n \n \n \n \n \n \n \n \n \n \n 4\n 30403\n \n \n \n \n \n \n \n \n \n \n \n 5\n 8222\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2594\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1105\n \n \n \n \n \n \n \n \n \n \n \n 8\n 775\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1547\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 106.68728927880584\n \n \n \n \n \n \n \n stddev\n 22.3863114919822\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 57\n \n \n \n \n \n \n \n valid_percent\n 62.86220089824879\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 54.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 28379\n \n \n \n \n \n \n \n \n \n \n \n 1\n 302385\n \n \n \n \n \n \n \n \n \n \n \n 2\n 158907\n \n \n \n \n \n \n \n \n \n \n \n 3\n 29995\n \n \n \n \n \n \n \n \n \n \n \n 4\n 7195\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2360\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1097\n \n \n \n \n \n \n \n \n \n \n \n 7\n 784\n \n \n \n \n \n \n \n \n \n \n \n 8\n 517\n \n \n \n \n \n \n \n \n \n \n \n 9\n 1372\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 93.8976455512382\n \n \n \n \n \n \n \n stddev\n 18.422363571548665\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 54\n \n \n \n \n \n \n \n valid_percent\n 62.86220089824879\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.64153069760114\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.23176212978419\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.1249352626432\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010070553816253421\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.04658262696518\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 24\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-03-10\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-03-10T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-03-10\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_LZK_S2C_NDVI_merged_2025-03-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n 2\n -90.64156670084276\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.04658305005925\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 39361\n \n \n \n \n \n \n \n \n \n \n \n 1\n 24986\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n -0.545171320438385\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 237840\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 428784\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 642.6406970046083\n \n \n \n \n \n \n \n stddev\n 478.48142422677506\n \n \n \n \n \n \n \n maximum\n 999.0\n \n \n \n \n \n \n \n minimum\n -0.545171320438385\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -90.64156670084276\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -90.64156670084276\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658305005925\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 37.04658305005925\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33093644638414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.439919218706607e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -93.0002249168288\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.439919218706607e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 37.04658305005925\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_PAH_S2C_trueColor_merged_2025-03-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 27298\n \n \n \n \n \n \n \n \n \n \n \n 1\n 48535\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 21.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1821\n \n \n \n \n \n \n \n \n \n \n \n 2\n 21517\n \n \n \n \n \n \n \n \n \n \n \n 3\n 108933\n \n \n \n \n \n \n \n \n \n \n \n 4\n 83049\n \n \n \n \n \n \n \n \n \n \n \n 5\n 78297\n \n \n \n \n \n \n \n \n \n \n \n 6\n 51488\n \n \n \n \n \n \n \n \n \n \n \n 7\n 15136\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3869\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2333\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 132.33531453646395\n \n \n \n \n \n \n \n stddev\n 32.01823013792722\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 21\n \n \n \n \n \n \n \n valid_percent\n 62.127685546875\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 42.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 464\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34526\n \n \n \n \n \n \n \n \n \n \n \n 2\n 122854\n \n \n \n \n \n \n \n \n \n \n \n 3\n 101867\n \n \n \n \n \n \n \n \n \n \n \n 4\n 79051\n \n \n \n \n \n \n \n \n \n \n \n 5\n 19753\n \n \n \n \n \n \n \n \n \n \n \n 6\n 4762\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1723\n \n \n \n \n \n \n \n \n \n \n \n 8\n 624\n \n \n \n \n \n \n \n \n \n \n \n 9\n 817\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 114.14203377897124\n \n \n \n \n \n \n \n stddev\n 24.977483512225387\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 42\n \n \n \n \n \n \n \n valid_percent\n 62.127176920572914\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4668\n \n \n \n \n \n \n \n \n \n \n \n 1\n 129460\n \n \n \n \n \n \n \n \n \n \n \n 2\n 135727\n \n \n \n \n \n \n \n \n \n \n \n 3\n 78450\n \n \n \n \n \n \n \n \n \n \n \n 4\n 13091\n \n \n \n \n \n \n \n \n \n \n \n 5\n 2974\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1003\n \n \n \n \n \n \n \n \n \n \n \n 7\n 395\n \n \n \n \n \n \n \n \n \n \n \n 8\n 190\n \n \n \n \n \n \n \n \n \n \n \n 9\n 486\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 95.52704915348593\n \n \n \n \n \n \n \n stddev\n 19.724245055019093\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 62.127685546875\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88757629503813\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.935321096791235\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -92.06800403710518\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010673591721576295\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899816494713\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 25\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-02-25\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-02-25T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-02-25\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202502_Flood_OhioValley_S2C_colorInfrared_merged_2025-02-25_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 26734\n \n \n \n \n \n \n \n \n \n \n \n 1\n 44834\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 14.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3484\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9668\n \n \n \n \n \n \n \n \n \n \n \n 2\n 13109\n \n \n \n \n \n \n \n \n \n \n \n 3\n 74635\n \n \n \n \n \n \n \n \n \n \n \n 4\n 132526\n \n \n \n \n \n \n \n \n \n \n \n 5\n 69292\n \n \n \n \n \n \n \n \n \n \n \n 6\n 62040\n \n \n \n \n \n \n \n \n \n \n \n 7\n 50137\n \n \n \n \n \n \n \n \n \n \n \n 8\n 22818\n \n \n \n \n \n \n \n \n \n \n \n 9\n 11176\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 141.64433429497532\n \n \n \n \n \n \n \n stddev\n 42.29323961222107\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 14\n \n \n \n \n \n \n \n valid_percent\n 71.74537771072012\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 6.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 8\n \n \n \n \n \n \n \n \n \n \n \n 1\n 27765\n \n \n \n \n \n \n \n \n \n \n \n 2\n 227804\n \n \n \n \n \n \n \n \n \n \n \n 3\n 137294\n \n \n \n \n \n \n \n \n \n \n \n 4\n 51516\n \n \n \n \n \n \n \n \n \n \n \n 5\n 3373\n \n \n \n \n \n \n \n \n \n \n \n 6\n 513\n \n \n \n \n \n \n \n \n \n \n \n 7\n 186\n \n \n \n \n \n \n \n \n \n \n \n 8\n 97\n \n \n \n \n \n \n \n \n \n \n \n 9\n 329\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 80.65183064704769\n \n \n \n \n \n \n \n stddev\n 20.12129017583753\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 6\n \n \n \n \n \n \n \n valid_percent\n 71.74537771072012\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 63571\n \n \n \n \n \n \n \n \n \n \n \n 1\n 227282\n \n \n \n \n \n \n \n \n \n \n \n 2\n 138737\n \n \n \n \n \n \n \n \n \n \n \n 3\n 16647\n \n \n \n \n \n \n \n \n \n \n \n 4\n 1564\n \n \n \n \n \n \n \n \n \n \n \n 5\n 418\n \n \n \n \n \n \n \n \n \n \n \n 6\n 179\n \n \n \n \n \n \n \n \n \n \n \n 7\n 100\n \n \n \n \n \n \n \n \n \n \n \n 8\n 81\n \n \n \n \n \n \n \n \n \n \n \n 9\n 306\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 69.23693373581207\n \n \n \n \n \n \n \n stddev\n 16.657297284239075\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 71.74537771072012\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010529143258335879\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010529143258335879\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202502_Flood_OhioValley_S2C_trueColor_merged_2025-02-25_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 26734\n \n \n \n \n \n \n \n \n \n \n \n 1\n 44834\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010529143258335879\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010529143258335879\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/naturalColor/202502_Flood_OhioValley_S2C_naturalColor_merged_2025-02-25_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 13367\n \n \n \n \n \n \n \n \n \n \n \n 1\n 22417\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 32.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 14776\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3732\n \n \n \n \n \n \n \n \n \n \n \n 2\n 7375\n \n \n \n \n \n \n \n \n \n \n \n 3\n 16473\n \n \n \n \n \n \n \n \n \n \n \n 4\n 47216\n \n \n \n \n \n \n \n \n \n \n \n 5\n 107099\n \n \n \n \n \n \n \n \n \n \n \n 6\n 133589\n \n \n \n \n \n \n \n \n \n \n \n 7\n 74689\n \n \n \n \n \n \n \n \n \n \n \n 8\n 34578\n \n \n \n \n \n \n \n \n \n \n \n 9\n 9379\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 166.0085318529937\n \n \n \n \n \n \n \n stddev\n 39.64882347339207\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 32\n \n \n \n \n \n \n \n valid_percent\n 71.74873414484452\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 8963\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9139\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8762\n \n \n \n \n \n \n \n \n \n \n \n 3\n 77925\n \n \n \n \n \n \n \n \n \n \n \n 4\n 129148\n \n \n \n \n \n \n \n \n \n \n \n 5\n 75679\n \n \n \n \n \n \n \n \n \n \n \n 6\n 60348\n \n \n \n \n \n \n \n \n \n \n \n 7\n 49296\n \n \n \n \n \n \n \n \n \n \n \n 8\n 19886\n \n \n \n \n \n \n \n \n \n \n \n 9\n 9759\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 144.2518862565576\n \n \n \n \n \n \n \n stddev\n 40.83434203069369\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 71.74857431464812\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 20.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2394\n \n \n \n \n \n \n \n \n \n \n \n 1\n 116234\n \n \n \n \n \n \n \n \n \n \n \n 2\n 203376\n \n \n \n \n \n \n \n \n \n \n \n 3\n 102374\n \n \n \n \n \n \n \n \n \n \n \n 4\n 22205\n \n \n \n \n \n \n \n \n \n \n \n 5\n 1496\n \n \n \n \n \n \n \n \n \n \n \n 6\n 323\n \n \n \n \n \n \n \n \n \n \n \n 7\n 130\n \n \n \n \n \n \n \n \n \n \n \n 8\n 84\n \n \n \n \n \n \n \n \n \n \n \n 9\n 290\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 80.47485442386602\n \n \n \n \n \n \n \n stddev\n 19.534781485970978\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 20\n \n \n \n \n \n \n \n valid_percent\n 71.74873414484452\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58329475434614\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 36.034136959288425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00021058286516671758\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00021058286516671758\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 26\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-02-23\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-02-23T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-02-23\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202502_Flood_OhioValley_S2B_colorInfrared_merged_2025-02-23_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 37699\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35966\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 10.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1819\n \n \n \n \n \n \n \n \n \n \n \n 1\n 13084\n \n \n \n \n \n \n \n \n \n \n \n 2\n 26792\n \n \n \n \n \n \n \n \n \n \n \n 3\n 46996\n \n \n \n \n \n \n \n \n \n \n \n 4\n 109448\n \n \n \n \n \n \n \n \n \n \n \n 5\n 92836\n \n \n \n \n \n \n \n \n \n \n \n 6\n 87128\n \n \n \n \n \n \n \n \n \n \n \n 7\n 70560\n \n \n \n \n \n \n \n \n \n \n \n 8\n 52404\n \n \n \n \n \n \n \n \n \n \n \n 9\n 177983\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 174.3502245784552\n \n \n \n \n \n \n \n stddev\n 60.14020654970988\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 10\n \n \n \n \n \n \n \n valid_percent\n 67.87459218270216\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 4.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 227\n \n \n \n \n \n \n \n \n \n \n \n 1\n 21698\n \n \n \n \n \n \n \n \n \n \n \n 2\n 156034\n \n \n \n \n \n \n \n \n \n \n \n 3\n 140359\n \n \n \n \n \n \n \n \n \n \n \n 4\n 77446\n \n \n \n \n \n \n \n \n \n \n \n 5\n 54430\n \n \n \n \n \n \n \n \n \n \n \n 6\n 39198\n \n \n \n \n \n \n \n \n \n \n \n 7\n 33009\n \n \n \n \n \n \n \n \n \n \n \n 8\n 23901\n \n \n \n \n \n \n \n \n \n \n \n 9\n 132748\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 136.56628083351742\n \n \n \n \n \n \n \n stddev\n 70.1688100870892\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 4\n \n \n \n \n \n \n \n valid_percent\n 67.87459218270216\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 8.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 412\n \n \n \n \n \n \n \n \n \n \n \n 1\n 74319\n \n \n \n \n \n \n \n \n \n \n \n 2\n 199291\n \n \n \n \n \n \n \n \n \n \n \n 3\n 95175\n \n \n \n \n \n \n \n \n \n \n \n 4\n 54919\n \n \n \n \n \n \n \n \n \n \n \n 5\n 46406\n \n \n \n \n \n \n \n \n \n \n \n 6\n 34353\n \n \n \n \n \n \n \n \n \n \n \n 7\n 27349\n \n \n \n \n \n \n \n \n \n \n \n 8\n 22981\n \n \n \n \n \n \n \n \n \n \n \n 9\n 123844\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 128.36330220646818\n \n \n \n \n \n \n \n stddev\n 72.59939625354171\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 8\n \n \n \n \n \n \n \n valid_percent\n 67.87449222748208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.917678576062936e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.917678576062936e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202502_Flood_OhioValley_S2B_trueColor_merged_2025-02-23_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 37699\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35966\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110132713458654\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.917678576062936e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.917678576062936e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/naturalColor/202502_Flood_OhioValley_S2B_naturalColor_merged_2025-02-23_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110231890244414\n \n \n \n \n \n \n \n \n \n \n \n 2\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 18849\n \n \n \n \n \n \n \n \n \n \n \n 1\n 17983\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 28.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 36076\n \n \n \n \n \n \n \n \n \n \n \n 1\n 76944\n \n \n \n \n \n \n \n \n \n \n \n 2\n 168145\n \n \n \n \n \n \n \n \n \n \n \n 3\n 132766\n \n \n \n \n \n \n \n \n \n \n \n 4\n 120385\n \n \n \n \n \n \n \n \n \n \n \n 5\n 91334\n \n \n \n \n \n \n \n \n \n \n \n 6\n 37190\n \n \n \n \n \n \n \n \n \n \n \n 7\n 12487\n \n \n \n \n \n \n \n \n \n \n \n 8\n 3195\n \n \n \n \n \n \n \n \n \n \n \n 9\n 561\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 109.1638385882138\n \n \n \n \n \n \n \n stddev\n 38.16105971983714\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 28\n \n \n \n \n \n \n \n valid_percent\n 67.87789070496417\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 8.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1993\n \n \n \n \n \n \n \n \n \n \n \n 1\n 16833\n \n \n \n \n \n \n \n \n \n \n \n 2\n 25175\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34666\n \n \n \n \n \n \n \n \n \n \n \n 4\n 102707\n \n \n \n \n \n \n \n \n \n \n \n 5\n 109167\n \n \n \n \n \n \n \n \n \n \n \n 6\n 93633\n \n \n \n \n \n \n \n \n \n \n \n 7\n 74149\n \n \n \n \n \n \n \n \n \n \n \n 8\n 53925\n \n \n \n \n \n \n \n \n \n \n \n 9\n 166834\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 173.52119773458875\n \n \n \n \n \n \n \n stddev\n 59.26203236950592\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 8\n \n \n \n \n \n \n \n valid_percent\n 67.87779074974412\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 6.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 271\n \n \n \n \n \n \n \n \n \n \n \n 1\n 19759\n \n \n \n \n \n \n \n \n \n \n \n 2\n 168268\n \n \n \n \n \n \n \n \n \n \n \n 3\n 126967\n \n \n \n \n \n \n \n \n \n \n \n 4\n 82869\n \n \n \n \n \n \n \n \n \n \n \n 5\n 50579\n \n \n \n \n \n \n \n \n \n \n \n 6\n 43482\n \n \n \n \n \n \n \n \n \n \n \n 7\n 31026\n \n \n \n \n \n \n \n \n \n \n \n 8\n 25997\n \n \n \n \n \n \n \n \n \n \n \n 9\n 129870\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 136.91182880569235\n \n \n \n \n \n \n \n stddev\n 69.82810708237166\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 6\n \n \n \n \n \n \n \n valid_percent\n 67.87839048106449\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110231890244414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110231890244414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -86.88751068741226\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.110231890244414\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00019835357152125872\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -90.45450296407905\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00019835357152125872\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 27\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-02-20\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-02-20T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-02-20\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202502_Flood_OhioValley_S2B_colorInfrared_merged_2025-02-20_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 46546\n \n \n \n \n \n \n \n \n \n \n \n 1\n 47588\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 10.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1275\n \n \n \n \n \n \n \n \n \n \n \n 1\n 10397\n \n \n \n \n \n \n \n \n \n \n \n 2\n 16130\n \n \n \n \n \n \n \n \n \n \n \n 3\n 22435\n \n \n \n \n \n \n \n \n \n \n \n 4\n 33026\n \n \n \n \n \n \n \n \n \n \n \n 5\n 45381\n \n \n \n \n \n \n \n \n \n \n \n 6\n 51060\n \n \n \n \n \n \n \n \n \n \n \n 7\n 56381\n \n \n \n \n \n \n \n \n \n \n \n 8\n 63517\n \n \n \n \n \n \n \n \n \n \n \n 9\n 429956\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 214.9097933269185\n \n \n \n \n \n \n \n stddev\n 56.05476824000139\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 10\n \n \n \n \n \n \n \n valid_percent\n 71.10369105538922\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 2.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 48\n \n \n \n \n \n \n \n \n \n \n \n 1\n 17324\n \n \n \n \n \n \n \n \n \n \n \n 2\n 48074\n \n \n \n \n \n \n \n \n \n \n \n 3\n 59201\n \n \n \n \n \n \n \n \n \n \n \n 4\n 58692\n \n \n \n \n \n \n \n \n \n \n \n 5\n 52033\n \n \n \n \n \n \n \n \n \n \n \n 6\n 59554\n \n \n \n \n \n \n \n \n \n \n \n 7\n 55745\n \n \n \n \n \n \n \n \n \n \n \n 8\n 42418\n \n \n \n \n \n \n \n \n \n \n \n 9\n 336463\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 189.83713155470755\n \n \n \n \n \n \n \n stddev\n 70.1874929352799\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 2\n \n \n \n \n \n \n \n valid_percent\n 71.10310628742515\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 8350\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43680\n \n \n \n \n \n \n \n \n \n \n \n 2\n 52238\n \n \n \n \n \n \n \n \n \n \n \n 3\n 53589\n \n \n \n \n \n \n \n \n \n \n \n 4\n 45447\n \n \n \n \n \n \n \n \n \n \n \n 5\n 51635\n \n \n \n \n \n \n \n \n \n \n \n 6\n 48996\n \n \n \n \n \n \n \n \n \n \n \n 7\n 47619\n \n \n \n \n \n \n \n \n \n \n \n 8\n 35451\n \n \n \n \n \n \n \n \n \n \n \n 9\n 322977\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 188.95584395097342\n \n \n \n \n \n \n \n stddev\n 70.7444781876391\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 69.19578811127745\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.919843194194973e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.919843194194973e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202502_Flood_OhioValley_S2B_trueColor_merged_2025-02-20_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 46546\n \n \n \n \n \n \n \n \n \n \n \n 1\n 47588\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.919843194194973e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.919843194194973e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/naturalColor/202502_Flood_OhioValley_S2B_naturalColor_merged_2025-02-20_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n 2\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 23273\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23794\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 33734\n \n \n \n \n \n \n \n \n \n \n \n 1\n 56297\n \n \n \n \n \n \n \n \n \n \n \n 2\n 171843\n \n \n \n \n \n \n \n \n \n \n \n 3\n 215593\n \n \n \n \n \n \n \n \n \n \n \n 4\n 83333\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35521\n \n \n \n \n \n \n \n \n \n \n \n 6\n 23158\n \n \n \n \n \n \n \n \n \n \n \n 7\n 16919\n \n \n \n \n \n \n \n \n \n \n \n 8\n 14565\n \n \n \n \n \n \n \n \n \n \n \n 9\n 78504\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 123.35413802132241\n \n \n \n \n \n \n \n stddev\n 56.921474024127576\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 71.0948220746008\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 22.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 6955\n \n \n \n \n \n \n \n \n \n \n \n 1\n 12748\n \n \n \n \n \n \n \n \n \n \n \n 2\n 18225\n \n \n \n \n \n \n \n \n \n \n \n 3\n 20941\n \n \n \n \n \n \n \n \n \n \n \n 4\n 35975\n \n \n \n \n \n \n \n \n \n \n \n 5\n 46740\n \n \n \n \n \n \n \n \n \n \n \n 6\n 56688\n \n \n \n \n \n \n \n \n \n \n \n 7\n 62910\n \n \n \n \n \n \n \n \n \n \n \n 8\n 58568\n \n \n \n \n \n \n \n \n \n \n \n 9\n 409727\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 212.7101210867512\n \n \n \n \n \n \n \n stddev\n 56.57231928391506\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 22\n \n \n \n \n \n \n \n valid_percent\n 71.09579668787424\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 9429\n \n \n \n \n \n \n \n \n \n \n \n 1\n 40591\n \n \n \n \n \n \n \n \n \n \n \n 2\n 51018\n \n \n \n \n \n \n \n \n \n \n \n 3\n 54151\n \n \n \n \n \n \n \n \n \n \n \n 4\n 48027\n \n \n \n \n \n \n \n \n \n \n \n 5\n 52517\n \n \n \n \n \n \n \n \n \n \n \n 6\n 50417\n \n \n \n \n \n \n \n \n \n \n \n 7\n 51139\n \n \n \n \n \n \n \n \n \n \n \n 8\n 37990\n \n \n \n \n \n \n \n \n \n \n \n 9\n 334202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 190.22938500111724\n \n \n \n \n \n \n \n stddev\n 69.97812097477973\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 71.09618653318364\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -84.58327586353494\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.231707904801944\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00019839686388389946\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00019839686388389946\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.84899811797194\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 28\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-02-17\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-02-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-02-17\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/NDVI/202503_SevereWx_US_MOB_S2B_NDVI_merged_2025-02-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28436\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43767\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1043.75390625\n \n \n \n \n \n \n \n min\n -48.66567611694336\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 485492\n \n \n \n \n \n \n \n \n \n \n \n 1\n 496\n \n \n \n \n \n \n \n \n \n \n \n 2\n 271\n \n \n \n \n \n \n \n \n \n \n \n 3\n 236\n \n \n \n \n \n \n \n \n \n \n \n 4\n 227\n \n \n \n \n \n \n \n \n \n \n \n 5\n 197\n \n \n \n \n \n \n \n \n \n \n \n 6\n 235\n \n \n \n \n \n \n \n \n \n \n \n 7\n 276\n \n \n \n \n \n \n \n \n \n \n \n 8\n 346\n \n \n \n \n \n \n \n \n \n \n \n 9\n 194208\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 286.2436655405405\n \n \n \n \n \n \n \n stddev\n 450.9685791071518\n \n \n \n \n \n \n \n maximum\n 1043.75390625\n \n \n \n \n \n \n \n minimum\n -48.66567611694336\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836954\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.965791473820287e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.965791473820304e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202503_SevereWx_US_MOB_S2B_trueColor_merged_2025-02-17_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 3\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 28436\n \n \n \n \n \n \n \n \n \n \n \n 1\n 43767\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 18.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 12\n \n \n \n \n \n \n \n \n \n \n \n 1\n 112844\n \n \n \n \n \n \n \n \n \n \n \n 2\n 196149\n \n \n \n \n \n \n \n \n \n \n \n 3\n 98553\n \n \n \n \n \n \n \n \n \n \n \n 4\n 46231\n \n \n \n \n \n \n \n \n \n \n \n 5\n 18846\n \n \n \n \n \n \n \n \n \n \n \n 6\n 6547\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2881\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1439\n \n \n \n \n \n \n \n \n \n \n \n 9\n 3240\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 86.49351401769316\n \n \n \n \n \n \n \n stddev\n 31.745044269268394\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 18\n \n \n \n \n \n \n \n valid_percent\n 71.37146912537537\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 68299\n \n \n \n \n \n \n \n \n \n \n \n 1\n 254700\n \n \n \n \n \n \n \n \n \n \n \n 2\n 89947\n \n \n \n \n \n \n \n \n \n \n \n 3\n 50842\n \n \n \n \n \n \n \n \n \n \n \n 4\n 12549\n \n \n \n \n \n \n \n \n \n \n \n 5\n 4227\n \n \n \n \n \n \n \n \n \n \n \n 6\n 1931\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1029\n \n \n \n \n \n \n \n \n \n \n \n 8\n 622\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2596\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 84.70397459023467\n \n \n \n \n \n \n \n stddev\n 25.225994903974435\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 71.37146912537537\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 181275\n \n \n \n \n \n \n \n \n \n \n \n 1\n 232592\n \n \n \n \n \n \n \n \n \n \n \n 2\n 53351\n \n \n \n \n \n \n \n \n \n \n \n 3\n 10324\n \n \n \n \n \n \n \n \n \n \n \n 4\n 3349\n \n \n \n \n \n \n \n \n \n \n \n 5\n 1499\n \n \n \n \n \n \n \n \n \n \n \n 6\n 898\n \n \n \n \n \n \n \n \n \n \n \n 7\n 615\n \n \n \n \n \n \n \n \n \n \n \n 8\n 409\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2430\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 75.9801147219677\n \n \n \n \n \n \n \n stddev\n 20.896481020056076\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 71.37146912537537\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.70357779836952\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 1\n 29.70348148789431\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 9.965791473820302e-05\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -88.06530575271645\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -9.965791473820302e-05\n \n \n \n \n \n \n \n \n \n \n \n 5\n 32.53735395138985\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 29\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-02-10\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-02-10T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-02-10\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202502_Flood_OhioValley_S2B_colorInfrared_merged_2025-02-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 35949\n \n \n \n \n \n \n \n \n \n \n \n 1\n 56399\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 16.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2829\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4357\n \n \n \n \n \n \n \n \n \n \n \n 2\n 11497\n \n \n \n \n \n \n \n \n \n \n \n 3\n 72467\n \n \n \n \n \n \n \n \n \n \n \n 4\n 105294\n \n \n \n \n \n \n \n \n \n \n \n 5\n 60918\n \n \n \n \n \n \n \n \n \n \n \n 6\n 52724\n \n \n \n \n \n \n \n \n \n \n \n 7\n 38401\n \n \n \n \n \n \n \n \n \n \n \n 8\n 19180\n \n \n \n \n \n \n \n \n \n \n \n 9\n 14626\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 142.78671856403335\n \n \n \n \n \n \n \n stddev\n 43.104562170439685\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 16\n \n \n \n \n \n \n \n valid_percent\n 57.17197669410413\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 4.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 7\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34170\n \n \n \n \n \n \n \n \n \n \n \n 2\n 184639\n \n \n \n \n \n \n \n \n \n \n \n 3\n 117368\n \n \n \n \n \n \n \n \n \n \n \n 4\n 30814\n \n \n \n \n \n \n \n \n \n \n \n 5\n 6309\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2793\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2266\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1574\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2353\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 80.84781829643755\n \n \n \n \n \n \n \n stddev\n 27.7660992489736\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 4\n \n \n \n \n \n \n \n valid_percent\n 57.17197669410413\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 46038\n \n \n \n \n \n \n \n \n \n \n \n 1\n 161486\n \n \n \n \n \n \n \n \n \n \n \n 2\n 86557\n \n \n \n \n \n \n \n \n \n \n \n 3\n 11490\n \n \n \n \n \n \n \n \n \n \n \n 4\n 2472\n \n \n \n \n \n \n \n \n \n \n \n 5\n 633\n \n \n \n \n \n \n \n \n \n \n \n 6\n 246\n \n \n \n \n \n \n \n \n \n \n \n 7\n 138\n \n \n \n \n \n \n \n \n \n \n \n 8\n 90\n \n \n \n \n \n \n \n \n \n \n \n 9\n 281\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 69.00754610882555\n \n \n \n \n \n \n \n stddev\n 17.675152163520217\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 46.27545343606432\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001040867459217816\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.0001040867459217816\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202502_Flood_OhioValley_S2B_trueColor_merged_2025-02-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 35949\n \n \n \n \n \n \n \n \n \n \n \n 1\n 56399\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 1.0\n \n \n \n \n \n \n \n min\n 0.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.0\n \n \n \n \n \n \n \n stddev\n 0.0\n \n \n \n \n \n \n \n maximum\n 0.0\n \n \n \n \n \n \n \n minimum\n 0.0\n \n \n \n \n \n \n \n valid_percent\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.43354245954589\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10718324458493\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0001040867459217816\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.0001040867459217816\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/naturalColor/202502_Flood_OhioValley_S2B_naturalColor_merged_2025-02-10_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10728733133085\n \n \n \n \n \n \n \n \n \n \n \n 2\n -83.43364654629181\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 17974\n \n \n \n \n \n \n \n \n \n \n \n 1\n 28199\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 6851\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3091\n \n \n \n \n \n \n \n \n \n \n \n 2\n 12144\n \n \n \n \n \n \n \n \n \n \n \n 3\n 29156\n \n \n \n \n \n \n \n \n \n \n \n 4\n 82345\n \n \n \n \n \n \n \n \n \n \n \n 5\n 112426\n \n \n \n \n \n \n \n \n \n \n \n 6\n 79690\n \n \n \n \n \n \n \n \n \n \n \n 7\n 38458\n \n \n \n \n \n \n \n \n \n \n \n 8\n 12031\n \n \n \n \n \n \n \n \n \n \n \n 9\n 5981\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 153.200639500959\n \n \n \n \n \n \n \n stddev\n 35.720840335565924\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 57.154030675727405\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 18.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4154\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3126\n \n \n \n \n \n \n \n \n \n \n \n 2\n 9927\n \n \n \n \n \n \n \n \n \n \n \n 3\n 64587\n \n \n \n \n \n \n \n \n \n \n \n 4\n 114672\n \n \n \n \n \n \n \n \n \n \n \n 5\n 67500\n \n \n \n \n \n \n \n \n \n \n \n 6\n 50615\n \n \n \n \n \n \n \n \n \n \n \n 7\n 38352\n \n \n \n \n \n \n \n \n \n \n \n 8\n 17481\n \n \n \n \n \n \n \n \n \n \n \n 9\n 11758\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 143.67806118710948\n \n \n \n \n \n \n \n stddev\n 40.71936353529139\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 18\n \n \n \n \n \n \n \n valid_percent\n 57.153881125574266\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 22.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 5881\n \n \n \n \n \n \n \n \n \n \n \n 1\n 138718\n \n \n \n \n \n \n \n \n \n \n \n 2\n 140655\n \n \n \n \n \n \n \n \n \n \n \n 3\n 71640\n \n \n \n \n \n \n \n \n \n \n \n 4\n 13662\n \n \n \n \n \n \n \n \n \n \n \n 5\n 3715\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2429\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1904\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1320\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 80.61551705641162\n \n \n \n \n \n \n \n stddev\n 27.354583169958065\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 22\n \n \n \n \n \n \n \n valid_percent\n 57.154030675727405\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10728733133085\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -83.43364654629181\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10728733133085\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -83.43364654629181\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.10728733133085\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0002081734918435632\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -89.30393084278845\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.0002081734918435632\n \n \n \n \n \n \n \n \n \n \n \n 5\n 38.848997673727055\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 30\n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-01-12\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n 2\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-01-12T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-01-12\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202501_Fire_CA_S2A_colorInfrared_merged_2025-01-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n 2\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19098\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23042\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 26.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 150471\n \n \n \n \n \n \n \n \n \n \n \n 1\n 14386\n \n \n \n \n \n \n \n \n \n \n \n 2\n 44566\n \n \n \n \n \n \n \n \n \n \n \n 3\n 92705\n \n \n \n \n \n \n \n \n \n \n \n 4\n 132543\n \n \n \n \n \n \n \n \n \n \n \n 5\n 116522\n \n \n \n \n \n \n \n \n \n \n \n 6\n 127218\n \n \n \n \n \n \n \n \n \n \n \n 7\n 99603\n \n \n \n \n \n \n \n \n \n \n \n 8\n 46219\n \n \n \n \n \n \n \n \n \n \n \n 9\n 26297\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 132.41782653169201\n \n \n \n \n \n \n \n stddev\n 61.32955260080195\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 26\n \n \n \n \n \n \n \n valid_percent\n 97.832238295053\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 22.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 187200\n \n \n \n \n \n \n \n \n \n \n \n 1\n 134654\n \n \n \n \n \n \n \n \n \n \n \n 2\n 128806\n \n \n \n \n \n \n \n \n \n \n \n 3\n 113064\n \n \n \n \n \n \n \n \n \n \n \n 4\n 113111\n \n \n \n \n \n \n \n \n \n \n \n 5\n 98443\n \n \n \n \n \n \n \n \n \n \n \n 6\n 51355\n \n \n \n \n \n \n \n \n \n \n \n 7\n 12761\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5503\n \n \n \n \n \n \n \n \n \n \n \n 9\n 5917\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 92.67100447336315\n \n \n \n \n \n \n \n stddev\n 48.700921175625886\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 22\n \n \n \n \n \n \n \n valid_percent\n 97.86490540341578\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 16.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 161329\n \n \n \n \n \n \n \n \n \n \n \n 1\n 174942\n \n \n \n \n \n \n \n \n \n \n \n 2\n 186013\n \n \n \n \n \n \n \n \n \n \n \n 3\n 171074\n \n \n \n \n \n \n \n \n \n \n \n 4\n 110511\n \n \n \n \n \n \n \n \n \n \n \n 5\n 28783\n \n \n \n \n \n \n \n \n \n \n \n 6\n 9811\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4261\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1761\n \n \n \n \n \n \n \n \n \n \n \n 9\n 2404\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 78.14072223286469\n \n \n \n \n \n \n \n stddev\n 36.05659716973138\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 16\n \n \n \n \n \n \n \n valid_percent\n 97.87353228062426\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010002860854954547\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010002860854954547\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n burnRatio\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/burnRatio/202501_Fire_CA_S2A_NBR_merged_2025-01-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Burn Ratio\"\n \n \n \n \n \n \n \n description\n \"Normalized Burn Ratio (NBR) index highlighting burned areas by comparing near-infrared and shortwave infrared bands for fire damage assessment.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n 2\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 9549\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11521\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float32\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 999.0\n \n \n \n \n \n \n \n min\n -0.5785319805145264\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 850913\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18463\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 21.251407906360424\n \n \n \n \n \n \n \n stddev\n 144.02433166567388\n \n \n \n \n \n \n \n maximum\n 999.0\n \n \n \n \n \n \n \n minimum\n -0.5785319805145264\n \n \n \n \n \n \n \n valid_percent\n 100.0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00020005721709909094\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00020005721709909094\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202501_Fire_CA_S2A_trueColor_merged_2025-01-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n 2\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 19098\n \n \n \n \n \n \n \n \n \n \n \n 1\n 23042\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 33.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 157919\n \n \n \n \n \n \n \n \n \n \n \n 1\n 60377\n \n \n \n \n \n \n \n \n \n \n \n 2\n 91670\n \n \n \n \n \n \n \n \n \n \n \n 3\n 83105\n \n \n \n \n \n \n \n \n \n \n \n 4\n 79041\n \n \n \n \n \n \n \n \n \n \n \n 5\n 74546\n \n \n \n \n \n \n \n \n \n \n \n 6\n 62154\n \n \n \n \n \n \n \n \n \n \n \n 7\n 78188\n \n \n \n \n \n \n \n \n \n \n \n 8\n 65423\n \n \n \n \n \n \n \n \n \n \n \n 9\n 98391\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 136.88539563288802\n \n \n \n \n \n \n \n stddev\n 68.42278510047534\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 33\n \n \n \n \n \n \n \n valid_percent\n 97.86490540341578\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3560\n \n \n \n \n \n \n \n \n \n \n \n 1\n 202803\n \n \n \n \n \n \n \n \n \n \n \n 2\n 129908\n \n \n \n \n \n \n \n \n \n \n \n 3\n 112115\n \n \n \n \n \n \n \n \n \n \n \n 4\n 116635\n \n \n \n \n \n \n \n \n \n \n \n 5\n 114408\n \n \n \n \n \n \n \n \n \n \n \n 6\n 83738\n \n \n \n \n \n \n \n \n \n \n \n 7\n 49005\n \n \n \n \n \n \n \n \n \n \n \n 8\n 17901\n \n \n \n \n \n \n \n \n \n \n \n 9\n 20816\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 116.50526684444152\n \n \n \n \n \n \n \n stddev\n 51.68457336440552\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 97.87353228062426\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 9.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2505\n \n \n \n \n \n \n \n \n \n \n \n 1\n 195514\n \n \n \n \n \n \n \n \n \n \n \n 2\n 174734\n \n \n \n \n \n \n \n \n \n \n \n 3\n 165890\n \n \n \n \n \n \n \n \n \n \n \n 4\n 167864\n \n \n \n \n \n \n \n \n \n \n \n 5\n 95917\n \n \n \n \n \n \n \n \n \n \n \n 6\n 24869\n \n \n \n \n \n \n \n \n \n \n \n 7\n 10405\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5500\n \n \n \n \n \n \n \n \n \n \n \n 9\n 7688\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 95.28404980220617\n \n \n \n \n \n \n \n stddev\n 38.86128961284487\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 9\n \n \n \n \n \n \n \n valid_percent\n 97.87318720553593\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010002860854954547\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010002860854954547\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n shortwaveIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/shortwaveIR/202501_Fire_CA_S2A_shortwaveInfrared_merged_2025-01-12_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Shortwave Infrared\"\n \n \n \n \n \n \n \n description\n \"Shortwave infrared composite highlighting moisture content and penetrating smoke for fire and drought monitoring.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n 2\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 3\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 9549\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11521\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 159532\n \n \n \n \n \n \n \n \n \n \n \n 1\n 51433\n \n \n \n \n \n \n \n \n \n \n \n 2\n 92160\n \n \n \n \n \n \n \n \n \n \n \n 3\n 116279\n \n \n \n \n \n \n \n \n \n \n \n 4\n 107144\n \n \n \n \n \n \n \n \n \n \n \n 5\n 90024\n \n \n \n \n \n \n \n \n \n \n \n 6\n 84923\n \n \n \n \n \n \n \n \n \n \n \n 7\n 77682\n \n \n \n \n \n \n \n \n \n \n \n 8\n 50779\n \n \n \n \n \n \n \n \n \n \n \n 9\n 20996\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 121.78029078020852\n \n \n \n \n \n \n \n stddev\n 61.233515403785205\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 97.88077885747938\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 16.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 149068\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6125\n \n \n \n \n \n \n \n \n \n \n \n 2\n 23188\n \n \n \n \n \n \n \n \n \n \n \n 3\n 80040\n \n \n \n \n \n \n \n \n \n \n \n 4\n 144691\n \n \n \n \n \n \n \n \n \n \n \n 5\n 138520\n \n \n \n \n \n \n \n \n \n \n \n 6\n 127091\n \n \n \n \n \n \n \n \n \n \n \n 7\n 115452\n \n \n \n \n \n \n \n \n \n \n \n 8\n 45896\n \n \n \n \n \n \n \n \n \n \n \n 9\n 20881\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 131.83832578100763\n \n \n \n \n \n \n \n stddev\n 59.66297303010145\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 16\n \n \n \n \n \n \n \n valid_percent\n 97.88077885747938\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 22.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 184074\n \n \n \n \n \n \n \n \n \n \n \n 1\n 131866\n \n \n \n \n \n \n \n \n \n \n \n 2\n 135233\n \n \n \n \n \n \n \n \n \n \n \n 3\n 116349\n \n \n \n \n \n \n \n \n \n \n \n 4\n 113718\n \n \n \n \n \n \n \n \n \n \n \n 5\n 98304\n \n \n \n \n \n \n \n \n \n \n \n 6\n 49493\n \n \n \n \n \n \n \n \n \n \n \n 7\n 11451\n \n \n \n \n \n \n \n \n \n \n \n 8\n 5068\n \n \n \n \n \n \n \n \n \n \n \n 9\n 5396\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 92.47344268536885\n \n \n \n \n \n \n \n stddev\n 47.9785116760626\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 22\n \n \n \n \n \n \n \n valid_percent\n 97.88077885747938\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -116.89268245519968\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.33273108141856\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00020005721709909094\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00020005721709909094\n \n \n \n \n \n \n \n \n \n \n \n 5\n 35.243077447497775\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#requesting-tiles", - "href": "user_data_notebooks/Texas_Flood_2025.html#requesting-tiles", - "title": "The Texas Flooding of July 4, 2025", - "section": "Requesting Tiles", - "text": "Requesting Tiles\nHere, we will request the tiles. Since we have retrieved the datetime items from the catalog, we will now identify the index 9 (June 17, 2025 - Before) and index 0 (July 17, 2025 - After). These are the dates before and after the event with a tile that covers the Guadalupe River.\n\n#For True Color:\n\n\n#Before Flood\ndashboard_render_pre = collection.extra_fields[\"renders\"][asset]\nassets_pre = dashboard_render_pre[\"assets\"][0]\n((vmin_pre, vmax_pre),) = dashboard_render_pre[\"rescale\"]\nbidx_pre = dashboard_render_pre.get(\"bidx\", [1,2,3])\n\nresponse_pre = requests.get(\n f\"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}\"\n f\"/items/{items_dict[9].id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={assets_pre}\"\n f\"&bidx={bidx_pre[0]}&bidx={bidx_pre[1]}&bidx={bidx_pre[2]}\"\n f\"&rescale={vmin_pre},{vmax_pre}\"\n f\"&resampling=bilinear\"\n)\nresponse_pre.raise_for_status()\ntiles_pre = response_pre.json()\n\n\n#After Flood\ndashboard_render_post = collection.extra_fields[\"renders\"][asset]\nassets_post = dashboard_render_post[\"assets\"][0]\n((vmin_post, vmax_post),) = dashboard_render_post[\"rescale\"]\nbidx_post = dashboard_render_post.get(\"bidx\", [1,2,3])\n\nresponse_post = requests.get(\n f\"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}\"\n f\"/items/{items_dict[0].id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={assets_post}\"\n f\"&bidx={bidx_post[0]}&bidx={bidx_post[1]}&bidx={bidx_post[2]}\"\n f\"&rescale={vmin_post},{vmax_post}\"\n f\"&resampling=bilinear\"\n)\nresponse_post.raise_for_status()\ntiles_post = response_post.json()\n\n\n#NDVI:\n\nresponse_ndvi = requests.get(\n f\"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}\"\n f\"/items/{item_post_id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={ASSET_NAME}\"\n f\"&colormap_name={COLORMAP}\"\n f\"&rescale={RESCALE_VALUES['min']},{RESCALE_VALUES['max']}\"\n f\"&resampling=bilinear\"\n)\nresponse_ndvi.raise_for_status()\ntiles_ndvi = response_ndvi.json()", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/Texas_Flood_2025.html#create-maps-using-folium", - "href": "user_data_notebooks/Texas_Flood_2025.html#create-maps-using-folium", - "title": "The Texas Flooding of July 4, 2025", - "section": "Create Maps Using Folium", - "text": "Create Maps Using Folium\nNow we are ready to plot the tiles on a map, using the follium package at Camp Mystic, one of the locations greatly affected by the flooding\n\n#True Color Side by side\n\nm = folium.plugins.DualMap(\n location=(30.005230182687843, -99.37260735373766), \n \n zoom_start=16,\n tiles=\"cartodbdarkmatter\"\n)\n\n# LEFT MAP \nTileLayer(\n tiles=tiles_pre[\"tiles\"][0],\n attr=\"VEDA | Sentinel-2 | True Color\",\n overlay=True,\n\n).add_to(m.m1)\n\n# RIGHT MAP: \nTileLayer(\n tiles=tiles_post[\"tiles\"][0],\n attr=\"VEDA | Sentinel-2 | True Color\",\n overlay=True,\n).add_to(m.m2)\n\n\n\nfolium.LayerControl().add_to(m.m1)\nfolium.LayerControl().add_to(m.m2)\n\n\nm\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nIf you look along the river, you can see that there is more dirt and sediment deposited along the river bank where the flooding occured the greatest.\n\n#NDVI Map\n\nCENTER_LAT, CENTER_LON = 30.005230182687843, -99.37260735373766\nZOOM_LEVEL = 16\n\n# Initialize a standard folium.Map\nm = Map(\n location=(CENTER_LAT, CENTER_LON),\n zoom_start=ZOOM_LEVEL,\n tiles=\"cartodbdarkmatter\"\n)\n\n# Add the Post-Event NDVI Layer\nTileLayer(\n tiles=tiles_ndvi[\"tiles\"][0],\n attr=f\"VEDA | Sentinel-2 | {ASSET_NAME.upper()} ({COLORMAP})\",\n name=f\"Post-Event NDVI: {item_post_id}\",\n overlay=True,\n).add_to(m)\n\nfolium.LayerControl().add_to(m)\n\n# Display the map\nm\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nHere, purple represents damaged vegetation. You can see the dark purples right along the river. However, you can also see a light purple shading along the banks of the some of the creeks that feed off of the Guadalupe River. This is the damage that was done to the vegetation as a result of the flooding.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "Texas Flood 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "", - "text": "πŸš€ Launch in Disasters-Hub JupyterHub (requires access)", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#table-of-contents", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#table-of-contents", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Table of Contents", - "text": "Table of Contents\n\nData Summary and Application\nApproach\nTerminology\nInstall the Required Libraries\nAbout the Data: Sentinel-2 True Color/Color IR\nQuery the STAC API for Sentinel-2\nFetch Imagery from Raster API for Sentinel-2\nGenerate Map for Sentinel-2\nAbout the Data: Normalized Burn Ratio Difference (dNBR)\nQuery the STAC API for dNBR\nFetch Imagery from Raster API for dNBR\nGenerate Map for dNBR\nAbout the Data: VEG-ANOM-MAX\nQuery the STAC API Max Vegetation Anomoly\nFetch Imagery from Raster API for Max Vegetation Anomoly\nGenerate Map for Max Vegetation Anomoly\nSummary\n\nNASA provided satellite imagery at the request of federal and state emergency management officials in response to the Trout Fire near Silver City, New Mexico, in late June 2025. Satellite images assist in search and rescue, evacuation planning, and understanding the scope and development of the fire as it was ongoing.\nThe Trout Fire was caused by a lightning strike, burned over 47,000 acres, prompted evacuations, and destroyed two homes.\nIn this notebook, we will explore Sentinel-2, Normalized Burn Ratio Difference (dNBR), and Opera Disturbance Alert datasets, and how they were used in this Disasters article to monitor the effects of wildfires.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#approach", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#approach", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Approach", - "text": "Approach\n\nIdentify available dates and temporal frequency of observations for collections pertaining to the NM wildfire event\nPass the STAC item into raster API collection endpoint\nWe’ll visualize tiles for each of the times/dates of interest using folium\nWe will repeat this process for three different satellite products to show the data capabilities available.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#terminology", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#terminology", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Terminology", - "text": "Terminology\nNavigating data via the Disasters API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g.Β CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes - item: One granule in the dataset, e.g.Β one monthly file of methane inverse fluxes - asset: A variable available within the granule, e.g.Β microbial, fossil, or pyrogenic methane fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#install-the-required-libraries", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#install-the-required-libraries", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Install the Required Libraries", - "text": "Install the Required Libraries\nRequired libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:\n%pip install requests folium pystac_client branca matplotlib --quiet\n\n::: {#728bcdf2-f81c-4122-8808-cd46782153fa .cell execution_count=50}\n``` {.python .cell-code}\n#for querying\nimport requests\nfrom pystac_client import Client\n#for mapping\nimport folium\nimport folium.plugins\nfrom folium.plugins import DualMap\nfrom folium import Map, TileLayer\nfrom branca.element import Template, MacroElement\nimport branca.colormap as cm\nimport matplotlib.cm as mpl_cm\n:::", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-sentinel-2-true-colorcolor-ir", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-sentinel-2-true-colorcolor-ir", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "About the Data: Sentinel-2 True Color/Color IR", - "text": "About the Data: Sentinel-2 True Color/Color IR\nThe True Color RGB composite provides a product of how the surface would look to the naked eye from space. The RGB is created using the red, green, and blue channels of the respective instrument.\nThe Color Infrared composite is created using the near-infrared, red, and green channels, allowing for the ability to see areas impacted by the fires. The near-infrared gives the ability to see through thin clouds. Healthy vegetation is shown as red, water is in blue.\nThese data will allow us to view the burn scar caused by the fire and compare it to the pre-fire landscape.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-sentinel-2", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-sentinel-2", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Query the STAC API for Sentinel-2", - "text": "Query the STAC API for Sentinel-2\n\n# Provide STAC and RASTER API endpoints\nSTAC_API_URL = \"https://dev.openveda.cloud/api/stac\"\nRASTER_API_URL = \"https://dev.openveda.cloud/api/raster\"\n\n# Declare collection of interest - sentinel-2 daily data\ncollection_name = \"sentinel-2-all-vars-daily\"\n\n\n# Fetch the collection from the STAC API\ncatalog = Client.open(STAC_API_URL)\ncollection = catalog.get_collection(collection_name)\n# Print the properties of the collection to the console\ncollection\n\n\n\n\n\n\n <CollectionClient id=sentinel-2-all-vars-daily>\n\n\n \n \n \n \n \n \n type\n \"Collection\"\n \n \n \n \n \n \n \n id\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n \n description\n \"Sentinel-2 is a multispectral optical imaging mission providing high-resolution imagery for disaster monitoring and environmental assessment. This collection includes multiple spectral band products and derived indices: true color and false color composites for visual analysis, NDVI for vegetation health monitoring, burn ratio for fire damage assessment, MNDWI for water detection, and cloud masks for data quality filtering.\"\n \n \n \n \n \n \n links[] 5 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"items\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n rel\n \"http://www.opengis.net/def/rel/ogc/1.0/queryables\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/queryables\"\n \n \n \n \n \n \n \n type\n \"application/schema+json\"\n \n \n \n \n \n \n \n title\n \"Queryables\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n stac_extensions[] 3 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/render/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 2\n \"https://stac-extensions.github.io/authentication/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n tenant[] 1 items\n \n \n \n \n \n \n 0\n \"nasa-disasters\"\n \n \n \n \n \n \n \n \n \n \n \n \n renders\n \n \n \n \n \n ndvi\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"ndvi\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"mndwi\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 999\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colorIR\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"colorIR\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n burnRatio\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"burnRatio\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n -9999\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n cloudMask\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"cloudMask\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"trueColor\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ndviChange\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"ndviChange\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n shortwaveIR\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"shortwaveIR\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n bidx[] 3 items\n \n \n \n \n \n \n 0\n 1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3\n \n \n \n \n \n \n \n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"naturalColor\"\n \n \n \n \n \n \n \n \n \n \n \n \n nodata\n 0\n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n item_assets\n \n \n \n \n \n ndvi\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"NDVI\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n \n \n \n \n \n \n mndwi\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"MNDWI\"\n \n \n \n \n \n \n \n description\n \"Modified Normalized Difference Water Index for detecting and mapping surface water bodies and flood extent.\"\n \n \n \n \n \n \n \n \n \n \n \n \n colorIR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n \n \n \n \n \n \n burnRatio\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Burn Ratio\"\n \n \n \n \n \n \n \n description\n \"Normalized Burn Ratio (NBR) index highlighting burned areas by comparing near-infrared and shortwave infrared bands for fire damage assessment.\"\n \n \n \n \n \n \n \n \n \n \n \n \n cloudMask\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Cloud Mask\"\n \n \n \n \n \n \n \n description\n \"Cloud and cloud shadow mask identifying pixels obscured by atmospheric conditions for data quality filtering.\"\n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n \n \n \n \n \n \n ndviChange\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"NDVI Change\"\n \n \n \n \n \n \n \n description\n \"Normalized Difference Vegetation Index change between dates measuring vegetation health and density using near-infrared and red bands.\"\n \n \n \n \n \n \n \n \n \n \n \n \n shortwaveIR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Shortwave Infrared\"\n \n \n \n \n \n \n \n description\n \"Shortwave infrared composite highlighting moisture content and penetrating smoke for fire and drought monitoring.\"\n \n \n \n \n \n \n \n \n \n \n \n \n naturalColor\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Natural Color\"\n \n \n \n \n \n \n \n description\n \"Natural color composite using visible bands (Red, Green, Blue) for intuitive visual interpretation of surface features.\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dashboard:is_periodic\n False\n \n \n \n \n \n \n \n dashboard:time_interval\n \"P1D\"\n \n \n \n \n \n \n \n auth:schemes\n \n \n \n \n \n oidc\n \n \n \n \n \n type\n \"openIdConnect\"\n \n \n \n \n \n \n \n openIdConnectUrl\n \"https://keycloak.delta-backend.xyz/realms/veda/.well-known/openid-configuration\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 Daily\"\n \n \n \n \n \n \n \n extent\n \n \n \n \n \n spatial\n \n \n \n \n bbox[] 1 items\n \n \n \n \n \n 0[] 4 items\n \n \n \n \n \n \n 0\n -119.1975416533983\n \n \n \n \n \n \n \n \n \n \n \n 1\n -30.82134245583779\n \n \n \n \n \n \n \n \n \n \n \n 2\n -49.85229056436889\n \n \n \n \n \n \n \n \n \n \n \n 3\n 38.84899835984862\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n temporal\n \n \n \n \n interval[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n \"2015-03-13T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"2025-07-17T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n license\n \"CC0-1.0\"\n \n \n \n \n \n \n providers[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n name\n \"NASA\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n summaries\n \n \n \n \n \n \n \n \n \n\n\n\n\nBy looking at the documentation for the Sentinel-2 imagery for this event we can see the range of dates that are of interest for this event.\n\n# The search function lets you search for items within a specific date/time range\nsearch = catalog.search(\n collections=collection_name,\n datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']\n)\nitems = search.item_collection()\n# Print how many items we found in our search\nprint(f\"# items found: {len(items)}\")\n\n# items found: 10\n\n\n\n# Examine the first item in the collection\n# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection\nitems = search.item_collection()\nitems[0]\n\n\n\n\n\n\n <Item id=sentinel-2-2025-06-29>\n\n\n \n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-29\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-29T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-29\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2C_colorInfrared_2025-06-29_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10725\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18647\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 29.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3770\n \n \n \n \n \n \n \n \n \n \n \n 2\n 3233\n \n \n \n \n \n \n \n \n \n \n \n 3\n 4626\n \n \n \n \n \n \n \n \n \n \n \n 4\n 33247\n \n \n \n \n \n \n \n \n \n \n \n 5\n 178749\n \n \n \n \n \n \n \n \n \n \n \n 6\n 171022\n \n \n \n \n \n \n \n \n \n \n \n 7\n 80871\n \n \n \n \n \n \n \n \n \n \n \n 8\n 24883\n \n \n \n \n \n \n \n \n \n \n \n 9\n 28600\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 172.690855391621\n \n \n \n \n \n \n \n stddev\n 31.398073897514557\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 29\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 24.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3706\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6513\n \n \n \n \n \n \n \n \n \n \n \n 2\n 36476\n \n \n \n \n \n \n \n \n \n \n \n 3\n 94506\n \n \n \n \n \n \n \n \n \n \n \n 4\n 141958\n \n \n \n \n \n \n \n \n \n \n \n 5\n 136890\n \n \n \n \n \n \n \n \n \n \n \n 6\n 70575\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13186\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2727\n \n \n \n \n \n \n \n \n \n \n \n 9\n 24027\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 139.08797053701343\n \n \n \n \n \n \n \n stddev\n 38.417676022316265\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 24\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 25.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 4012\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8393\n \n \n \n \n \n \n \n \n \n \n \n 2\n 97965\n \n \n \n \n \n \n \n \n \n \n \n 3\n 213189\n \n \n \n \n \n \n \n \n \n \n \n 4\n 159128\n \n \n \n \n \n \n \n \n \n \n \n 5\n 16947\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2734\n \n \n \n \n \n \n \n \n \n \n \n 7\n 2015\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2228\n \n \n \n \n \n \n \n \n \n \n \n 9\n 23953\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 115.65447900724511\n \n \n \n \n \n \n \n stddev\n 36.66006012155539\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 25\n \n \n \n \n \n \n \n valid_percent\n 87.9675562393888\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37738839044249\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010160625438747018\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010160625438747032\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2C_trueColor_2025-06-29_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10725\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18647\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3608\n \n \n \n \n \n \n \n \n \n \n \n 1\n 5340\n \n \n \n \n \n \n \n \n \n \n \n 2\n 8652\n \n \n \n \n \n \n \n \n \n \n \n 3\n 22687\n \n \n \n \n \n \n \n \n \n \n \n 4\n 39202\n \n \n \n \n \n \n \n \n \n \n \n 5\n 58012\n \n \n \n \n \n \n \n \n \n \n \n 6\n 79236\n \n \n \n \n \n \n \n \n \n \n \n 7\n 88450\n \n \n \n \n \n \n \n \n \n \n \n 8\n 79517\n \n \n \n \n \n \n \n \n \n \n \n 9\n 144641\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 200.22185153349895\n \n \n \n \n \n \n \n stddev\n 44.6477179772496\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 45.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3125\n \n \n \n \n \n \n \n \n \n \n \n 1\n 4555\n \n \n \n \n \n \n \n \n \n \n \n 2\n 11395\n \n \n \n \n \n \n \n \n \n \n \n 3\n 49906\n \n \n \n \n \n \n \n \n \n \n \n 4\n 93135\n \n \n \n \n \n \n \n \n \n \n \n 5\n 126748\n \n \n \n \n \n \n \n \n \n \n \n 6\n 122520\n \n \n \n \n \n \n \n \n \n \n \n 7\n 66039\n \n \n \n \n \n \n \n \n \n \n \n 8\n 16783\n \n \n \n \n \n \n \n \n \n \n \n 9\n 35139\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 167.0375142865239\n \n \n \n \n \n \n \n stddev\n 37.391312765369086\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 45\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 39.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 3050\n \n \n \n \n \n \n \n \n \n \n \n 1\n 8287\n \n \n \n \n \n \n \n \n \n \n \n 2\n 39973\n \n \n \n \n \n \n \n \n \n \n \n 3\n 107656\n \n \n \n \n \n \n \n \n \n \n \n 4\n 173618\n \n \n \n \n \n \n \n \n \n \n \n 5\n 133135\n \n \n \n \n \n \n \n \n \n \n \n 6\n 25989\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4992\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1807\n \n \n \n \n \n \n \n \n \n \n \n 9\n 30838\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 141.70152547015653\n \n \n \n \n \n \n \n stddev\n 37.01677070914419\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 39\n \n \n \n \n \n \n \n valid_percent\n 87.76544593590832\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97877645825533\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.3773883904425\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010160625438747006\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342828381848\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010160625438747006\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n\n\n\n\n\n# Restructure our items into a dictionary where keys are the datetime items\n# Then we can query more easily by date/time, e.g. \"2020\"\nitems_dict = {item.properties[\"datetime\"][:10]: item for item in items}\n\nNow we will look for the possible prodcuts to choose from under assets and make a variable to store the name.\n\nasset_name = \"colorIR\" #or \"trueColor\"", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-sentinel-2", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-sentinel-2", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Fetch Imagery from Raster API for Sentinel-2", - "text": "Fetch Imagery from Raster API for Sentinel-2\nThere are several dates in dates for this event, but by trial-and-error we can find pre-fire and post-fire images over the Trout Fire.\n\n# Specify two date/times that you would like to visualize, using the format of items_dict.keys()\ndates = [\"2025-06-09\", \"2025-06-29\"]\n\n\n# Extract collection name and item ID for the first date\nobservation_date_1 = items_dict[dates[0]]\ncollection_id = observation_date_1.collection_id\nitem_id = observation_date_1.id\n# Select relevant asset (microbial CH4 emissions)\nobject = observation_date_1.assets[asset_name]\nraster_bands = object.extra_fields.get(\"raster:bands\", [{}])\n# Print the raster bands' information\nraster_bands\n\n[{'scale': 1.0,\n 'nodata': 0.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'uint8',\n 'histogram': {'max': 255.0,\n 'min': 31.0,\n 'count': 11,\n 'buckets': [1167,\n 2047,\n 1637,\n 1983,\n 26820,\n 174344,\n 172968,\n 101871,\n 30539,\n 17116]},\n 'statistics': {'mean': 174.80425718012714,\n 'stddev': 27.317252333798095,\n 'maximum': 255,\n 'minimum': 31,\n 'valid_percent': 87.95561863327674}},\n {'scale': 1.0,\n 'nodata': 0.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'uint8',\n 'histogram': {'max': 255.0,\n 'min': 30.0,\n 'count': 11,\n 'buckets': [2540,\n 6060,\n 54441,\n 96029,\n 140881,\n 130869,\n 73605,\n 13715,\n 2127,\n 10225]},\n 'statistics': {'mean': 137.3293169359764,\n 'stddev': 33.809314113255354,\n 'maximum': 255,\n 'minimum': 30,\n 'valid_percent': 87.95561863327674}},\n {'scale': 1.0,\n 'nodata': 0.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'uint8',\n 'histogram': {'max': 255.0,\n 'min': 30.0,\n 'count': 11,\n 'buckets': [2777,\n 11381,\n 131473,\n 208710,\n 147941,\n 13304,\n 2085,\n 1347,\n 1396,\n 10078]},\n 'statistics': {'mean': 112.29378576868265,\n 'stddev': 28.289548883427734,\n 'maximum': 255,\n 'minimum': 30,\n 'valid_percent': 87.95561863327674}}]\n\n\n\nobservation_date_1\n\n\n\n\n\n\n <Item id=sentinel-2-2025-06-09>\n\n\n \n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"sentinel-2-2025-06-09\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-09T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-09\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n colorIR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/colorIR/202506_Fire_NM_SilverCity_S2C_colorInfrared_2025-06-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Color Infrared\"\n \n \n \n \n \n \n \n description\n \"False color infrared composite (NIR, Red, Green) emphasizing vegetation health and vigor in red tones.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10731\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18657\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 31.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1167\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2047\n \n \n \n \n \n \n \n \n \n \n \n 2\n 1637\n \n \n \n \n \n \n \n \n \n \n \n 3\n 1983\n \n \n \n \n \n \n \n \n \n \n \n 4\n 26820\n \n \n \n \n \n \n \n \n \n \n \n 5\n 174344\n \n \n \n \n \n \n \n \n \n \n \n 6\n 172968\n \n \n \n \n \n \n \n \n \n \n \n 7\n 101871\n \n \n \n \n \n \n \n \n \n \n \n 8\n 30539\n \n \n \n \n \n \n \n \n \n \n \n 9\n 17116\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 174.80425718012714\n \n \n \n \n \n \n \n stddev\n 27.317252333798095\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 31\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2540\n \n \n \n \n \n \n \n \n \n \n \n 1\n 6060\n \n \n \n \n \n \n \n \n \n \n \n 2\n 54441\n \n \n \n \n \n \n \n \n \n \n \n 3\n 96029\n \n \n \n \n \n \n \n \n \n \n \n 4\n 140881\n \n \n \n \n \n \n \n \n \n \n \n 5\n 130869\n \n \n \n \n \n \n \n \n \n \n \n 6\n 73605\n \n \n \n \n \n \n \n \n \n \n \n 7\n 13715\n \n \n \n \n \n \n \n \n \n \n \n 8\n 2127\n \n \n \n \n \n \n \n \n \n \n \n 9\n 10225\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 137.3293169359764\n \n \n \n \n \n \n \n stddev\n 33.809314113255354\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 30.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2777\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11381\n \n \n \n \n \n \n \n \n \n \n \n 2\n 131473\n \n \n \n \n \n \n \n \n \n \n \n 3\n 208710\n \n \n \n \n \n \n \n \n \n \n \n 4\n 147941\n \n \n \n \n \n \n \n \n \n \n \n 5\n 13304\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2085\n \n \n \n \n \n \n \n \n \n \n \n 7\n 1347\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1396\n \n \n \n \n \n \n \n \n \n \n \n 9\n 10078\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 112.29378576868265\n \n \n \n \n \n \n \n stddev\n 28.289548883427734\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 30\n \n \n \n \n \n \n \n valid_percent\n 87.95561863327674\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010155627846948921\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010155627846948902\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n trueColor\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/Sentinel-2/trueColor/202506_Fire_NM_SilverCity_S2C_trueColor_2025-06-09_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"True Color\"\n \n \n \n \n \n \n \n description\n \"True color RGB composite using visible wavelengths for natural-looking imagery of Earth's surface.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n 2\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 10731\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18657\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 3 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 51.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 2225\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3927\n \n \n \n \n \n \n \n \n \n \n \n 2\n 11078\n \n \n \n \n \n \n \n \n \n \n \n 3\n 29024\n \n \n \n \n \n \n \n \n \n \n \n 4\n 36704\n \n \n \n \n \n \n \n \n \n \n \n 5\n 56057\n \n \n \n \n \n \n \n \n \n \n \n 6\n 74439\n \n \n \n \n \n \n \n \n \n \n \n 7\n 87987\n \n \n \n \n \n \n \n \n \n \n \n 8\n 84284\n \n \n \n \n \n \n \n \n \n \n \n 9\n 143546\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 200.4881525721228\n \n \n \n \n \n \n \n stddev\n 44.00330264921176\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 51\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 48.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1942\n \n \n \n \n \n \n \n \n \n \n \n 1\n 2886\n \n \n \n \n \n \n \n \n \n \n \n 2\n 16216\n \n \n \n \n \n \n \n \n \n \n \n 3\n 62153\n \n \n \n \n \n \n \n \n \n \n \n 4\n 96732\n \n \n \n \n \n \n \n \n \n \n \n 5\n 127597\n \n \n \n \n \n \n \n \n \n \n \n 6\n 124850\n \n \n \n \n \n \n \n \n \n \n \n 7\n 62837\n \n \n \n \n \n \n \n \n \n \n \n 8\n 15478\n \n \n \n \n \n \n \n \n \n \n \n 9\n 18580\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 165.45196317198562\n \n \n \n \n \n \n \n stddev\n 34.129329160357095\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 48\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 42.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 1964\n \n \n \n \n \n \n \n \n \n \n \n 1\n 9516\n \n \n \n \n \n \n \n \n \n \n \n 2\n 57189\n \n \n \n \n \n \n \n \n \n \n \n 3\n 118063\n \n \n \n \n \n \n \n \n \n \n \n 4\n 172531\n \n \n \n \n \n \n \n \n \n \n \n 5\n 119174\n \n \n \n \n \n \n \n \n \n \n \n 6\n 29610\n \n \n \n \n \n \n \n \n \n \n \n 7\n 4963\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1601\n \n \n \n \n \n \n \n \n \n \n \n 9\n 14660\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 138.5040423525944\n \n \n \n \n \n \n \n stddev\n 31.33891173315184\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 42\n \n \n \n \n \n \n \n valid_percent\n 87.75317672962647\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -106.97869343172056\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.37731504449202\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00010155627846948929\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.87342891912581\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00010155627846948929\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.46711546874811\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"sentinel-2-all-vars-daily\"\n \n \n \n \n \n \n\n\n\n\n\n# Make a GET request to retrieve information for your first date/time\ntile_pre = requests.get(\n f\"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={asset_name}\"\n).json()\n\n# Print the properties of the retrieved granule to the console\ntile_pre\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-09/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-108.87342891912581,\n 32.37731504449202,\n -106.97869343172056,\n 33.46711546874811],\n 'center': [-107.92606117542319, 32.92221525662006, 0]}\n\n\n\n# Repeat the above for your second date/time\nobservation_date_2 = items_dict[dates[1]]\n# Extract collection name and item ID\ncollection_id = observation_date_2.collection_id\nitem_id = observation_date_2.id\n\n# Make a GET request to retrieve information for your second date/time\ntile_post = requests.get(\n f\"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={asset_name}\"\n).json()\n\n# Print the properties of the retrieved granule to the console\ntile_post\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-29/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-108.87342828381848,\n 32.37738839044249,\n -106.97877645825533,\n 33.46711546874811],\n 'center': [-107.9261023710369, 32.922251929595305, 0]}\n\n\nWe will then use the tile URL prepared above to create a simple visualization for both time steps using folium. In the visualization you can zoom in and out of the map’s focus area and compare the burn scar to the pre-fire image side-by-side.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-sentinel-2", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-sentinel-2", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Generate Map for Sentinel-2", - "text": "Generate Map for Sentinel-2\nWe will use the folium package to generate visualizations. folium allows the user to zoom in to see the high-resolution detail of the imagery. The following code block will plot both of our data onto a dual map and fit a title.\n\n# Set initial zoom and map for Trout Fire\nm = folium.plugins.DualMap(location=(32.97, -108.15), zoom_start=11)\n\n# June 9 2025\nmap_layer_pre = TileLayer(\n tiles=tile_pre[\"tiles\"][0],\n attr=\"VEDA\",\n opacity=0.8,\n)\nmap_layer_pre.add_to(m.m1)\n\n# June 29 2025\nmap_layer_post = TileLayer(\n tiles=tile_post[\"tiles\"][0],\n attr=\"VEDA\",\n opacity=0.8,\n)\nmap_layer_post.add_to(m.m2)\n\n# Properly styled title overlay for DualMap\ntitle_html = f'''\n<div style=\"\nposition: fixed; \ntop: 75px; left: 0; width: 100%;\ntext-align: center;\nfont-size: 20px;\nfont-weight: bold;\nbackground-color: rgba(255, 255, 255, 0.7);\npadding: 5px;\nz-index: 9999;\n\">\nSentinel-2 Imagery Pre Fire ({dates[0]}) and Post Fire ({dates[1]})\n</div>\n'''\n\nm.get_root().html.add_child(folium.Element(title_html))\nm\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nFollowing the same process, we will review visualizing imagery from two more STAC collections. First, we will explore dNBR.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-normalized-burn-ratio-difference-dnbr", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-normalized-burn-ratio-difference-dnbr", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "About the Data: Normalized Burn Ratio Difference (dNBR)", - "text": "About the Data: Normalized Burn Ratio Difference (dNBR)\nNBR is defined mathematically as (NIR – SWIR)/(NIR + SWIR) where NIR is near-infrared and SWIR is short-wave infrared. dNBR is computed by the difference between the pre-fire NBR and the post-fire NBR. NBR is commonly used as a proxy to indicate areas which have charred vegetation. Darker areas (more negative values) in the NBR image more strongly represent the presence of burned vegetation. Since the dNBR considers the condition of the scene before the fire occurred, the resulting value has been used as a proxy for burn severity. Higher dNBR values represent a proxy for greater burn severity. Negative dNBR values may represent a re-greening of or growth of vegetation in between pre and post imagery.\nMore information on dNBR can be found here: https://un-spider.org/advisory-support/recommended-practices/recommended-practice-burn-severity/in-detail/normalized-burn-ratio.\ndNBR data may be computed while the fire is in progress. This is intentionally done to prioritize rapid data availability for proactive disaster response but means data can change over the course of the fire.\ndNBR is produced by NASA’s Observational Products for End-Users from Remote Sensing Analysis (OPERA) program, which generates surface products derived from satellite data. Therefore, dNBR data will be found in an opera collection.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-dnbr", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-dnbr", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Query the STAC API for dNBR", - "text": "Query the STAC API for dNBR\n\n# Fetch STAC collection\ncollection_name_opera_subdaily = \"opera-all-vars-subdaily\"\ncatalog = Client.open(STAC_API_URL)\ncollection = catalog.get_collection(collection_name_opera_subdaily)\n# Print the properties of the collection to the console\ncollection\n\n\n\n\n\n\n <CollectionClient id=opera-all-vars-subdaily>\n\n\n \n \n \n \n \n \n type\n \"Collection\"\n \n \n \n \n \n \n \n id\n \"opera-all-vars-subdaily\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n \n description\n \"OPERA (Observational Products for End-Users from Remote Sensing Analysis) provides subdaily Earth observation products for disaster monitoring. This collection includes surface water extent mapping from SAR and HLS sources, and burn severity assessment using delta Normalized Burn Ratio for rapid fire response and flood monitoring.\"\n \n \n \n \n \n \n links[] 5 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"items\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily/items\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n rel\n \"http://www.opengis.net/def/rel/ogc/1.0/queryables\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily/queryables\"\n \n \n \n \n \n \n \n type\n \"application/schema+json\"\n \n \n \n \n \n \n \n title\n \"Queryables\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n stac_extensions[] 3 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/render/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 2\n \"https://stac-extensions.github.io/authentication/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n tenant[] 1 items\n \n \n \n \n \n \n 0\n \"nasa-disasters\"\n \n \n \n \n \n \n \n \n \n \n \n \n renders\n \n \n \n \n \n WTR\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"WTR\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dnbr\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"dnbr\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-DSWx\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-DSWx\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n item_assets\n \n \n \n \n \n WTR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Water Classification\"\n \n \n \n \n \n \n \n description\n \"Surface water extent classification layer derived from SAR or optical imagery.\"\n \n \n \n \n \n \n \n \n \n \n \n \n dnbr\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Delta Normalized Burn Ratio\"\n \n \n \n \n \n \n \n description\n \"Delta Normalized Burn Ratio showing burn severity from pre- and post-fire imagery comparison.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-DSWx\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Dynamic Surface Water Extent\"\n \n \n \n \n \n \n \n description\n \"HLS Dynamic Surface Water Extent product showing water presence and classification.\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dashboard:is_periodic\n False\n \n \n \n \n \n \n \n dashboard:time_interval\n \"P1S\"\n \n \n \n \n \n \n \n auth:schemes\n \n \n \n \n \n oidc\n \n \n \n \n \n type\n \"openIdConnect\"\n \n \n \n \n \n \n \n openIdConnectUrl\n \"https://keycloak.delta-backend.xyz/realms/veda/.well-known/openid-configuration\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"OPERA All Variables Subdaily\"\n \n \n \n \n \n \n \n extent\n \n \n \n \n \n spatial\n \n \n \n \n bbox[] 1 items\n \n \n \n \n \n 0[] 4 items\n \n \n \n \n \n \n 0\n -124.13852907879547\n \n \n \n \n \n \n \n \n \n \n \n 1\n -32.71812239144448\n \n \n \n \n \n \n \n \n \n \n \n 2\n -49.82862066116967\n \n \n \n \n \n \n \n \n \n \n \n 3\n 37.94758795791628\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n temporal\n \n \n \n \n interval[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n \"2024-01-25T02:07:15Z\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"2025-06-22T17:45:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n license\n \"CC0-1.0\"\n \n \n \n \n \n \n providers[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n name\n \"NASA Disasters Program\"\n \n \n \n \n \n \n roles[] 1 items\n \n \n \n \n \n \n 0\n \"host\"\n \n \n \n \n \n \n \n \n \n \n \n \n url\n \"https://disasters.openveda.cloud\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n summaries\n \n \n \n \n datetime[] 9 items\n \n \n \n \n \n \n 0\n \"2024-01-25T02:07:15Z\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"2024-01-25T14:08:49Z\"\n \n \n \n \n \n \n \n \n \n \n \n 2\n \"2024-02-06T02:07:15Z\"\n \n \n \n \n \n \n \n \n \n \n \n 3\n \"2024-02-06T13:43:47Z\"\n \n \n \n \n \n \n \n \n \n \n \n 4\n \"2024-04-21T13:31:51Z\"\n \n \n \n \n \n \n \n \n \n \n \n 5\n \"2024-05-18T13:22:31Z\"\n \n \n \n \n \n \n \n \n \n \n \n 6\n \"2024-05-21T13:31:51Z\"\n \n \n \n \n \n \n \n \n \n \n \n 7\n \"2025-06-21T18:05:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n 8\n \"2025-06-22T17:45:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n# The search function lets you search for items within a specific date/time range\nsearch = catalog.search(\n collections=collection_name_opera_subdaily,\n datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']\n)\nitems = search.item_collection()\n# Print how many items we found in our search\nprint(f\"# items found: {len(items)}\")\n\n# items found: 2\n\n\n\n# Examine the first item in the collection\n# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection\nitems = search.item_collection()\nitems[0]\n\n\n\n\n\n\n <Item id=opera-2025-06-22T17:45:00>\n\n\n \n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"opera-2025-06-22T17:45:00\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-22T17:45:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-subdaily/items/opera-2025-06-22T17:45:00\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n dnbr\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/OPERA/dnbr/202506_Fire_NM_dnbr_57334_2025-06-22T17:45:00Z.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"Delta Normalized Burn Ratio\"\n \n \n \n \n \n \n \n description\n \"Delta Normalized Burn Ratio showing burn severity from pre- and post-fire imagery comparison.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 3\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 748\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n -9999.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"float64\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 0.8671119969273169\n \n \n \n \n \n \n \n min\n -0.2561326292706968\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 5\n \n \n \n \n \n \n \n \n \n \n \n 1\n 18181\n \n \n \n \n \n \n \n \n \n \n \n 2\n 254157\n \n \n \n \n \n \n \n \n \n \n \n 3\n 100968\n \n \n \n \n \n \n \n \n \n \n \n 4\n 34731\n \n \n \n \n \n \n \n \n \n \n \n 5\n 10027\n \n \n \n \n \n \n \n \n \n \n \n 6\n 2388\n \n \n \n \n \n \n \n \n \n \n \n 7\n 409\n \n \n \n \n \n \n \n \n \n \n \n 8\n 19\n \n \n \n \n \n \n \n \n \n \n \n 9\n 13\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 0.07357712462488378\n \n \n \n \n \n \n \n stddev\n 0.09410669164114314\n \n \n \n \n \n \n \n maximum\n 0.8671119969273169\n \n \n \n \n \n \n \n minimum\n -0.2561326292706968\n \n \n \n \n \n \n \n valid_percent\n 99.94633409637068\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -108.01506342300563\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 1\n 32.87367428279499\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.00029822365315012515\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -108.23813471556193\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.00029822365315012515\n \n \n \n \n \n \n \n \n \n \n \n 5\n 33.04157419951851\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"opera-all-vars-subdaily\"\n \n \n \n \n \n \n\n\n\n\n\n# Restructure our items into a dictionary where keys are the datetime items\n# Then we can query more easily by date/time, e.g. \"2020\"\nitems_dict = {item.properties[\"datetime\"][:10]: item for item in items}\n\n\nasset_name = \"dnbr\"", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-dnbr", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-dnbr", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Fetch Imagery from Raster API for dNBR", - "text": "Fetch Imagery from Raster API for dNBR\nI will choose one of the two dates in dates to visualize.\n\n# Specify date that you would like to visualize, using the format of items_dict.keys()\ndate = \"2025-06-21\"\n\nThis time, we will look at the rescale values of dNBR to adjust our colormap. dNBR ranges from values of -1 to 1, with more positive values indicating more severe burns.\n\n# Extract collection name and item ID for the first date\nobservation_date = items_dict[date]\ncollection_id = observation_date.collection_id\nitem_id = observation_date.id\n# Select relevant asset (microbial CH4 emissions)\nobject = observation_date.assets[asset_name]\nraster_bands = object.extra_fields.get(\"raster:bands\", [{}])\n# Print the raster bands' information\nraster_bands\n\n[{'scale': 1.0,\n 'nodata': -9999.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'float64',\n 'histogram': {'max': 0.9816958355058067,\n 'min': -0.1365383543458513,\n 'count': 11,\n 'buckets': [8923, 258816, 109761, 30963, 7436, 1582, 328, 53, 50, 19]},\n 'statistics': {'mean': 0.08097275888625194,\n 'stddev': 0.0855684493119729,\n 'maximum': 0.9816958355058067,\n 'minimum': -0.1365383543458513,\n 'valid_percent': 99.24179101642272}}]\n\n\n\n#Generate an appropriate color bar range.\nrescale_values = {\n \"max\": raster_bands[0]['statistics']['maximum'],\n \"min\": raster_bands[0]['statistics']['minimum'],\n}\n\nprint(rescale_values)\n\n{'max': 0.9816958355058067, 'min': -0.1365383543458513}\n\n\n\n# Choose a colormap for displaying the data\n# Make sure to capitalize per Matplotlib standard colormap names\n# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html\ncolor_map = \"inferno\"\n\n\n# Make a GET request to retrieve information for your first date/time\nobservation_tile = requests.get(\n f\"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}\"\n f\"&rescale={rescale_values['min']},{rescale_values['max']}\"\n).json()\n\n# Print the properties of the retrieved granule to the console\nobservation_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-subdaily/items/opera-2025-06-21T18:05:00/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=dnbr&color_formula=gamma+r+1.05&colormap_name=inferno&rescale=-0.1365383543458513%2C0.9816958355058067'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-108.23813471556193,\n 32.87367428279499,\n -108.01506342300563,\n 33.04157419951851],\n 'center': [-108.12659906928377, 32.95762424115675, 0]}", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-dnbr", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-dnbr", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Generate Map for dNBR", - "text": "Generate Map for dNBR\nWe will use the folium package once again, but this time we also add code to generate a colorbar.\n\n# --- Create the DualMap ---\nm = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 32.97,\n -108.15,\n ],\n zoom_start=12,\n)\n\nmap_layer = TileLayer(\n tiles=observation_tile[\"tiles\"][0],\n attr=\"VEDA\",\n opacity=0.6,\n)\n\nmap_layer.add_to(m)\n\n# --- Add title ---\ntitle_html = f'''\n<div style=\"\nposition: fixed; \ntop: 75px; left: 0; width: 100%;\ntext-align: center;\nfont-size: 20px;\nfont-weight: bold;\nbackground-color: rgba(255, 255, 255, 0.7);\npadding: 5px;\nz-index: 9999;\n\">\nBurn Severity Map (dNBR) on {date}\n</div>\n'''\nm.get_root().html.add_child(folium.Element(title_html))\n\n# Get the matplotlib colormap (same as your API color_map)\nmpl_colormap = mpl_cm.get_cmap(color_map.lower())\n\n# Create a Branca LinearColormap using the same range\ncolormap = cm.LinearColormap(\n colors=[mpl_colormap(i) for i in range(mpl_colormap.N)],\n vmin=rescale_values['min'],\n vmax=rescale_values['max']\n)\ncolormap.caption = \"dNBR\"\n\n# --- Use to_step() to get stable HTML ---\ncolormap_step = colormap.to_step(n=50)\ncolorbar_html = colormap_step._repr_html_()\n\n# --- Wrap and fix position (bottom-left) ---\nfixed_colorbar = f'''\n<div style=\"\nposition: fixed;\nbottom: 30px;\nleft: 30px;\nwidth: 220px;\nz-index: 9999;\n\">\n{colorbar_html}\n</div>\n'''\nm.get_root().html.add_child(folium.Element(fixed_colorbar))\n\nm\n\n/tmp/ipykernel_84/1287173695.py:37: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n mpl_colormap = mpl_cm.get_cmap(color_map.lower())\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-veg-anom-max", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#about-the-data-veg-anom-max", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "About the Data: VEG-ANOM-MAX", - "text": "About the Data: VEG-ANOM-MAX\nFinally, we will explore changes in vegetation cover.\nVEG-ANOM-MAX is derived from OPERA Disturbance Alert - Harmonized Landsat Sentinel-2 data. It measures the difference between historical and current year observed vegetation cover at the date of maximum decrease (vegetation loss of 0-100%). This layer can be used to threshold vegetation disturbance per a given sensitivity (e.g.Β disturbance of >=20% vegetation cover loss). The sum of the historical percent vegetation and the anomaly value will be the vegetation cover estimate for the current year.\nThe process for visualization will exactly follow prior examples.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-max-vegetation-anomoly", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#query-the-stac-api-for-max-vegetation-anomoly", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Query the STAC API for Max Vegetation Anomoly", - "text": "Query the STAC API for Max Vegetation Anomoly\n\n# Fetch the collection from the STAC API\ncollection_name_opera_daily = \"opera-all-vars-daily\"\ncatalog = Client.open(STAC_API_URL)\ncollection = catalog.get_collection(collection_name_opera_daily)\n# Print the properties of the collection to the console\ncollection\n\n\n\n\n\n\n <CollectionClient id=opera-all-vars-daily>\n\n\n \n \n \n \n \n \n type\n \"Collection\"\n \n \n \n \n \n \n \n id\n \"opera-all-vars-daily\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n \n description\n \"OPERA (Observational Products for End-Users from Remote Sensing Analysis) provides multiple Earth observation products including InSAR displacement measurements, vegetation disturbance alerts, and surface water extent mapping. This collection combines OPERA-InSAR displacement products (unwrapped/wrapped phase, azimuth and range offsets), ARIA OPERA vegetation disturbance status and anomaly products derived from Sentinel-2, and HLS-derived dynamic surface water extent products for comprehensive land surface monitoring.\"\n \n \n \n \n \n \n links[] 5 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"items\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily/items\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4\n \n \n \n \n \n rel\n \"http://www.opengis.net/def/rel/ogc/1.0/queryables\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily/queryables\"\n \n \n \n \n \n \n \n type\n \"application/schema+json\"\n \n \n \n \n \n \n \n title\n \"Queryables\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n stac_extensions[] 3 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/render/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 2\n \"https://stac-extensions.github.io/authentication/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n tenant[] 1 items\n \n \n \n \n \n \n 0\n \"nasa-disasters\"\n \n \n \n \n \n \n \n \n \n \n \n \n renders\n \n \n \n \n \n AZ\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"AZ\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -10\n \n \n \n \n \n \n \n \n \n \n \n 1\n 72\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n RNG\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"RNG\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -15\n \n \n \n \n \n \n \n \n \n \n \n 1\n 15\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n UNW\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"UNW\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -1\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n WRP\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"WRP\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -3.14\n \n \n \n \n \n \n \n \n \n \n \n 1\n 3.14\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-WTR\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-WTR\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-BWTR\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-BWTR\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-DWSx\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-DWSx\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n GEN-ANOM-MAX\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"GEN-ANOM-MAX\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 100\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colormap_name\n \"ylorrd\"\n \n \n \n \n \n \n \n \n \n \n \n \n VEG-ANOM-MAX\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"VEG-ANOM-MAX\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 100\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colormap_name\n \"ylorrd\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-FloodMap\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-FloodMap\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-NoSnowIce\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-NoSnowIce\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n GEN-DIST-STATUS\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"GEN-DIST-STATUS\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colormap_name\n \"ylorrd\"\n \n \n \n \n \n \n \n \n \n \n \n \n VEG-DIST-STATUS\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"VEG-DIST-STATUS\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 255\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n colormap_name\n \"ylorrd\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-changeMap-date1\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-changeMap-date1\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n hls-changeMap-date2\n \n \n \n \n assets[] 1 items\n \n \n \n \n \n \n 0\n \"hls-changeMap-date2\"\n \n \n \n \n \n \n \n \n \n \n \n rescale[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n 1\n 1\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n item_assets\n \n \n \n \n \n AZ\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Azimuth Offset\"\n \n \n \n \n \n \n \n description\n \"Azimuth offset measurements detecting horizontal ground displacement perpendicular to satellite flight direction from InSAR processing.\"\n \n \n \n \n \n \n \n \n \n \n \n \n RNG\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Range Offset\"\n \n \n \n \n \n \n \n description\n \"Range offset measurements detecting ground displacement parallel to satellite line-of-sight from InSAR processing.\"\n \n \n \n \n \n \n \n \n \n \n \n \n UNW\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Unwrapped Phase\"\n \n \n \n \n \n \n \n description\n \"Unwrapped interferometric phase representing ground displacement measurements after phase ambiguity resolution.\"\n \n \n \n \n \n \n \n \n \n \n \n \n WRP\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Wrapped Phase\"\n \n \n \n \n \n \n \n description\n \"Wrapped interferometric phase showing ground displacement within 2Ο€ phase cycles before unwrapping.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-WTR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Water\"\n \n \n \n \n \n \n \n description\n \"HLS water classification layer.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-BWTR\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Binary Water\"\n \n \n \n \n \n \n \n description\n \"HLS binary water classification.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-DWSx\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Dynamic Surface Water Extent\"\n \n \n \n \n \n \n \n description\n \"HLS Dynamic Surface Water Extent product showing water presence and classification.\"\n \n \n \n \n \n \n \n \n \n \n \n \n GEN-ANOM-MAX\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 ARIA OPERA Disturbance Alert (GEN ANOM MAX)\"\n \n \n \n \n \n \n \n description\n \"Generic disturbance maximum anomaly value.\"\n \n \n \n \n \n \n \n \n \n \n \n \n VEG-ANOM-MAX\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 ARIA OPERA Disturbance Alert (VEG ANOM MAX)\"\n \n \n \n \n \n \n \n description\n \"S2 ARIA OPERA disturbance alert maximum vegetation anomaly value.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-FloodMap\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Flood Map\"\n \n \n \n \n \n \n \n description\n \"HLS-derived flood extent map identifying inundated areas.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-NoSnowIce\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Water No Snow/Ice\"\n \n \n \n \n \n \n \n description\n \"HLS water extent excluding snow and ice coverage.\"\n \n \n \n \n \n \n \n \n \n \n \n \n GEN-DIST-STATUS\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 ARIA OPERA Disturbance Alert (GEN DIST STATUS)\"\n \n \n \n \n \n \n \n description\n \"Generic disturbance status.\"\n \n \n \n \n \n \n \n \n \n \n \n \n VEG-DIST-STATUS\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"Sentinel-2 ARIA OPERA Disturbance Alert (VEG DIST STATUS)\"\n \n \n \n \n \n \n \n description\n \"S2 ARIA OPERA vegetation disturbance status.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-changeMap-date1\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Change Map\"\n \n \n \n \n \n \n \n description\n \"HLS surface water change detection map showing changes in water extent between time periods.\"\n \n \n \n \n \n \n \n \n \n \n \n \n hls-changeMap-date2\n \n \n \n \n \n type\n \"image/tiff; application=geotiff; profile=cloud-optimized\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"HLS Change Map\"\n \n \n \n \n \n \n \n description\n \"HLS surface water change detection map showing changes in water extent between time periods.\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dashboard:is_periodic\n False\n \n \n \n \n \n \n \n dashboard:time_interval\n \"P1D\"\n \n \n \n \n \n \n \n auth:schemes\n \n \n \n \n \n oidc\n \n \n \n \n \n type\n \"openIdConnect\"\n \n \n \n \n \n \n \n openIdConnectUrl\n \"https://keycloak.delta-backend.xyz/realms/veda/.well-known/openid-configuration\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n title\n \"OPERA All Variables Daily\"\n \n \n \n \n \n \n \n extent\n \n \n \n \n \n spatial\n \n \n \n \n bbox[] 1 items\n \n \n \n \n \n 0[] 4 items\n \n \n \n \n \n \n 0\n -127.047501638\n \n \n \n \n \n \n \n \n \n \n \n 1\n -32.66765099343841\n \n \n \n \n \n \n \n \n \n \n \n 2\n 92.1772250157607\n \n \n \n \n \n \n \n \n \n \n \n 3\n 42.5476\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n temporal\n \n \n \n \n interval[] 1 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n \"2023-06-12T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"2025-07-11T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n license\n \"CC0-1.0\"\n \n \n \n \n \n \n providers[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n name\n \"NASA Disasters Program\"\n \n \n \n \n \n \n roles[] 1 items\n \n \n \n \n \n \n 0\n \"host\"\n \n \n \n \n \n \n \n \n \n \n \n \n url\n \"https://disasters.openveda.cloud\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n summaries\n \n \n \n \n \n \n \n \n \n\n\n\n\n\n# The search function lets you search for items within a specific date/time range\nsearch = catalog.search(\n collections=collection_name_opera_daily,\n datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']\n)\nitems = search.item_collection()\n# Print how many items we found in our search\nprint(f\"# items found: {len(items)}\")\n\n# items found: 4\n\n\n\n# Examine the first item in the collection\n# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection\nitems = search.item_collection()\nitems[0]\n\n\n\n\n\n\n <Item id=opera-2025-06-28>\n\n\n \n \n \n \n \n \n type\n \"Feature\"\n \n \n \n \n \n \n \n stac_version\n \"1.1.0\"\n \n \n \n \n \n \n stac_extensions[] 2 items\n \n \n \n \n \n \n 0\n \"https://stac-extensions.github.io/raster/v1.1.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\"\n \n \n \n \n \n \n \n \n \n \n \n \n id\n \"opera-2025-06-28\"\n \n \n \n \n \n \n \n geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bbox[] 4 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n 2\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n properties\n \n \n \n \n \n datetime\n \"2025-06-28T00:00:00Z\"\n \n \n \n \n \n \n \n \n \n \n \n links[] 4 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n rel\n \"collection\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n rel\n \"parent\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2\n \n \n \n \n \n rel\n \"root\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac\"\n \n \n \n \n \n \n \n type\n \"application/json\"\n \n \n \n \n \n \n \n title\n \"VEDA (Visualization, Exploration, and Data Analysis) STAC API\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3\n \n \n \n \n \n rel\n \"self\"\n \n \n \n \n \n \n \n href\n \"https://dev.openveda.cloud/api/stac/collections/opera-all-vars-daily/items/opera-2025-06-28\"\n \n \n \n \n \n \n \n type\n \"application/geo+json\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n assets\n \n \n \n \n \n hls-BWTR\n \n \n \n \n \n href\n \"s3://nasa-disasters/drcs_activations_new/OPERA/dswx/202506_Fire_NM_OPERA_DSWx-HLS_V1_BWTR_2025-06-28_day.tif\"\n \n \n \n \n \n \n \n type\n \"image/tiff; application=geotiff\"\n \n \n \n \n \n \n \n title\n \"HLS Binary Water\"\n \n \n \n \n \n \n \n description\n \"HLS binary water classification.\"\n \n \n \n \n \n \n proj:bbox[] 4 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n 2\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 3\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n proj:shape[] 2 items\n \n \n \n \n \n \n 0\n 9467\n \n \n \n \n \n \n \n \n \n \n \n 1\n 11335\n \n \n \n \n \n \n \n \n \n \n \n raster:bands[] 1 items\n \n \n \n \n \n \n 0\n \n \n \n \n \n scale\n 1.0\n \n \n \n \n \n \n \n nodata\n 0.0\n \n \n \n \n \n \n \n offset\n 0.0\n \n \n \n \n \n \n \n sampling\n \"area\"\n \n \n \n \n \n \n \n data_type\n \"uint8\"\n \n \n \n \n \n \n \n histogram\n \n \n \n \n \n max\n 255.0\n \n \n \n \n \n \n \n min\n 1.0\n \n \n \n \n \n \n \n count\n 11\n \n \n \n \n \n \n buckets[] 10 items\n \n \n \n \n \n \n 0\n 988\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0\n \n \n \n \n \n \n \n \n \n \n \n 2\n 0\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0\n \n \n \n \n \n \n \n \n \n \n \n 4\n 0\n \n \n \n \n \n \n \n \n \n \n \n 5\n 0\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 0\n \n \n \n \n \n \n \n \n \n \n \n 9\n 380803\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n statistics\n \n \n \n \n \n mean\n 252.5171599120985\n \n \n \n \n \n \n \n stddev\n 12.82359227869026\n \n \n \n \n \n \n \n maximum\n 255\n \n \n \n \n \n \n \n minimum\n 1\n \n \n \n \n \n \n \n valid_percent\n 43.55639876606308\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:geometry\n \n \n \n \n \n type\n \"Polygon\"\n \n \n \n \n \n \n coordinates[] 1 items\n \n \n \n \n \n 0[] 5 items\n \n \n \n \n \n 0[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 1[] 2 items\n \n \n \n \n \n \n 0\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 2[] 2 items\n \n \n \n \n \n \n 0\n -103.80645672940621\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 3[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 4[] 2 items\n \n \n \n \n \n \n 0\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 1\n 31.529271747816416\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n proj:transform[] 9 items\n \n \n \n \n \n \n 0\n 0.0002970730772894858\n \n \n \n \n \n \n \n \n \n \n \n 1\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 2\n -107.17378006048253\n \n \n \n \n \n \n \n \n \n \n \n 3\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 4\n -0.0002970730772894858\n \n \n \n \n \n \n \n \n \n \n \n 5\n 34.34166257051598\n \n \n \n \n \n \n \n \n \n \n \n 6\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 7\n 0.0\n \n \n \n \n \n \n \n \n \n \n \n 8\n 1.0\n \n \n \n \n \n \n \n \n \n \n \n \n proj:code\n \"EPSG:4326\"\n \n \n \n \n \n \n roles[] 2 items\n \n \n \n \n \n \n 0\n \"data\"\n \n \n \n \n \n \n \n \n \n \n \n 1\n \"layer\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection\n \"opera-all-vars-daily\"\n \n \n \n \n \n \n\n\n\n\n\n# Restructure our items into a dictionary where keys are the datetime items\n# Then we can query more easily by date/time, e.g. \"2020\"\nitems_dict = {item.properties[\"datetime\"][:10]: item for item in items}\n\nI will use the colormap under VEG-ANOM-MAX.\n\nasset_name = \"VEG-ANOM-MAX\"", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-max-vegetation-anomoly", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#fetch-imagery-from-raster-api-for-max-vegetation-anomoly", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Fetch Imagery from Raster API for Max Vegetation Anomoly", - "text": "Fetch Imagery from Raster API for Max Vegetation Anomoly\n\ndate = \"2025-06-24\"\n\n\n# Extract collection name and item ID for the first date\nobservation_date= items_dict[date]\ncollection_id = observation_date.collection_id\nitem_id = observation_date.id\n# Select relevant asset (microbial CH4 emissions)\nobject = observation_date.assets[asset_name]\nraster_bands = object.extra_fields.get(\"raster:bands\", [{}])\n# Print the raster bands' information\nraster_bands\n\n[{'scale': 1.0,\n 'nodata': 0.0,\n 'offset': 0.0,\n 'sampling': 'area',\n 'data_type': 'uint8',\n 'histogram': {'max': 255.0,\n 'min': 10.0,\n 'count': 11,\n 'buckets': [3681, 653, 63, 3, 0, 0, 0, 0, 0, 55864]},\n 'statistics': {'mean': 238.1747477764503,\n 'stddev': 60.02815956239316,\n 'maximum': 255,\n 'minimum': 10,\n 'valid_percent': 5.792476624015748}}]\n\n\n\n#Generate an appropriate color bar range.\nrescale_values = {\n \"max\": raster_bands[0]['statistics']['maximum'],\n \"min\": raster_bands[0]['statistics']['minimum'],\n}\n\nprint(rescale_values)\n\n{'max': 255, 'min': 10}\n\n\n\n# Choose a colormap for displaying the data\n# Make sure to capitalize per Matplotlib standard colormap names\n# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html\ncolor_map = \"magma\"\n\nFor this situation, I am hard-coding the maximum rescale to 100, because the values above 100 (255) are erroneous (no data) values.\n\n# Make a GET request to retrieve information for your first date/time\nobservation_tile = requests.get(\n f\"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?\"\n f\"&assets={asset_name}\"\n f\"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}\"\n f\"&rescale={rescale_values['min']},100\"\n).json()\n\n# Print the properties of the retrieved granule to the console\nobservation_tile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-daily/items/opera-2025-06-24/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=VEG-ANOM-MAX&color_formula=gamma+r+1.05&colormap_name=magma&rescale=10%2C100'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-108.97616786143968,\n 31.475062809632632,\n -107.00321128236091,\n 33.46381942656848],\n 'center': [-107.9896895719003, 32.469441118100555, 0]}\n\n\n\nparams = {\n \"assets\": \"VEG-ANOM-MAX\",\n \"rescale\": \"0,100\",\n \"colormap_name\": \"ylorrd\"\n}\n\n\ntile = requests.get(\n f\"{RASTER_API_URL}/collections/{collection_name_opera_daily}/items/{'opera-2025-06-24'}/WebMercatorQuad/tilejson.json?\",\n params=params,\n).json()\ntile\n\n{'tilejson': '2.2.0',\n 'version': '1.0.0',\n 'scheme': 'xyz',\n 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-daily/items/opera-2025-06-24/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=VEG-ANOM-MAX&rescale=0%2C100&colormap_name=ylorrd'],\n 'minzoom': 0,\n 'maxzoom': 24,\n 'bounds': [-108.97616786143968,\n 31.475062809632632,\n -107.00321128236091,\n 33.46381942656848],\n 'center': [-107.9896895719003, 32.469441118100555, 0]}", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-max-vegetation-anomoly", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#generate-map-for-max-vegetation-anomoly", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Generate Map for Max Vegetation Anomoly", - "text": "Generate Map for Max Vegetation Anomoly\nWe will use the folium package once again with the same format at the dNBR visualization.\n\nm = Map(\n tiles=\"OpenStreetMap\",\n location=[\n 32.97,\n -108.15,\n ],\n zoom_start=12,\n)\n\nmap_layer = TileLayer(\n tiles=observation_tile[\"tiles\"][0],\n attr=\"VEDA\",\n opacity=0.6,\n)\n\nmap_layer.add_to(m)\n\n# --- Add title ---\ntitle_html = f'''\n<div style=\"\nposition: fixed; \ntop: 75px; left: 0; width: 100%;\ntext-align: center;\nfont-size: 20px;\nfont-weight: bold;\nbackground-color: rgba(255, 255, 255, 0.7);\npadding: 5px;\nz-index: 9999;\n\">\nMaximum Loss of Vegetation {date}\n</div>\n'''\nm.get_root().html.add_child(folium.Element(title_html))\n\n# Get the matplotlib colormap (same as your API color_map)\nmpl_colormap = mpl_cm.get_cmap(color_map.lower())\n\n# Create a Branca LinearColormap using the same range\ncolormap = cm.LinearColormap(\n colors=[mpl_colormap(i) for i in range(mpl_colormap.N)],\n vmin=rescale_values['min'],\n vmax=rescale_values['max']\n)\ncolormap.caption = \"Vegetation Loss (%)\"\n\n# --- Use to_step() to get stable HTML ---\ncolormap_step = colormap.to_step(n=50)\ncolorbar_html = colormap_step._repr_html_()\n\n# --- Wrap and fix position (bottom-left) ---\nfixed_colorbar = f'''\n<div style=\"\nposition: fixed;\nbottom: 30px;\nleft: 30px;\nwidth: 220px;\nz-index: 9999;\n\">\n{colorbar_html}\n</div>\n'''\nm.get_root().html.add_child(folium.Element(fixed_colorbar))\n\nm\n\n/tmp/ipykernel_84/2684050226.py:36: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.\n mpl_colormap = mpl_cm.get_cmap(color_map.lower())\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nSome of the areas with the most significant vegetation loss line up with the areas of peak dNBR. This is one of the utilties of these data: you can draw connections between different datasets.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - }, - { - "objectID": "user_data_notebooks/New_Mexico_Fire_2025.html#summary", - "href": "user_data_notebooks/New_Mexico_Fire_2025.html#summary", - "title": "Analyzing the Effects of June 2025 New Mexico Wildfires", - "section": "Summary", - "text": "Summary\nIn this case study we have successfully visualized how NASA monitors wildfires with several satellite products observing the June 2025 Trout Fire in New Mexico. We demonstrated how to query the STAC collections and raster API to gather satellite imagery of a disaster. Using three satellite products, we could see areas that were ongoing signifcant burning (dNBR), areas that lost significant vegetation (VEG-ANOM-MAX), and what the burn scar looked like (Sentinel-2 color IR and true color). Using the various products, we can analyze how the fire was evolving and how it impacted the area, and how things like the areas of burning related to the lost vegetation spatially.", - "crumbs": [ - "Data Usage Notebooks", - "Disaster Case Studies", - "New Mexico Fire 2025" - ] - } -] \ No newline at end of file diff --git a/_site/services/apis.html b/_site/services/apis.html deleted file mode 100644 index 6c497f7..0000000 --- a/_site/services/apis.html +++ /dev/null @@ -1,1316 +0,0 @@ - - - - - - - - - -APIs – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

APIs

-

These publicly available Application Programming Interfaces (APIs) are provided by the US GHG Center

-
- - - -
- - - - -
- - - -
- - -

Please note: while some of our services are already very mature, the US GHG Center platform is currently in the beta phase and will undergo many changes in coming months.

- -
-

Open Source

-

Most of the US GHG Center APIs are hosted out of a single project (veda-backend) that combines multiple standalone services.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/services/jupyterhub.html b/_site/services/jupyterhub.html deleted file mode 100644 index 6918281..0000000 --- a/_site/services/jupyterhub.html +++ /dev/null @@ -1,1324 +0,0 @@ - - - - - - - - - -JupyterHub – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

JupyterHub

-
- - - -
- - - - -
- - - -
- - -

The US GHG Center promotes the use of JupyterHub environments for interactive data science. JupyterHub enables you to analyze massive archives of Earth science data in the cloud in an interactive environment that alleviates the complexities of managing compute resources (virtual machines, roles and permissions, etc).

-

Users affiliated with the US GHG Center can get access to a dedicated JupyterHub service, provided in collaboration with 2i2c: hub.ghg.center. Please find instructions for requesting access below.

-

If you are a scientist affiliated with other NASA projects such as VEDA, EIS, and MAAP, you can also keep using the resources provided by these projects. Through the use of open-source technology, we make sure our services are interoperable and exchangeable.

-
-

To Get US GHG Center JupyterHub access:

-

The US GHG Center notebook environment is available to authorized users on an as-need basis. If you are a user affiliated with the US GHG Center, you can gain access by using our Hub Access Request form.

- -
-
-

To access User Notebooks

-

This site provides Jupyter notebooks showing how to load and analyze Earth data in the interactive cloud computing environment.

-

Further instructions are included in each notebook.

-

If you have any questions, please use the feedback form to contact the US GHG Center user support team.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-ca24d4459ea48b6d86e57b4fecbb35c6.min.css b/_site/site_libs/bootstrap/bootstrap-ca24d4459ea48b6d86e57b4fecbb35c6.min.css deleted file mode 100644 index b2d2b6c..0000000 --- a/_site/site_libs/bootstrap/bootstrap-ca24d4459ea48b6d86e57b4fecbb35c6.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2c3e50;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #18bc9c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ecf0f1;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #7b8a8b;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #6c757d;--bs-primary: #2c3e50;--bs-secondary: #6c757d;--bs-success: #18bc9c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: #ecf0f1;--bs-dark: #7b8a8b;--bs-default-rgb: 108, 117, 125;--bs-primary-rgb: 44, 62, 80;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 24, 188, 156;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 236, 240, 241;--bs-dark-rgb: 123, 138, 139;--bs-primary-text-emphasis: rgb(17.6, 24.8, 32);--bs-secondary-text-emphasis: rgb(43.2, 46.8, 50);--bs-success-text-emphasis: rgb(9.6, 75.2, 62.4);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #7b8a8b;--bs-dark-text-emphasis: #7b8a8b;--bs-primary-bg-subtle: rgb(212.8, 216.4, 220);--bs-secondary-bg-subtle: rgb(225.6, 227.4, 229);--bs-success-bg-subtle: rgb(208.8, 241.6, 235.2);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(170.6, 177.8, 185);--bs-secondary-border-subtle: rgb(196.2, 199.8, 203);--bs-success-border-subtle: rgb(162.6, 228.2, 215.4);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ecf0f1;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #ecf0f1;--bs-secondary-bg-rgb: 236, 240, 241;--bs-tertiary-color: rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #18bc9c;--bs-link-color-rgb: 24, 188, 156;--bs-link-decoration: underline;--bs-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-link-hover-color-rgb: 19, 150, 125;--bs-code-color: #7d12ba;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(44, 62, 80, 0.25);--bs-form-valid-color: #18bc9c;--bs-form-valid-border-color: #18bc9c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: rgb(42.5, 47.5, 52.5);--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: rgb(128.4, 139.2, 150);--bs-secondary-text-emphasis: rgb(166.8, 172.2, 177);--bs-success-text-emphasis: rgb(116.4, 214.8, 195.6);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(8.8, 12.4, 16);--bs-secondary-bg-subtle: rgb(21.6, 23.4, 25);--bs-success-bg-subtle: rgb(4.8, 37.6, 31.2);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(26.4, 37.2, 48);--bs-secondary-border-subtle: rgb(64.8, 70.2, 75);--bs-success-border-subtle: rgb(14.4, 112.8, 93.6);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #7b8a8b;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(128.4, 139.2, 150);--bs-link-hover-color: rgb(153.72, 162.36, 171);--bs-link-color-rgb: 128, 139, 150;--bs-link-hover-color-rgb: 154, 162, 171;--bs-code-color: white;--bs-border-color: #7b8a8b;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(116.4, 214.8, 195.6);--bs-form-valid-border-color: rgb(116.4, 214.8, 195.6);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(33,37,41,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(33,37,41,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none !important}body.quarto-dark .light-content{display:none !important}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #212529;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #909294}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #2c3e50;--bs-table-border-color: rgb(65.1, 81.3, 97.5);--bs-table-striped-bg: rgb(54.55, 71.65, 88.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(65.1, 81.3, 97.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(59.825, 76.475, 93.125);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: #6c757d;--bs-table-border-color: rgb(122.7, 130.8, 138);--bs-table-striped-bg: rgb(115.35, 123.9, 131.5);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(122.7, 130.8, 138);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(119.025, 127.35, 134.75);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #18bc9c;--bs-table-border-color: rgb(47.1, 194.7, 165.9);--bs-table-striped-bg: rgb(35.55, 191.35, 160.95);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(47.1, 194.7, 165.9);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(41.325, 193.025, 163.425);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #ecf0f1;--bs-table-border-color: rgb(212.4, 216, 216.9);--bs-table-striped-bg: rgb(224.2, 228, 228.95);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(212.4, 216, 216.9);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(218.3, 222, 222.925);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #7b8a8b;--bs-table-border-color: rgb(136.2, 149.7, 150.6);--bs-table-striped-bg: rgb(129.6, 143.85, 144.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(136.2, 149.7, 150.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(132.9, 146.775, 147.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(33,37,41,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(33,37,41,.75);opacity:1}.form-control:disabled{background-color:#ecf0f1;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#ecf0f1}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ecf0f1}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2c3e50;border-color:#2c3e50}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2c3e50;border-color:#2c3e50;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28149.5, 158.5, 167.5%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(33,37,41,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(33,37,41,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ecf0f1}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#18bc9c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#18bc9c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#18bc9c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#18bc9c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#18bc9c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#18bc9c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#18bc9c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(37.4, 52.7, 68);--bs-btn-hover-border-color: rgb(35.2, 49.6, 64);--bs-btn-focus-shadow-rgb: 76, 91, 106;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(35.2, 49.6, 64);--bs-btn-active-border-color: rgb(33, 46.5, 60);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2c3e50;--bs-btn-disabled-border-color: #2c3e50}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(20.4, 159.8, 132.6);--bs-btn-hover-border-color: rgb(19.2, 150.4, 124.8);--bs-btn-focus-shadow-rgb: 59, 198, 171;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: #128d75;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #18bc9c;--bs-btn-disabled-border-color: #18bc9c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(200.6, 204, 204.85);--bs-btn-hover-border-color: rgb(188.8, 192, 192.8);--bs-btn-focus-shadow-rgb: 201, 204, 205;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(188.8, 192, 192.8);--bs-btn-active-border-color: rgb(177, 180, 180.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ecf0f1;--bs-btn-disabled-border-color: #ecf0f1}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(142.8, 155.55, 156.4);--bs-btn-hover-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-focus-shadow-rgb: 143, 156, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(149.4, 161.4, 162.2);--bs-btn-active-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #7b8a8b;--bs-btn-disabled-border-color: #7b8a8b}.btn-outline-default{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3e50;--bs-btn-hover-border-color: #2c3e50;--bs-btn-focus-shadow-rgb: 44, 62, 80;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2c3e50;--bs-btn-active-border-color: #2c3e50;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2c3e50;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2c3e50;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #18bc9c;--bs-btn-hover-border-color: #18bc9c;--bs-btn-focus-shadow-rgb: 24, 188, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: #18bc9c;--bs-btn-active-border-color: #18bc9c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #18bc9c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #18bc9c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ecf0f1;--bs-btn-hover-border-color: #ecf0f1;--bs-btn-focus-shadow-rgb: 236, 240, 241;--bs-btn-active-color: #000;--bs-btn-active-bg: #ecf0f1;--bs-btn-active-border-color: #ecf0f1;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ecf0f1;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ecf0f1;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #7b8a8b;--bs-btn-hover-border-color: #7b8a8b;--bs-btn-focus-shadow-rgb: 123, 138, 139;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7b8a8b;--bs-btn-active-border-color: #7b8a8b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #7b8a8b;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #7b8a8b;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #18bc9c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(19.2, 150.4, 124.8);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 59, 198, 171;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #212529;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #7b8a8b;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #2c3e50;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #18bc9c;--bs-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-nav-link-disabled-color: #6c757d;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #ecf0f1;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2c3e50}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2817.6, 24.8, 32%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(149.5, 158.5, 167.5);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(17.6, 24.8, 32);--bs-accordion-active-bg: rgb(212.8, 216.4, 220)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(33, 37, 41, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #18bc9c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(19.2, 150.4, 124.8);--bs-pagination-focus-bg: #ecf0f1;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #ecf0f1;--bs-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #ecf0f1;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2c3e50;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #212529;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(33, 37, 41, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #ecf0f1;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #ecf0f1;--bs-list-group-disabled-color: rgba(33, 37, 41, 0.75);--bs-list-group-disabled-bg: #ecf0f1;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2c3e50;--bs-list-group-active-border-color: #2c3e50;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(33, 37, 41, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #ecf0f1;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #212529;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #212529;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(35, 50, 64, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(35, 50, 64, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(19, 150, 125, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(19, 150, 125, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(240, 243, 244, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(240, 243, 244, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(98, 110, 111, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(98, 110, 111, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}:root{--bslib-page-sidebar-title-bg: #2c3e50;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:rgb(204.36,208.68,213)}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:rgb(77.88,79.2,79.53);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(11.52,90.24,74.88,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(192,1.0482180294%,50.8647058824%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:rgb(77.88,79.2,79.53)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(11.52,90.24,74.88,.8)}div.sidebar-item-container.disabled{color:rgba(77.88,79.2,79.53,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(11.52,90.24,74.88)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#ecf0f1}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid #dee2e6 !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#ecf0f1;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#2c3e50;color:rgb(204.36,208.68,213);border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(19.2,150.4,124.8)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid #dee2e6}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,46%)}.nav-footer a{color:hsl(0,0%,46%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:rgb(204.36,208.68,213);border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:rgb(77.88,79.2,79.53);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#212529;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#212529;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#212529;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#212529;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#212529;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:hsl(0,0%,95%);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(58.4774193548,82.4,106.3225806452)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#212529}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:hsl(210,29.0322580645%,66.3137254902%)}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#212529}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#212529}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(204.36,208.68,213)}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(77.88,79.2,79.53)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:hsla(0,0%,100%,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#212529;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(33,37,41,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:rgba(39,128,227,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#6c757d !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:rgba(63,182,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:rgba(255,117,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#ecf0f1 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#7b8a8b !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(62.0967741935,87.5,112.9032258065);border-bottom:solid 1px rgb(62.0967741935,87.5,112.9032258065)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(58.4774193548,82.4,106.3225806452)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:rgb(204.36,208.68,213)}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#212529}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#212529}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(208.2352941176,6.1371841155%,79.137254902%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#212529}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#212529;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#18bc9c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#18bc9c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#18bc9c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#212529;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#212529}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}div.code-copy-outer-scaffold{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #212529;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #6c757d;--mermaid-node-fg-color: #212529;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2c3e50;--mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--mermaid-node-fg-color: #212529}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>p:has(+section){margin-bottom:2rem}main.content>section:first-of-type>h2:nth-child(1),main.content>section:first-of-type>.h2:nth-child(1){margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(210,10.8108108108%,39.5098039216%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(210,10.8108108108%,39.5098039216%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(210,10.8108108108%,39.5098039216%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(210,10.8108108108%,39.5098039216%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#ecf0f1 1px solid;border-right:#ecf0f1 1px solid;border-bottom:#ecf0f1 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(236,240,241,.65);border:1px solid rgba(236,240,241,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow-y:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(210,10.8108108108%,39.5098039216%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code.sourceCode,li code.sourceCode,td code.sourceCode{background-color:rgba(236,240,241,.65)}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:rgba(236,240,241,.65);padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#18bc9c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#18bc9c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ecf0f1;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #18bc9c;color:#18bc9c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#18bc9c !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400;margin-bottom:-0.4em;margin-top:.5em}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-empty-content>.callout-header{margin-bottom:0em;border-bottom-right-radius:calc(0.25rem + -1px)}.callout>.callout-header.collapsed{border-bottom-right-radius:calc(0.25rem + -1px)}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em;border-top-right-radius:calc(0.25rem + -1px)}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2c3e50}div.callout-note.callout-style-default>.callout-header{background-color:rgb(233.9,235.7,237.5)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#18bc9c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(231.9,248.3,245.1)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(253.8,245.1,231.3)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(254.8,242.1,231.5)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(252.6,237.1,235.5)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:hsl(0,0%,98%)}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(253.53, 253.62, 253.7);--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: rgb(253.53, 253.62, 253.7);--bs-btn-hover-bg: rgb(130.05, 137.7, 144.5);--bs-btn-hover-border-color: rgb(122.7, 130.8, 138);--bs-btn-focus-shadow-rgb: 130, 137, 144;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(137.4, 144.6, 151);--bs-btn-active-border-color: rgb(122.7, 130.8, 138);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgb(204.36,208.68,213)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(236,240,241,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:rgb(55.7432432432,62.5,69.2567567568);border:solid rgb(55.7432432432,62.5,69.2567567568) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#ecf0f1;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(210.6,211.4,212.2);border-bottom:1px solid rgb(210.6,211.4,212.2)}.table>thead{border-top-width:0;border-bottom:1px solid #909294}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}.screen-reader-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:rgb(204.36,208.68,213);background:#2c3e50}.quarto-title-banner a{color:rgb(204.36,208.68,213)}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button{color:hsl(210,9.3264248705%,61.8352941176%)}.quarto-title-banner .code-tools-button:hover{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.bg-primary .navbar-nav .show>.nav-link,.bg-primary .navbar-nav .nav-link.active,.bg-primary .navbar-nav .nav-link:hover,.bg-primary .navbar-nav .nav-link:focus{color:#18bc9c !important}.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover{color:#2c3e50}.pagination a:hover{text-decoration:none}.badge.bg-light{color:#7b8a8b}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:#6c757d}.alert-primary{background-color:#2c3e50}.alert-secondary{background-color:#6c757d}.alert-success{background-color:#18bc9c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:#ecf0f1}.alert-dark{background-color:#7b8a8b}.alert-light,.alert-light a,.alert-light .alert-link{color:#212529}.modal .btn-close,.toast .btn-close,.offcanvas .btn-close{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e")}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ecf0f1;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #7b8a8b;--quarto-scss-export-gray-900: #212529;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #2c3e50;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #18bc9c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-primary: #2c3e50;--quarto-scss-export-secondary: #6c757d;--quarto-scss-export-success: #18bc9c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-light: #ecf0f1;--quarto-scss-export-dark: #7b8a8b;--quarto-scss-export-link-color: #18bc9c;--quarto-scss-export-dropdown-link-color: #7b8a8b;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #2c3e50;--quarto-scss-export-nav-link-disabled-color: #6c757d;--quarto-scss-export-nav-tabs-border-color: #ecf0f1;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #18bc9c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #ecf0f1;--quarto-scss-export-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-hover-bg: #ecf0f1;--quarto-scss-export-list-group-disabled-bg: #ecf0f1;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #5E5E5E;--quarto-scss-export-btn-code-copy-color-active: #4758AB;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-color: #7d12ba;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #18bc9c;--quarto-scss-export-toc-active-border: #18bc9c;--quarto-scss-export-toc-inactive-border: #ecf0f1;--quarto-scss-export-navbar-default: #2c3e50;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #2c3e50;--quarto-scss-export-btn-bg: #6c757d;--quarto-scss-export-btn-fg: rgb(253.53, 253.62, 253.7);--quarto-scss-export-body-contrast-bg: #fff;--quarto-scss-export-body-contrast-color: #212529;--quarto-scss-export-navbar-fg: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--quarto-scss-export-sidebar-bg: #ecf0f1;--quarto-scss-export-sidebar-fg: rgb(77.88, 79.2, 79.53);--quarto-scss-export-title-block-color: #212529;--quarto-scss-export-title-block-contast-color: #fff;--quarto-scss-export-footer-bg: #fff;--quarto-scss-export-footer-fg: rgb(117.3, 117.3, 117.3);--quarto-scss-export-popover-bg: #fff;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #dee2e6;--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: #909294;--quarto-scss-export-table-group-separator-color-lighter: rgb(210.6, 211.4, 212.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-table-border-color: #dee2e6;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(212.8, 216.4, 220);--quarto-scss-export-blue-200: rgb(170.6, 177.8, 185);--quarto-scss-export-blue-300: rgb(128.4, 139.2, 150);--quarto-scss-export-blue-400: rgb(86.2, 100.6, 115);--quarto-scss-export-blue-500: #2c3e50;--quarto-scss-export-blue-600: rgb(35.2, 49.6, 64);--quarto-scss-export-blue-700: rgb(26.4, 37.2, 48);--quarto-scss-export-blue-800: rgb(17.6, 24.8, 32);--quarto-scss-export-blue-900: rgb(8.8, 12.4, 16);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(208.8, 241.6, 235.2);--quarto-scss-export-green-200: rgb(162.6, 228.2, 215.4);--quarto-scss-export-green-300: rgb(116.4, 214.8, 195.6);--quarto-scss-export-green-400: rgb(70.2, 201.4, 175.8);--quarto-scss-export-green-500: #18bc9c;--quarto-scss-export-green-600: rgb(19.2, 150.4, 124.8);--quarto-scss-export-green-700: rgb(14.4, 112.8, 93.6);--quarto-scss-export-green-800: rgb(9.6, 75.2, 62.4);--quarto-scss-export-green-900: rgb(4.8, 37.6, 31.2);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: #6c757d;--quarto-scss-export-primary-text-emphasis: rgb(17.6, 24.8, 32);--quarto-scss-export-secondary-text-emphasis: rgb(43.2, 46.8, 50);--quarto-scss-export-success-text-emphasis: rgb(9.6, 75.2, 62.4);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #7b8a8b;--quarto-scss-export-dark-text-emphasis: #7b8a8b;--quarto-scss-export-primary-bg-subtle: rgb(212.8, 216.4, 220);--quarto-scss-export-secondary-bg-subtle: rgb(225.6, 227.4, 229);--quarto-scss-export-success-bg-subtle: rgb(208.8, 241.6, 235.2);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(170.6, 177.8, 185);--quarto-scss-export-secondary-border-subtle: rgb(196.2, 199.8, 203);--quarto-scss-export-success-border-subtle: rgb(162.6, 228.2, 215.4);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ecf0f1;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-color: #212529;--quarto-scss-export-body-bg: #fff;--quarto-scss-export-body-secondary-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-body-secondary-bg: #ecf0f1;--quarto-scss-export-body-tertiary-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #2c3e50;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ecf0f1;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #212529;--quarto-scss-export-table-bg: #fff;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #212529;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #212529;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #212529;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-btn-color: #212529;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #18bc9c;--quarto-scss-export-btn-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ecf0f1;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-color: #212529;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-input-focus-color: #212529;--quarto-scss-export-input-placeholder-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-plaintext-color: #212529;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-check-input-focus-border: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #2c3e50;--quarto-scss-export-form-check-input-checked-border-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-border-color: #2c3e50;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-color: #212529;--quarto-scss-export-input-group-addon-bg: #f8f9fa;--quarto-scss-export-input-group-addon-border-color: #dee2e6;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-color: #212529;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-color: ;--quarto-scss-export-form-select-disabled-bg: #ecf0f1;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #dee2e6;--quarto-scss-export-form-select-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #2c3e50;--quarto-scss-export-form-range-thumb-active-bg: rgb(191.7, 197.1, 202.5);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-file-button-color: #212529;--quarto-scss-export-form-file-button-bg: #f8f9fa;--quarto-scss-export-form-file-button-hover-bg: #ecf0f1;--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #18bc9c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #18bc9c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #18bc9c;--quarto-scss-export-form-valid-border-color: #18bc9c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #18bc9c;--quarto-scss-export-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--quarto-scss-export-nav-tabs-link-active-color: #000;--quarto-scss-export-nav-tabs-link-active-bg: #fff;--quarto-scss-export-nav-pills-link-active-bg: #2c3e50;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #212529;--quarto-scss-export-dropdown-bg: #fff;--quarto-scss-export-dropdown-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-pagination-focus-bg: #ecf0f1;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-card-bg: #fff;--quarto-scss-export-accordion-color: #212529;--quarto-scss-export-accordion-bg: #fff;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #212529;--quarto-scss-export-accordion-button-bg: #fff;--quarto-scss-export-accordion-button-active-bg: rgb(212.8, 216.4, 220);--quarto-scss-export-accordion-button-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-accordion-button-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-accordion-icon-color: #212529;--quarto-scss-export-accordion-icon-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-tooltip-color: #fff;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-header-bg: #ecf0f1;--quarto-scss-export-popover-body-color: #212529;--quarto-scss-export-popover-arrow-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-toast-header-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-content-bg: #fff;--quarto-scss-export-modal-content-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-header-border-color: #dee2e6;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-modal-footer-border-color: #dee2e6;--quarto-scss-export-progress-bg: #ecf0f1;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #2c3e50;--quarto-scss-export-list-group-color: #212529;--quarto-scss-export-list-group-bg: #fff;--quarto-scss-export-list-group-border-color: #dee2e6;--quarto-scss-export-list-group-active-bg: #2c3e50;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #2c3e50;--quarto-scss-export-list-group-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-hover-color: #000;--quarto-scss-export-list-group-action-active-color: #212529;--quarto-scss-export-list-group-action-active-bg: #ecf0f1;--quarto-scss-export-thumbnail-bg: #fff;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-bg: ;--quarto-scss-export-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-offcanvas-bg-color: #fff;--quarto-scss-export-offcanvas-color: #212529;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #fff;--quarto-scss-export-kbd-bg: #212529;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-pre-color: #000;--quarto-scss-export-bslib-page-sidebar-title-bg: #2c3e50;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(77.88, 79.2, 79.53);--quarto-scss-export-sidebar-hover-color: rgba(11.52, 90.24, 74.88, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(77.88, 79.2, 79.53, 0.75);--quarto-scss-export-valuebox-bg-primary: rgba(39, 128, 227, 0.7);--quarto-scss-export-valuebox-bg-secondary: #6c757d;--quarto-scss-export-valuebox-bg-success: rgba(63, 182, 24, 0.7);--quarto-scss-export-valuebox-bg-info: rgba(153, 84, 187, 0.7);--quarto-scss-export-valuebox-bg-warning: rgba(255, 117, 24, 0.7);--quarto-scss-export-valuebox-bg-danger: rgba(255, 0, 57, 0.7);--quarto-scss-export-valuebox-bg-light: #ecf0f1;--quarto-scss-export-valuebox-bg-dark: #7b8a8b;--quarto-scss-export-mermaid-bg-color: #fff;--quarto-scss-export-mermaid-edge-color: #6c757d;--quarto-scss-export-mermaid-node-fg-color: #212529;--quarto-scss-export-mermaid-fg-color: #212529;--quarto-scss-export-mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--quarto-scss-export-mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--quarto-scss-export-mermaid-label-bg-color: #fff;--quarto-scss-export-mermaid-label-fg-color: #2c3e50;--quarto-scss-export-mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--quarto-scss-export-code-block-border-left-color: #dee2e6;--quarto-scss-export-callout-color-note: #2c3e50;--quarto-scss-export-callout-color-tip: #18bc9c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-ca9f6e1296d592723e1e1e0c7c1a8eb9.min.css b/_site/site_libs/bootstrap/bootstrap-ca9f6e1296d592723e1e1e0c7c1a8eb9.min.css deleted file mode 100644 index 82e5b27..0000000 --- a/_site/site_libs/bootstrap/bootstrap-ca9f6e1296d592723e1e1e0c7c1a8eb9.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2c3e50;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #18bc9c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ecf0f1;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #7b8a8b;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #6c757d;--bs-primary: #2c3e50;--bs-secondary: #6c757d;--bs-success: #18bc9c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: #ecf0f1;--bs-dark: #7b8a8b;--bs-default-rgb: 108, 117, 125;--bs-primary-rgb: 44, 62, 80;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 24, 188, 156;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 236, 240, 241;--bs-dark-rgb: 123, 138, 139;--bs-primary-text-emphasis: rgb(17.6, 24.8, 32);--bs-secondary-text-emphasis: rgb(43.2, 46.8, 50);--bs-success-text-emphasis: rgb(9.6, 75.2, 62.4);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #7b8a8b;--bs-dark-text-emphasis: #7b8a8b;--bs-primary-bg-subtle: rgb(212.8, 216.4, 220);--bs-secondary-bg-subtle: rgb(225.6, 227.4, 229);--bs-success-bg-subtle: rgb(208.8, 241.6, 235.2);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(170.6, 177.8, 185);--bs-secondary-border-subtle: rgb(196.2, 199.8, 203);--bs-success-border-subtle: rgb(162.6, 228.2, 215.4);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ecf0f1;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #ecf0f1;--bs-secondary-bg-rgb: 236, 240, 241;--bs-tertiary-color: rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #18bc9c;--bs-link-color-rgb: 24, 188, 156;--bs-link-decoration: underline;--bs-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-link-hover-color-rgb: 19, 150, 125;--bs-code-color: #7d12ba;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(44, 62, 80, 0.25);--bs-form-valid-color: #18bc9c;--bs-form-valid-border-color: #18bc9c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: rgb(42.5, 47.5, 52.5);--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: rgb(128.4, 139.2, 150);--bs-secondary-text-emphasis: rgb(166.8, 172.2, 177);--bs-success-text-emphasis: rgb(116.4, 214.8, 195.6);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(8.8, 12.4, 16);--bs-secondary-bg-subtle: rgb(21.6, 23.4, 25);--bs-success-bg-subtle: rgb(4.8, 37.6, 31.2);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(26.4, 37.2, 48);--bs-secondary-border-subtle: rgb(64.8, 70.2, 75);--bs-success-border-subtle: rgb(14.4, 112.8, 93.6);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #7b8a8b;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(128.4, 139.2, 150);--bs-link-hover-color: rgb(153.72, 162.36, 171);--bs-link-color-rgb: 128, 139, 150;--bs-link-hover-color-rgb: 154, 162, 171;--bs-code-color: white;--bs-border-color: #7b8a8b;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(116.4, 214.8, 195.6);--bs-form-valid-border-color: rgb(116.4, 214.8, 195.6);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(33,37,41,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(33,37,41,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none !important}body.quarto-dark .light-content{display:none !important}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #212529;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #909294}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #2c3e50;--bs-table-border-color: rgb(65.1, 81.3, 97.5);--bs-table-striped-bg: rgb(54.55, 71.65, 88.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(65.1, 81.3, 97.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(59.825, 76.475, 93.125);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: #6c757d;--bs-table-border-color: rgb(122.7, 130.8, 138);--bs-table-striped-bg: rgb(115.35, 123.9, 131.5);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(122.7, 130.8, 138);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(119.025, 127.35, 134.75);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #18bc9c;--bs-table-border-color: rgb(47.1, 194.7, 165.9);--bs-table-striped-bg: rgb(35.55, 191.35, 160.95);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(47.1, 194.7, 165.9);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(41.325, 193.025, 163.425);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #ecf0f1;--bs-table-border-color: rgb(212.4, 216, 216.9);--bs-table-striped-bg: rgb(224.2, 228, 228.95);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(212.4, 216, 216.9);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(218.3, 222, 222.925);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #7b8a8b;--bs-table-border-color: rgb(136.2, 149.7, 150.6);--bs-table-striped-bg: rgb(129.6, 143.85, 144.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(136.2, 149.7, 150.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(132.9, 146.775, 147.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(33,37,41,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(33,37,41,.75);opacity:1}.form-control:disabled{background-color:#ecf0f1;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#ecf0f1}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ecf0f1}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2c3e50;border-color:#2c3e50}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2c3e50;border-color:#2c3e50;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28149.5, 158.5, 167.5%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(33,37,41,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(33,37,41,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ecf0f1}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#18bc9c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#18bc9c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#18bc9c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#18bc9c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#18bc9c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#18bc9c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#18bc9c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(37.4, 52.7, 68);--bs-btn-hover-border-color: rgb(35.2, 49.6, 64);--bs-btn-focus-shadow-rgb: 76, 91, 106;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(35.2, 49.6, 64);--bs-btn-active-border-color: rgb(33, 46.5, 60);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2c3e50;--bs-btn-disabled-border-color: #2c3e50}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(20.4, 159.8, 132.6);--bs-btn-hover-border-color: rgb(19.2, 150.4, 124.8);--bs-btn-focus-shadow-rgb: 59, 198, 171;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: #128d75;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #18bc9c;--bs-btn-disabled-border-color: #18bc9c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(200.6, 204, 204.85);--bs-btn-hover-border-color: rgb(188.8, 192, 192.8);--bs-btn-focus-shadow-rgb: 201, 204, 205;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(188.8, 192, 192.8);--bs-btn-active-border-color: rgb(177, 180, 180.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ecf0f1;--bs-btn-disabled-border-color: #ecf0f1}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(142.8, 155.55, 156.4);--bs-btn-hover-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-focus-shadow-rgb: 143, 156, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(149.4, 161.4, 162.2);--bs-btn-active-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #7b8a8b;--bs-btn-disabled-border-color: #7b8a8b}.btn-outline-default{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3e50;--bs-btn-hover-border-color: #2c3e50;--bs-btn-focus-shadow-rgb: 44, 62, 80;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2c3e50;--bs-btn-active-border-color: #2c3e50;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2c3e50;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2c3e50;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #18bc9c;--bs-btn-hover-border-color: #18bc9c;--bs-btn-focus-shadow-rgb: 24, 188, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: #18bc9c;--bs-btn-active-border-color: #18bc9c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #18bc9c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #18bc9c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ecf0f1;--bs-btn-hover-border-color: #ecf0f1;--bs-btn-focus-shadow-rgb: 236, 240, 241;--bs-btn-active-color: #000;--bs-btn-active-bg: #ecf0f1;--bs-btn-active-border-color: #ecf0f1;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ecf0f1;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ecf0f1;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #7b8a8b;--bs-btn-hover-border-color: #7b8a8b;--bs-btn-focus-shadow-rgb: 123, 138, 139;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7b8a8b;--bs-btn-active-border-color: #7b8a8b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #7b8a8b;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #7b8a8b;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #18bc9c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(19.2, 150.4, 124.8);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 59, 198, 171;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #212529;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #7b8a8b;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #2c3e50;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #18bc9c;--bs-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-nav-link-disabled-color: #6c757d;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #ecf0f1;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2c3e50}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2817.6, 24.8, 32%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(149.5, 158.5, 167.5);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(17.6, 24.8, 32);--bs-accordion-active-bg: rgb(212.8, 216.4, 220)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(33, 37, 41, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #18bc9c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(19.2, 150.4, 124.8);--bs-pagination-focus-bg: #ecf0f1;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #ecf0f1;--bs-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #ecf0f1;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2c3e50;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #212529;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(33, 37, 41, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #ecf0f1;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #ecf0f1;--bs-list-group-disabled-color: rgba(33, 37, 41, 0.75);--bs-list-group-disabled-bg: #ecf0f1;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2c3e50;--bs-list-group-active-border-color: #2c3e50;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(33, 37, 41, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #ecf0f1;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #212529;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #212529;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(35, 50, 64, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(35, 50, 64, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(19, 150, 125, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(19, 150, 125, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(240, 243, 244, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(240, 243, 244, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(98, 110, 111, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(98, 110, 111, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}:root{--bslib-page-sidebar-title-bg: #2c3e50;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:rgb(204.36,208.68,213)}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:rgb(77.88,79.2,79.53);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(11.52,90.24,74.88,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(192,1.0482180294%,50.8647058824%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:rgb(77.88,79.2,79.53)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(11.52,90.24,74.88,.8)}div.sidebar-item-container.disabled{color:rgba(77.88,79.2,79.53,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(11.52,90.24,74.88)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#ecf0f1}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid #dee2e6 !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#ecf0f1;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#2c3e50;color:rgb(204.36,208.68,213);border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(19.2,150.4,124.8)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid #dee2e6}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,46%)}.nav-footer a{color:hsl(0,0%,46%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:rgb(204.36,208.68,213);border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:rgb(77.88,79.2,79.53);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#212529;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#212529;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#212529;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#212529;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#212529;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:hsl(0,0%,95%);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(58.4774193548,82.4,106.3225806452)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#212529}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:hsl(210,29.0322580645%,66.3137254902%)}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#212529}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#212529}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(204.36,208.68,213)}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(77.88,79.2,79.53)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:hsla(0,0%,100%,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#212529;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(33,37,41,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:rgba(39,128,227,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#6c757d !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:rgba(63,182,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:rgba(255,117,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#ecf0f1 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#7b8a8b !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(62.0967741935,87.5,112.9032258065);border-bottom:solid 1px rgb(62.0967741935,87.5,112.9032258065)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(58.4774193548,82.4,106.3225806452)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:rgb(204.36,208.68,213)}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#212529}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#212529}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(208.2352941176,6.1371841155%,79.137254902%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#212529}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#212529;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#18bc9c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#18bc9c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#18bc9c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#212529;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#212529}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}div.code-copy-outer-scaffold{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #212529;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #6c757d;--mermaid-node-fg-color: #212529;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2c3e50;--mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--mermaid-node-fg-color: #212529}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>p:has(+section){margin-bottom:2rem}main.content>section:first-of-type>h2:nth-child(1),main.content>section:first-of-type>.h2:nth-child(1){margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(210,10.8108108108%,39.5098039216%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(210,10.8108108108%,39.5098039216%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(210,10.8108108108%,39.5098039216%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(210,10.8108108108%,39.5098039216%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#ecf0f1 1px solid;border-right:#ecf0f1 1px solid;border-bottom:#ecf0f1 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(236,240,241,.65);border:1px solid rgba(236,240,241,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow-y:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(210,10.8108108108%,39.5098039216%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code.sourceCode,li code.sourceCode,td code.sourceCode{background-color:rgba(236,240,241,.65)}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:rgba(236,240,241,.65);padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#18bc9c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#18bc9c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ecf0f1;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #18bc9c;color:#18bc9c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#18bc9c !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400;margin-bottom:-0.4em;margin-top:.5em}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-empty-content>.callout-header{margin-bottom:0em;border-bottom-right-radius:calc(0.25rem + -1px)}.callout>.callout-header.collapsed{border-bottom-right-radius:calc(0.25rem + -1px)}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em;border-top-right-radius:calc(0.25rem + -1px)}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2c3e50}div.callout-note.callout-style-default>.callout-header{background-color:rgb(233.9,235.7,237.5)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#18bc9c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(231.9,248.3,245.1)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(253.8,245.1,231.3)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(254.8,242.1,231.5)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(252.6,237.1,235.5)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:hsl(0,0%,98%)}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(253.53, 253.62, 253.7);--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: rgb(253.53, 253.62, 253.7);--bs-btn-hover-bg: rgb(130.05, 137.7, 144.5);--bs-btn-hover-border-color: rgb(122.7, 130.8, 138);--bs-btn-focus-shadow-rgb: 130, 137, 144;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(137.4, 144.6, 151);--bs-btn-active-border-color: rgb(122.7, 130.8, 138);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgb(204.36,208.68,213)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(236,240,241,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:rgb(55.7432432432,62.5,69.2567567568);border:solid rgb(55.7432432432,62.5,69.2567567568) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#ecf0f1;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(210.6,211.4,212.2);border-bottom:1px solid rgb(210.6,211.4,212.2)}.table>thead{border-top-width:0;border-bottom:1px solid #909294}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}.screen-reader-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:rgb(204.36,208.68,213);background:#2c3e50}.quarto-title-banner a{color:rgb(204.36,208.68,213)}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button{color:hsl(210,9.3264248705%,61.8352941176%)}.quarto-title-banner .code-tools-button:hover{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.bg-primary .navbar-nav .show>.nav-link,.bg-primary .navbar-nav .nav-link.active,.bg-primary .navbar-nav .nav-link:hover,.bg-primary .navbar-nav .nav-link:focus{color:#18bc9c !important}.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover{color:#2c3e50}.pagination a:hover{text-decoration:none}.badge.bg-light{color:#7b8a8b}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:#6c757d}.alert-primary{background-color:#2c3e50}.alert-secondary{background-color:#6c757d}.alert-success{background-color:#18bc9c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:#ecf0f1}.alert-dark{background-color:#7b8a8b}.alert-light,.alert-light a,.alert-light .alert-link{color:#212529}.modal .btn-close,.toast .btn-close,.offcanvas .btn-close{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e")}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ecf0f1;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #7b8a8b;--quarto-scss-export-gray-900: #212529;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #2c3e50;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #18bc9c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-primary: #2c3e50;--quarto-scss-export-secondary: #6c757d;--quarto-scss-export-success: #18bc9c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-light: #ecf0f1;--quarto-scss-export-dark: #7b8a8b;--quarto-scss-export-link-color: #18bc9c;--quarto-scss-export-dropdown-link-color: #7b8a8b;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #2c3e50;--quarto-scss-export-nav-link-disabled-color: #6c757d;--quarto-scss-export-nav-tabs-border-color: #ecf0f1;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #18bc9c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #ecf0f1;--quarto-scss-export-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-hover-bg: #ecf0f1;--quarto-scss-export-list-group-disabled-bg: #ecf0f1;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #5E5E5E;--quarto-scss-export-btn-code-copy-color-active: #4758AB;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-color: #7d12ba;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #18bc9c;--quarto-scss-export-toc-active-border: #18bc9c;--quarto-scss-export-toc-inactive-border: #ecf0f1;--quarto-scss-export-navbar-default: #2c3e50;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #2c3e50;--quarto-scss-export-btn-bg: #6c757d;--quarto-scss-export-btn-fg: rgb(253.53, 253.62, 253.7);--quarto-scss-export-body-contrast-bg: #fff;--quarto-scss-export-body-contrast-color: #212529;--quarto-scss-export-navbar-fg: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--quarto-scss-export-sidebar-bg: #ecf0f1;--quarto-scss-export-sidebar-fg: rgb(77.88, 79.2, 79.53);--quarto-scss-export-title-block-color: #212529;--quarto-scss-export-title-block-contast-color: #fff;--quarto-scss-export-footer-bg: #fff;--quarto-scss-export-footer-fg: rgb(117.3, 117.3, 117.3);--quarto-scss-export-popover-bg: #fff;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #dee2e6;--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: #909294;--quarto-scss-export-table-group-separator-color-lighter: rgb(210.6, 211.4, 212.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-table-border-color: #dee2e6;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(212.8, 216.4, 220);--quarto-scss-export-blue-200: rgb(170.6, 177.8, 185);--quarto-scss-export-blue-300: rgb(128.4, 139.2, 150);--quarto-scss-export-blue-400: rgb(86.2, 100.6, 115);--quarto-scss-export-blue-500: #2c3e50;--quarto-scss-export-blue-600: rgb(35.2, 49.6, 64);--quarto-scss-export-blue-700: rgb(26.4, 37.2, 48);--quarto-scss-export-blue-800: rgb(17.6, 24.8, 32);--quarto-scss-export-blue-900: rgb(8.8, 12.4, 16);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(208.8, 241.6, 235.2);--quarto-scss-export-green-200: rgb(162.6, 228.2, 215.4);--quarto-scss-export-green-300: rgb(116.4, 214.8, 195.6);--quarto-scss-export-green-400: rgb(70.2, 201.4, 175.8);--quarto-scss-export-green-500: #18bc9c;--quarto-scss-export-green-600: rgb(19.2, 150.4, 124.8);--quarto-scss-export-green-700: rgb(14.4, 112.8, 93.6);--quarto-scss-export-green-800: rgb(9.6, 75.2, 62.4);--quarto-scss-export-green-900: rgb(4.8, 37.6, 31.2);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: #6c757d;--quarto-scss-export-primary-text-emphasis: rgb(17.6, 24.8, 32);--quarto-scss-export-secondary-text-emphasis: rgb(43.2, 46.8, 50);--quarto-scss-export-success-text-emphasis: rgb(9.6, 75.2, 62.4);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #7b8a8b;--quarto-scss-export-dark-text-emphasis: #7b8a8b;--quarto-scss-export-primary-bg-subtle: rgb(212.8, 216.4, 220);--quarto-scss-export-secondary-bg-subtle: rgb(225.6, 227.4, 229);--quarto-scss-export-success-bg-subtle: rgb(208.8, 241.6, 235.2);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(170.6, 177.8, 185);--quarto-scss-export-secondary-border-subtle: rgb(196.2, 199.8, 203);--quarto-scss-export-success-border-subtle: rgb(162.6, 228.2, 215.4);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ecf0f1;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-color: #212529;--quarto-scss-export-body-bg: #fff;--quarto-scss-export-body-secondary-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-body-secondary-bg: #ecf0f1;--quarto-scss-export-body-tertiary-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #2c3e50;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ecf0f1;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #212529;--quarto-scss-export-table-bg: #fff;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #212529;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #212529;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #212529;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-btn-color: #212529;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #18bc9c;--quarto-scss-export-btn-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ecf0f1;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-color: #212529;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-input-focus-color: #212529;--quarto-scss-export-input-placeholder-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-plaintext-color: #212529;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-check-input-focus-border: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #2c3e50;--quarto-scss-export-form-check-input-checked-border-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-border-color: #2c3e50;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-color: #212529;--quarto-scss-export-input-group-addon-bg: #f8f9fa;--quarto-scss-export-input-group-addon-border-color: #dee2e6;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-color: #212529;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-color: ;--quarto-scss-export-form-select-disabled-bg: #ecf0f1;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #dee2e6;--quarto-scss-export-form-select-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #2c3e50;--quarto-scss-export-form-range-thumb-active-bg: rgb(191.7, 197.1, 202.5);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-file-button-color: #212529;--quarto-scss-export-form-file-button-bg: #f8f9fa;--quarto-scss-export-form-file-button-hover-bg: #ecf0f1;--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #18bc9c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #18bc9c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #18bc9c;--quarto-scss-export-form-valid-border-color: #18bc9c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #18bc9c;--quarto-scss-export-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--quarto-scss-export-nav-tabs-link-active-color: #000;--quarto-scss-export-nav-tabs-link-active-bg: #fff;--quarto-scss-export-nav-pills-link-active-bg: #2c3e50;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #212529;--quarto-scss-export-dropdown-bg: #fff;--quarto-scss-export-dropdown-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-pagination-focus-bg: #ecf0f1;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-card-bg: #fff;--quarto-scss-export-accordion-color: #212529;--quarto-scss-export-accordion-bg: #fff;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #212529;--quarto-scss-export-accordion-button-bg: #fff;--quarto-scss-export-accordion-button-active-bg: rgb(212.8, 216.4, 220);--quarto-scss-export-accordion-button-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-accordion-button-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-accordion-icon-color: #212529;--quarto-scss-export-accordion-icon-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-tooltip-color: #fff;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-header-bg: #ecf0f1;--quarto-scss-export-popover-body-color: #212529;--quarto-scss-export-popover-arrow-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-toast-header-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-content-bg: #fff;--quarto-scss-export-modal-content-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-header-border-color: #dee2e6;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-modal-footer-border-color: #dee2e6;--quarto-scss-export-progress-bg: #ecf0f1;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #2c3e50;--quarto-scss-export-list-group-color: #212529;--quarto-scss-export-list-group-bg: #fff;--quarto-scss-export-list-group-border-color: #dee2e6;--quarto-scss-export-list-group-active-bg: #2c3e50;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #2c3e50;--quarto-scss-export-list-group-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-hover-color: #000;--quarto-scss-export-list-group-action-active-color: #212529;--quarto-scss-export-list-group-action-active-bg: #ecf0f1;--quarto-scss-export-thumbnail-bg: #fff;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-bg: ;--quarto-scss-export-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-offcanvas-bg-color: #fff;--quarto-scss-export-offcanvas-color: #212529;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #fff;--quarto-scss-export-kbd-bg: #212529;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-pre-color: #000;--quarto-scss-export-bslib-page-sidebar-title-bg: #2c3e50;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(77.88, 79.2, 79.53);--quarto-scss-export-sidebar-hover-color: rgba(11.52, 90.24, 74.88, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(77.88, 79.2, 79.53, 0.75);--quarto-scss-export-valuebox-bg-primary: rgba(39, 128, 227, 0.7);--quarto-scss-export-valuebox-bg-secondary: #6c757d;--quarto-scss-export-valuebox-bg-success: rgba(63, 182, 24, 0.7);--quarto-scss-export-valuebox-bg-info: rgba(153, 84, 187, 0.7);--quarto-scss-export-valuebox-bg-warning: rgba(255, 117, 24, 0.7);--quarto-scss-export-valuebox-bg-danger: rgba(255, 0, 57, 0.7);--quarto-scss-export-valuebox-bg-light: #ecf0f1;--quarto-scss-export-valuebox-bg-dark: #7b8a8b;--quarto-scss-export-mermaid-bg-color: #fff;--quarto-scss-export-mermaid-edge-color: #6c757d;--quarto-scss-export-mermaid-node-fg-color: #212529;--quarto-scss-export-mermaid-fg-color: #212529;--quarto-scss-export-mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--quarto-scss-export-mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--quarto-scss-export-mermaid-label-bg-color: #fff;--quarto-scss-export-mermaid-label-fg-color: #2c3e50;--quarto-scss-export-mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--quarto-scss-export-code-block-border-left-color: #dee2e6;--quarto-scss-export-callout-color-note: #2c3e50;--quarto-scss-export-callout-color-tip: #18bc9c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-d99c625becd42d66f61f5b27299a15de.min.css b/_site/site_libs/bootstrap/bootstrap-d99c625becd42d66f61f5b27299a15de.min.css deleted file mode 100644 index 0a5eb42..0000000 --- a/_site/site_libs/bootstrap/bootstrap-d99c625becd42d66f61f5b27299a15de.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2c3e50;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #18bc9c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ecf0f1;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #7b8a8b;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #6c757d;--bs-primary: #2c3e50;--bs-secondary: #6c757d;--bs-success: #18bc9c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: #ecf0f1;--bs-dark: #7b8a8b;--bs-default-rgb: 108, 117, 125;--bs-primary-rgb: 44, 62, 80;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 24, 188, 156;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 236, 240, 241;--bs-dark-rgb: 123, 138, 139;--bs-primary-text-emphasis: rgb(17.6, 24.8, 32);--bs-secondary-text-emphasis: rgb(43.2, 46.8, 50);--bs-success-text-emphasis: rgb(9.6, 75.2, 62.4);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #7b8a8b;--bs-dark-text-emphasis: #7b8a8b;--bs-primary-bg-subtle: rgb(212.8, 216.4, 220);--bs-secondary-bg-subtle: rgb(225.6, 227.4, 229);--bs-success-bg-subtle: rgb(208.8, 241.6, 235.2);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(170.6, 177.8, 185);--bs-secondary-border-subtle: rgb(196.2, 199.8, 203);--bs-success-border-subtle: rgb(162.6, 228.2, 215.4);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ecf0f1;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #ecf0f1;--bs-secondary-bg-rgb: 236, 240, 241;--bs-tertiary-color: rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #18bc9c;--bs-link-color-rgb: 24, 188, 156;--bs-link-decoration: underline;--bs-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-link-hover-color-rgb: 19, 150, 125;--bs-code-color: #7d12ba;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(44, 62, 80, 0.25);--bs-form-valid-color: #18bc9c;--bs-form-valid-border-color: #18bc9c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: rgb(42.5, 47.5, 52.5);--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: rgb(128.4, 139.2, 150);--bs-secondary-text-emphasis: rgb(166.8, 172.2, 177);--bs-success-text-emphasis: rgb(116.4, 214.8, 195.6);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(8.8, 12.4, 16);--bs-secondary-bg-subtle: rgb(21.6, 23.4, 25);--bs-success-bg-subtle: rgb(4.8, 37.6, 31.2);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(26.4, 37.2, 48);--bs-secondary-border-subtle: rgb(64.8, 70.2, 75);--bs-success-border-subtle: rgb(14.4, 112.8, 93.6);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #7b8a8b;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(128.4, 139.2, 150);--bs-link-hover-color: rgb(153.72, 162.36, 171);--bs-link-color-rgb: 128, 139, 150;--bs-link-hover-color-rgb: 154, 162, 171;--bs-code-color: white;--bs-border-color: #7b8a8b;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(116.4, 214.8, 195.6);--bs-form-valid-border-color: rgb(116.4, 214.8, 195.6);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ecf0f1}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(33,37,41,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(33,37,41,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none}body.quarto-dark .light-content{display:none}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #212529;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #909294}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #2c3e50;--bs-table-border-color: rgb(65.1, 81.3, 97.5);--bs-table-striped-bg: rgb(54.55, 71.65, 88.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(65.1, 81.3, 97.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(59.825, 76.475, 93.125);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: #6c757d;--bs-table-border-color: rgb(122.7, 130.8, 138);--bs-table-striped-bg: rgb(115.35, 123.9, 131.5);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(122.7, 130.8, 138);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(119.025, 127.35, 134.75);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #18bc9c;--bs-table-border-color: rgb(47.1, 194.7, 165.9);--bs-table-striped-bg: rgb(35.55, 191.35, 160.95);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(47.1, 194.7, 165.9);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(41.325, 193.025, 163.425);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #ecf0f1;--bs-table-border-color: rgb(212.4, 216, 216.9);--bs-table-striped-bg: rgb(224.2, 228, 228.95);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(212.4, 216, 216.9);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(218.3, 222, 222.925);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #7b8a8b;--bs-table-border-color: rgb(136.2, 149.7, 150.6);--bs-table-striped-bg: rgb(129.6, 143.85, 144.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(136.2, 149.7, 150.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(132.9, 146.775, 147.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(33,37,41,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(33,37,41,.75);opacity:1}.form-control:disabled{background-color:#ecf0f1;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#212529;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#ecf0f1}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#ecf0f1}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(149.5,158.5,167.5);outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2c3e50;border-color:#2c3e50}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2c3e50;border-color:#2c3e50;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28149.5, 158.5, 167.5%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(44,62,80,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2c3e50;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(191.7,197.1,202.5)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(33,37,41,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(33,37,41,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ecf0f1}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#18bc9c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#18bc9c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#18bc9c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#18bc9c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2318bc9c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#18bc9c;box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#18bc9c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#18bc9c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(24,188,156,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#18bc9c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(37.4, 52.7, 68);--bs-btn-hover-border-color: rgb(35.2, 49.6, 64);--bs-btn-focus-shadow-rgb: 76, 91, 106;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(35.2, 49.6, 64);--bs-btn-active-border-color: rgb(33, 46.5, 60);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2c3e50;--bs-btn-disabled-border-color: #2c3e50}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(20.4, 159.8, 132.6);--bs-btn-hover-border-color: rgb(19.2, 150.4, 124.8);--bs-btn-focus-shadow-rgb: 59, 198, 171;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: #128d75;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #18bc9c;--bs-btn-disabled-border-color: #18bc9c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(200.6, 204, 204.85);--bs-btn-hover-border-color: rgb(188.8, 192, 192.8);--bs-btn-focus-shadow-rgb: 201, 204, 205;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(188.8, 192, 192.8);--bs-btn-active-border-color: rgb(177, 180, 180.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ecf0f1;--bs-btn-disabled-border-color: #ecf0f1}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(142.8, 155.55, 156.4);--bs-btn-hover-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-focus-shadow-rgb: 143, 156, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(149.4, 161.4, 162.2);--bs-btn-active-border-color: rgb(136.2, 149.7, 150.6);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #7b8a8b;--bs-btn-disabled-border-color: #7b8a8b}.btn-outline-default{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2c3e50;--bs-btn-border-color: #2c3e50;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3e50;--bs-btn-hover-border-color: #2c3e50;--bs-btn-focus-shadow-rgb: 44, 62, 80;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2c3e50;--bs-btn-active-border-color: #2c3e50;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2c3e50;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2c3e50;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #18bc9c;--bs-btn-border-color: #18bc9c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #18bc9c;--bs-btn-hover-border-color: #18bc9c;--bs-btn-focus-shadow-rgb: 24, 188, 156;--bs-btn-active-color: #fff;--bs-btn-active-bg: #18bc9c;--bs-btn-active-border-color: #18bc9c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #18bc9c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #18bc9c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #ecf0f1;--bs-btn-border-color: #ecf0f1;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ecf0f1;--bs-btn-hover-border-color: #ecf0f1;--bs-btn-focus-shadow-rgb: 236, 240, 241;--bs-btn-active-color: #000;--bs-btn-active-bg: #ecf0f1;--bs-btn-active-border-color: #ecf0f1;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ecf0f1;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ecf0f1;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #7b8a8b;--bs-btn-border-color: #7b8a8b;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #7b8a8b;--bs-btn-hover-border-color: #7b8a8b;--bs-btn-focus-shadow-rgb: 123, 138, 139;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7b8a8b;--bs-btn-active-border-color: #7b8a8b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #7b8a8b;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #7b8a8b;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #18bc9c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(19.2, 150.4, 124.8);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(19.2, 150.4, 124.8);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 59, 198, 171;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #212529;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #7b8a8b;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #2c3e50;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2c3e50;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #18bc9c;--bs-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--bs-nav-link-disabled-color: #6c757d;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(44,62,80,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #ecf0f1;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2c3e50}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgb(204.36, 208.68, 213);--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: rgb(204.36, 208.68, 213);--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgb%28204.36, 208.68, 213%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2817.6, 24.8, 32%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(149.5, 158.5, 167.5);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(17.6, 24.8, 32);--bs-accordion-active-bg: rgb(212.8, 216.4, 220)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28128.4, 139.2, 150%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(33, 37, 41, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #18bc9c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(19.2, 150.4, 124.8);--bs-pagination-focus-bg: #ecf0f1;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #ecf0f1;--bs-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #ecf0f1;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2c3e50;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #212529;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(33, 37, 41, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #ecf0f1;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #ecf0f1;--bs-list-group-disabled-color: rgba(33, 37, 41, 0.75);--bs-list-group-disabled-bg: #ecf0f1;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2c3e50;--bs-list-group-active-border-color: #2c3e50;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(44, 62, 80, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(33, 37, 41, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #ecf0f1;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #212529;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #212529;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(35, 50, 64, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(35, 50, 64, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(19, 150, 125, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(19, 150, 125, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(240, 243, 244, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(240, 243, 244, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(98, 110, 111, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(98, 110, 111, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2c3e50;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #18bc9c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #6c757d}.bg-default{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2c3e50}.bg-primary{--bslib-color-bg: #2c3e50;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #18bc9c}.bg-success{--bslib-color-bg: #18bc9c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #ecf0f1}.bg-light{--bslib-color-bg: #ecf0f1;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #7b8a8b}.bg-dark{--bslib-color-bg: #7b8a8b;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(67.2, 43.6, 144.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(67.2,43.6,144.8);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 63.6, 125.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(70.8,63.6,125.2);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(119.2, 62, 104);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(119.2,62,104);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(118.8, 67.6, 72);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(118.8,67.6,72);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(127.6, 87.6, 56);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(127.6,87.6,56);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 99.6, 55.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(123.6,99.6,55.2);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36, 112.4, 110.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(36,112.4,110.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(39.2, 117.6, 108.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(39.2,117.6,108.4);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(47.2, 98, 135.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #2c3e50 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(47.2,98,135.6);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(78.8, 34.4, 177.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(78.8,34.4,177.2);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(70.8, 84.8, 207.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(70.8,84.8,207.6);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(84.2, 64.4, 147.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(84.2,64.4,147.8);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(76.2, 114.8, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(76.2,114.8,178.2);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.8, 62, 116);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.8,62,116);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.8, 112.4, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.8,112.4,146.4);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(156.2, 70.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(156.2,70.4,68);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(148.2, 120.8, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(148.2,120.8,98.4);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(169.4, 100.4, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(169.4,100.4,44);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.4, 150.8, 74.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(161.4,150.8,74.4);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.4, 118.4, 42.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(163.4,118.4,42.8);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(155.4, 168.8, 73.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(155.4,168.8,73.2);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(32, 137.6, 125.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(32,137.6,125.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(55.2, 119.2, 190.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.2,119.2,190.4);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(58.8, 139.2, 170.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(58.8,139.2,170.8);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.2, 137.6, 149.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(107.2,137.6,149.6);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(106.8, 143.2, 117.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(106.8,143.2,117.6);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(115.6, 163.2, 101.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(115.6,163.2,101.6);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 175.2, 100.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(111.6,175.2,100.8);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(27.2, 193.2, 154);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.2,193.2,154);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(35.2, 173.6, 181.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #18bc9c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(35.2,173.6,181.2);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(36.8, 145.4, 122.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(36.8,145.4,122.6);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(28.8, 195.8, 153);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(28.8,195.8,153);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(48.8, 116, 163.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #2c3e50 var(--bg-gradient-end, 180%)) rgb(48.8,116,163.4);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 166.4, 193.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #18bc9c var(--bg-gradient-end, 180%)) rgb(40.8,166.4,193.8);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}:root{--bslib-page-sidebar-title-bg: #2c3e50;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:rgb(204.36,208.68,213)}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:rgb(77.88,79.2,79.53);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:rgb(77.88,79.2,79.53)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(11.52,90.24,74.88,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(192,1.0482180294%,50.8647058824%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:rgb(77.88,79.2,79.53)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(11.52,90.24,74.88,.8)}div.sidebar-item-container.disabled{color:rgba(77.88,79.2,79.53,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(11.52,90.24,74.88)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#ecf0f1}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid #dee2e6 !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#ecf0f1;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#2c3e50;color:rgb(204.36,208.68,213);border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(19.2,150.4,124.8)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid #dee2e6}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,46%)}.nav-footer a{color:hsl(0,0%,46%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:rgb(204.36,208.68,213);border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:rgb(77.88,79.2,79.53);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:rgb(204.36,208.68,213);opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#212529;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#212529;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#212529;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#212529;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#212529;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#212529;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:hsl(0,0%,95%);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2c3e50}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(58.4774193548,82.4,106.3225806452)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#212529}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:hsl(210,29.0322580645%,66.3137254902%)}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#212529}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#212529}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(204.36,208.68,213)}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:rgb(77.88,79.2,79.53)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:hsla(0,0%,100%,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#212529;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(44,62,80,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(33,37,41,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:rgba(39,128,227,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#6c757d !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:rgba(63,182,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:rgba(255,117,24,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#ecf0f1 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#7b8a8b !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(62.0967741935,87.5,112.9032258065);border-bottom:solid 1px rgb(62.0967741935,87.5,112.9032258065)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(58.4774193548,82.4,106.3225806452)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:rgb(204.36,208.68,213)}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#212529}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#212529}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(208.2352941176,6.1371841155%,79.137254902%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#212529}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#212529;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#18bc9c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#18bc9c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#18bc9c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:rgb(78.4864864865,88,97.5135135135);text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#18bc9c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#212529;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#212529}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #fff;--quarto-body-color: #212529;--quarto-text-muted: #6c757d;--quarto-border-color: #dee2e6;--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #fff;--mermaid-edge-color: #6c757d;--mermaid-node-fg-color: #212529;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #fff;--mermaid-label-fg-color: #2c3e50;--mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--mermaid-node-fg-color: #212529}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>section:first-of-type>h2:first-child,main.content>section:first-of-type>.h2:first-child{margin-top:0}h2,.h2{border-bottom:1px solid #dee2e6;padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(210,10.8108108108%,39.5098039216%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(210,10.8108108108%,39.5098039216%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(210,10.8108108108%,39.5098039216%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(210,10.8108108108%,39.5098039216%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:#ecf0f1 1px solid;border-right:#ecf0f1 1px solid;border-bottom:#ecf0f1 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(236,240,241,.65);border:1px solid rgba(236,240,241,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(210,10.8108108108%,39.5098039216%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f8f9fa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#18bc9c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#18bc9c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ecf0f1;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #18bc9c;color:#18bc9c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#18bc9c !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:#dee2e6}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout.callout-style-default{border-left:5px solid;border-right:1px solid #dee2e6;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#2c3e50}div.callout-note.callout-style-default>.callout-header{background-color:rgb(233.9,235.7,237.5)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#18bc9c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(231.9,248.3,245.1)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(253.8,245.1,231.3)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(254.8,242.1,231.5)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(252.6,237.1,235.5)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:hsl(0,0%,98%)}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(253.53, 253.62, 253.7);--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: rgb(253.53, 253.62, 253.7);--bs-btn-hover-bg: rgb(130.05, 137.7, 144.5);--bs-btn-hover-border-color: rgb(122.7, 130.8, 138);--bs-btn-focus-shadow-rgb: 130, 137, 144;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(137.4, 144.6, 151);--bs-btn-active-border-color: rgb(122.7, 130.8, 138);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#2c3e50;color:rgb(204.36,208.68,213)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgb(204.36,208.68,213)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(236,240,241,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:rgb(55.7432432432,62.5,69.2567567568);border:solid rgb(55.7432432432,62.5,69.2567567568) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#ecf0f1;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#ecf0f1;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(210.6,211.4,212.2);border-bottom:1px solid rgb(210.6,211.4,212.2)}.table>thead{border-top-width:0;border-bottom:1px solid #909294}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:rgb(204.36,208.68,213);background:#2c3e50}.quarto-title-banner a{color:rgb(204.36,208.68,213)}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button{color:hsl(210,9.3264248705%,61.8352941176%)}.quarto-title-banner .code-tools-button:hover{color:rgb(204.36,208.68,213)}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.bg-primary .navbar-nav .show>.nav-link,.bg-primary .navbar-nav .nav-link.active,.bg-primary .navbar-nav .nav-link:hover,.bg-primary .navbar-nav .nav-link:focus{color:#18bc9c !important}.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover{color:#2c3e50}.pagination a:hover{text-decoration:none}.badge.bg-light{color:#7b8a8b}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:#6c757d}.alert-primary{background-color:#2c3e50}.alert-secondary{background-color:#6c757d}.alert-success{background-color:#18bc9c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:#ecf0f1}.alert-dark{background-color:#7b8a8b}.alert-light,.alert-light a,.alert-light .alert-link{color:#212529}.modal .btn-close,.toast .btn-close,.offcanvas .btn-close{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e")}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ecf0f1;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #7b8a8b;--quarto-scss-export-gray-900: #212529;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #2c3e50;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #18bc9c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-primary: #2c3e50;--quarto-scss-export-secondary: #6c757d;--quarto-scss-export-success: #18bc9c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-light: #ecf0f1;--quarto-scss-export-dark: #7b8a8b;--quarto-scss-export-link-color: #18bc9c;--quarto-scss-export-dropdown-link-color: #7b8a8b;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #2c3e50;--quarto-scss-export-nav-link-disabled-color: #6c757d;--quarto-scss-export-nav-tabs-border-color: #ecf0f1;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #18bc9c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(15.3396226415, 120.1603773585, 99.7075471698);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #ecf0f1;--quarto-scss-export-pagination-disabled-bg: rgb(58.5754716981, 229.9245283019, 196.4905660377);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-hover-bg: #ecf0f1;--quarto-scss-export-list-group-disabled-bg: #ecf0f1;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #5E5E5E;--quarto-scss-export-btn-code-copy-color-active: #4758AB;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-color: #7d12ba;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #18bc9c;--quarto-scss-export-toc-active-border: #18bc9c;--quarto-scss-export-toc-inactive-border: #ecf0f1;--quarto-scss-export-navbar-default: #2c3e50;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #2c3e50;--quarto-scss-export-btn-bg: #6c757d;--quarto-scss-export-btn-fg: rgb(253.53, 253.62, 253.7);--quarto-scss-export-body-contrast-bg: #fff;--quarto-scss-export-body-contrast-color: #212529;--quarto-scss-export-navbar-fg: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: rgb(204.36, 208.68, 213);--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(204.36, 208.68, 213, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(204.36, 208.68, 213, 0.75);--quarto-scss-export-sidebar-bg: #ecf0f1;--quarto-scss-export-sidebar-fg: rgb(77.88, 79.2, 79.53);--quarto-scss-export-title-block-color: #212529;--quarto-scss-export-title-block-contast-color: #fff;--quarto-scss-export-footer-bg: #fff;--quarto-scss-export-footer-fg: rgb(117.3, 117.3, 117.3);--quarto-scss-export-popover-bg: #fff;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #dee2e6;--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: #909294;--quarto-scss-export-table-group-separator-color-lighter: rgb(210.6, 211.4, 212.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-table-border-color: #dee2e6;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(212.8, 216.4, 220);--quarto-scss-export-blue-200: rgb(170.6, 177.8, 185);--quarto-scss-export-blue-300: rgb(128.4, 139.2, 150);--quarto-scss-export-blue-400: rgb(86.2, 100.6, 115);--quarto-scss-export-blue-500: #2c3e50;--quarto-scss-export-blue-600: rgb(35.2, 49.6, 64);--quarto-scss-export-blue-700: rgb(26.4, 37.2, 48);--quarto-scss-export-blue-800: rgb(17.6, 24.8, 32);--quarto-scss-export-blue-900: rgb(8.8, 12.4, 16);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(208.8, 241.6, 235.2);--quarto-scss-export-green-200: rgb(162.6, 228.2, 215.4);--quarto-scss-export-green-300: rgb(116.4, 214.8, 195.6);--quarto-scss-export-green-400: rgb(70.2, 201.4, 175.8);--quarto-scss-export-green-500: #18bc9c;--quarto-scss-export-green-600: rgb(19.2, 150.4, 124.8);--quarto-scss-export-green-700: rgb(14.4, 112.8, 93.6);--quarto-scss-export-green-800: rgb(9.6, 75.2, 62.4);--quarto-scss-export-green-900: rgb(4.8, 37.6, 31.2);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: #6c757d;--quarto-scss-export-primary-text-emphasis: rgb(17.6, 24.8, 32);--quarto-scss-export-secondary-text-emphasis: rgb(43.2, 46.8, 50);--quarto-scss-export-success-text-emphasis: rgb(9.6, 75.2, 62.4);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #7b8a8b;--quarto-scss-export-dark-text-emphasis: #7b8a8b;--quarto-scss-export-primary-bg-subtle: rgb(212.8, 216.4, 220);--quarto-scss-export-secondary-bg-subtle: rgb(225.6, 227.4, 229);--quarto-scss-export-success-bg-subtle: rgb(208.8, 241.6, 235.2);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(170.6, 177.8, 185);--quarto-scss-export-secondary-border-subtle: rgb(196.2, 199.8, 203);--quarto-scss-export-success-border-subtle: rgb(162.6, 228.2, 215.4);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ecf0f1;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-color: #212529;--quarto-scss-export-body-bg: #fff;--quarto-scss-export-body-secondary-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-body-secondary-bg: #ecf0f1;--quarto-scss-export-body-tertiary-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #2c3e50;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ecf0f1;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #212529;--quarto-scss-export-table-bg: #fff;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #212529;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #212529;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #212529;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(44, 62, 80, 0.25);--quarto-scss-export-btn-color: #212529;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #18bc9c;--quarto-scss-export-btn-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ecf0f1;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-color: #212529;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-input-focus-color: #212529;--quarto-scss-export-input-placeholder-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-plaintext-color: #212529;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-check-input-focus-border: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #2c3e50;--quarto-scss-export-form-check-input-checked-border-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #2c3e50;--quarto-scss-export-form-check-input-indeterminate-border-color: #2c3e50;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-color: #212529;--quarto-scss-export-input-group-addon-bg: #f8f9fa;--quarto-scss-export-input-group-addon-border-color: #dee2e6;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-color: #212529;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-color: ;--quarto-scss-export-form-select-disabled-bg: #ecf0f1;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #dee2e6;--quarto-scss-export-form-select-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #2c3e50;--quarto-scss-export-form-range-thumb-active-bg: rgb(191.7, 197.1, 202.5);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-file-button-color: #212529;--quarto-scss-export-form-file-button-bg: #f8f9fa;--quarto-scss-export-form-file-button-hover-bg: #ecf0f1;--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #18bc9c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #18bc9c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #18bc9c;--quarto-scss-export-form-valid-border-color: #18bc9c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #18bc9c;--quarto-scss-export-nav-link-hover-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-nav-tabs-link-hover-border-color: #ecf0f1 #ecf0f1 #ecf0f1;--quarto-scss-export-nav-tabs-link-active-color: #000;--quarto-scss-export-nav-tabs-link-active-bg: #fff;--quarto-scss-export-nav-pills-link-active-bg: #2c3e50;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #212529;--quarto-scss-export-dropdown-bg: #fff;--quarto-scss-export-dropdown-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #2c3e50;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(19.2, 150.4, 124.8);--quarto-scss-export-pagination-focus-bg: #ecf0f1;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-card-bg: #fff;--quarto-scss-export-accordion-color: #212529;--quarto-scss-export-accordion-bg: #fff;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #212529;--quarto-scss-export-accordion-button-bg: #fff;--quarto-scss-export-accordion-button-active-bg: rgb(212.8, 216.4, 220);--quarto-scss-export-accordion-button-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-accordion-button-focus-border-color: rgb(149.5, 158.5, 167.5);--quarto-scss-export-accordion-icon-color: #212529;--quarto-scss-export-accordion-icon-active-color: rgb(17.6, 24.8, 32);--quarto-scss-export-tooltip-color: #fff;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-header-bg: #ecf0f1;--quarto-scss-export-popover-body-color: #212529;--quarto-scss-export-popover-arrow-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-toast-header-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-content-bg: #fff;--quarto-scss-export-modal-content-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-header-border-color: #dee2e6;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-modal-footer-border-color: #dee2e6;--quarto-scss-export-progress-bg: #ecf0f1;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #2c3e50;--quarto-scss-export-list-group-color: #212529;--quarto-scss-export-list-group-bg: #fff;--quarto-scss-export-list-group-border-color: #dee2e6;--quarto-scss-export-list-group-active-bg: #2c3e50;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #2c3e50;--quarto-scss-export-list-group-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-hover-color: #000;--quarto-scss-export-list-group-action-active-color: #212529;--quarto-scss-export-list-group-action-active-bg: #ecf0f1;--quarto-scss-export-thumbnail-bg: #fff;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-bg: ;--quarto-scss-export-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-offcanvas-bg-color: #fff;--quarto-scss-export-offcanvas-color: #212529;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #fff;--quarto-scss-export-kbd-bg: #212529;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-pre-color: #000;--quarto-scss-export-bslib-page-sidebar-title-bg: #2c3e50;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(77.88, 79.2, 79.53);--quarto-scss-export-sidebar-hover-color: rgba(11.52, 90.24, 74.88, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(77.88, 79.2, 79.53, 0.75);--quarto-scss-export-valuebox-bg-primary: rgba(39, 128, 227, 0.7);--quarto-scss-export-valuebox-bg-secondary: #6c757d;--quarto-scss-export-valuebox-bg-success: rgba(63, 182, 24, 0.7);--quarto-scss-export-valuebox-bg-info: rgba(153, 84, 187, 0.7);--quarto-scss-export-valuebox-bg-warning: rgba(255, 117, 24, 0.7);--quarto-scss-export-valuebox-bg-danger: rgba(255, 0, 57, 0.7);--quarto-scss-export-valuebox-bg-light: #ecf0f1;--quarto-scss-export-valuebox-bg-dark: #7b8a8b;--quarto-scss-export-mermaid-bg-color: #fff;--quarto-scss-export-mermaid-edge-color: #6c757d;--quarto-scss-export-mermaid-node-fg-color: #212529;--quarto-scss-export-mermaid-fg-color: #212529;--quarto-scss-export-mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--quarto-scss-export-mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--quarto-scss-export-mermaid-label-bg-color: #fff;--quarto-scss-export-mermaid-label-fg-color: #2c3e50;--quarto-scss-export-mermaid-node-bg-color: rgba(44, 62, 80, 0.1);--quarto-scss-export-code-block-border-left-color: #dee2e6;--quarto-scss-export-callout-color-note: #2c3e50;--quarto-scss-export-callout-color-tip: #18bc9c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-dark-1555355ee1ba2ba771b7825afb2d978d.min.css b/_site/site_libs/bootstrap/bootstrap-dark-1555355ee1ba2ba771b7825afb2d978d.min.css deleted file mode 100644 index 9895218..0000000 --- a/_site/site_libs/bootstrap/bootstrap-dark-1555355ee1ba2ba771b7825afb2d978d.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #375a7f;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #00bc8c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ebebeb;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #444;--bs-gray-800: #343a40;--bs-gray-900: #222;--bs-default: rgb(67.15, 67.15, 67.15);--bs-primary: #375a7f;--bs-secondary: rgb(67.15, 67.15, 67.15);--bs-success: #00bc8c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: rgb(111.35, 111.35, 111.35);--bs-dark: rgb(45.05, 45.05, 45.05);--bs-default-rgb: 67, 67, 67;--bs-primary-rgb: 55, 90, 127;--bs-secondary-rgb: 67, 67, 67;--bs-success-rgb: 0, 188, 140;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 111, 111, 111;--bs-dark-rgb: 45, 45, 45;--bs-primary-text-emphasis: rgb(22, 36, 50.8);--bs-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--bs-success-text-emphasis: rgb(0, 75.2, 56);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #444;--bs-dark-text-emphasis: #444;--bs-primary-bg-subtle: rgb(215, 222, 229.4);--bs-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--bs-success-bg-subtle: rgb(204, 241.6, 232);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(175, 189, 203.8);--bs-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--bs-success-border-subtle: rgb(153, 228.2, 209);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ebebeb;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #fff;--bs-body-color-rgb: 255, 255, 255;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(255, 255, 255, 0.75);--bs-secondary-color-rgb: 255, 255, 255;--bs-secondary-bg: #ebebeb;--bs-secondary-bg-rgb: 235, 235, 235;--bs-tertiary-color: rgba(255, 255, 255, 0.5);--bs-tertiary-color-rgb: 255, 255, 255;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #00bc8c;--bs-link-color-rgb: 0, 188, 140;--bs-link-decoration: underline;--bs-link-hover-color: rgb(0, 150.4, 112);--bs-link-hover-color-rgb: 0, 150, 112;--bs-code-color: inherit;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(55, 90, 127, 0.25);--bs-form-valid-color: #00bc8c;--bs-form-valid-border-color: #00bc8c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b2e31;--bs-tertiary-bg-rgb: 43, 46, 49;--bs-primary-text-emphasis: rgb(135, 156, 178.2);--bs-secondary-text-emphasis: rgb(142.29, 142.29, 142.29);--bs-success-text-emphasis: rgb(102, 214.8, 186);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(11, 18, 25.4);--bs-secondary-bg-subtle: rgb(13.43, 13.43, 13.43);--bs-success-bg-subtle: rgb(0, 37.6, 28);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(33, 54, 76.2);--bs-secondary-border-subtle: rgb(40.29, 40.29, 40.29);--bs-success-border-subtle: rgb(0, 112.8, 84);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #444;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(135, 156, 178.2);--bs-link-hover-color: rgb(159, 175.8, 193.56);--bs-link-color-rgb: 135, 156, 178;--bs-link-hover-color-rgb: 159, 176, 194;--bs-code-color: white;--bs-border-color: #444;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(102, 214.8, 186);--bs-form-valid-border-color: rgb(102, 214.8, 186);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ebebeb}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:inherit;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#222;background-color:#fff;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:hsla(0,0%,100%,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#222;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:hsla(0,0%,100%,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none !important}body.quarto-dark .light-content{display:none !important}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #fff;--bs-table-bg: #222;--bs-table-border-color: rgb(67.15, 67.15, 67.15);--bs-table-accent-bg: transparent;--bs-table-striped-color: #fff;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #fff;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #fff;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid rgb(144.5,144.5,144.5)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #375a7f;--bs-table-border-color: rgb(75, 106.5, 139.8);--bs-table-striped-bg: rgb(65, 98.25, 133.4);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(75, 106.5, 139.8);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(70, 102.375, 136.6);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: rgb(67.15, 67.15, 67.15);--bs-table-border-color: rgb(85.935, 85.935, 85.935);--bs-table-striped-bg: rgb(76.5425, 76.5425, 76.5425);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(85.935, 85.935, 85.935);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(81.23875, 81.23875, 81.23875);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #00bc8c;--bs-table-border-color: rgb(25.5, 194.7, 151.5);--bs-table-striped-bg: rgb(12.75, 191.35, 145.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(25.5, 194.7, 151.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(19.125, 193.025, 148.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #fff;--bs-table-bg: rgb(111.35, 111.35, 111.35);--bs-table-border-color: rgb(125.715, 125.715, 125.715);--bs-table-striped-bg: rgb(118.5325, 118.5325, 118.5325);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(125.715, 125.715, 125.715);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(122.12375, 122.12375, 122.12375);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: rgb(45.05, 45.05, 45.05);--bs-table-border-color: rgb(66.045, 66.045, 66.045);--bs-table-striped-bg: rgb(55.5475, 55.5475, 55.5475);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(66.045, 66.045, 66.045);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(60.79625, 60.79625, 60.79625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:hsla(0,0%,100%,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:rgb(45.05,45.05,45.05);background-color:#fff;border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:hsl(0,0%,35%);opacity:1}.form-control:disabled{background-color:#ebebeb;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:hsl(0,0%,43.6666666667%);background-color:rgb(67.15,67.15,67.15);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:rgb(54.4,54.4,54.4)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:hsl(0,0%,35%);background-color:#ebebeb}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 rgb(45.05,45.05,45.05)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:none;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#375a7f;border-color:#375a7f}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#375a7f;border-color:#375a7f;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28155, 172.5, 191%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:hsla(0,0%,100%,.75)}.form-range:disabled::-moz-range-thumb{background-color:hsla(0,0%,100%,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ebebeb}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:hsl(0,0%,43.6666666667%);text-align:center;white-space:nowrap;background-color:rgb(67.15,67.15,67.15);border:1px solid #adb5bd;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#00bc8c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#00bc8c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#00bc8c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#00bc8c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#00bc8c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#00bc8c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#00bc8c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #fff;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(46.75, 76.5, 107.95);--bs-btn-hover-border-color: rgb(44, 72, 101.6);--bs-btn-focus-shadow-rgb: 85, 115, 146;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(44, 72, 101.6);--bs-btn-active-border-color: rgb(41.25, 67.5, 95.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #375a7f;--bs-btn-disabled-border-color: #375a7f}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(0, 159.8, 119);--bs-btn-hover-border-color: rgb(0, 150.4, 112);--bs-btn-focus-shadow-rgb: 38, 198, 157;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(0, 150.4, 112);--bs-btn-active-border-color: #008d69;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #00bc8c;--bs-btn-disabled-border-color: #00bc8c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #fff;--bs-btn-bg: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(94.6475, 94.6475, 94.6475);--bs-btn-hover-border-color: rgb(89.08, 89.08, 89.08);--bs-btn-focus-shadow-rgb: 133, 133, 133;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(89.08, 89.08, 89.08);--bs-btn-active-border-color: rgb(83.5125, 83.5125, 83.5125);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35)}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(76.5425, 76.5425, 76.5425);--bs-btn-hover-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-focus-shadow-rgb: 77, 77, 77;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(87.04, 87.04, 87.04);--bs-btn-active-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05)}.btn-outline-default{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #375a7f;--bs-btn-hover-border-color: #375a7f;--bs-btn-focus-shadow-rgb: 55, 90, 127;--bs-btn-active-color: #fff;--bs-btn-active-bg: #375a7f;--bs-btn-active-border-color: #375a7f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #375a7f;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #375a7f;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #00bc8c;--bs-btn-hover-border-color: #00bc8c;--bs-btn-focus-shadow-rgb: 0, 188, 140;--bs-btn-active-color: #fff;--bs-btn-active-bg: #00bc8c;--bs-btn-active-border-color: #00bc8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #00bc8c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #00bc8c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(111.35, 111.35, 111.35);--bs-btn-hover-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-focus-shadow-rgb: 111, 111, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(111.35, 111.35, 111.35);--bs-btn-active-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(45.05, 45.05, 45.05);--bs-btn-hover-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-focus-shadow-rgb: 45, 45, 45;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(45.05, 45.05, 45.05);--bs-btn-active-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #00bc8c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(0, 150.4, 112);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(0, 150.4, 112);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 198, 157;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #fff;--bs-dropdown-bg: #222;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #fff;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #375a7f;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #00bc8c;--bs-nav-link-hover-color: rgb(0, 150.4, 112);--bs-nav-link-disabled-color: rgb(111.35, 111.35, 111.35);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: rgb(67.15, 67.15, 67.15);--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;--bs-nav-tabs-link-active-color: #fff;--bs-nav-tabs-link-active-bg: #222;--bs-nav-tabs-link-active-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #375a7f}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: rgb(45.05, 45.05, 45.05);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #fff;--bs-accordion-bg: #222;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #fff;--bs-accordion-btn-bg: #222;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2822, 36, 50.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(155, 172.5, 191);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(22, 36, 50.8);--bs-accordion-active-bg: rgb(215, 222, 229.4)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: rgb(67.15, 67.15, 67.15);--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(255, 255, 255, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #00bc8c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(0, 239, 177.9787234043);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(0, 150.4, 112);--bs-pagination-focus-bg: #ebebeb;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(0, 239, 177.9787234043);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #fff;--bs-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: rgb(67.15, 67.15, 67.15);--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #375a7f;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #fff;--bs-list-group-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-border-color: rgb(67.15, 67.15, 67.15);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(255, 255, 255, 0.75);--bs-list-group-action-hover-color: #fff;--bs-list-group-action-hover-bg: rgb(67.15, 67.15, 67.15);--bs-list-group-action-active-color: #fff;--bs-list-group-action-active-bg: #222;--bs-list-group-disabled-color: rgba(255, 255, 255, 0.75);--bs-list-group-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #375a7f;--bs-list-group-active-border-color: #375a7f;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgb(67.15, 67.15, 67.15);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(255, 255, 255, 0.75);--bs-toast-header-bg: rgb(45.05, 45.05, 45.05);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: rgb(45.05, 45.05, 45.05);--bs-modal-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #222;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: rgb(45.05, 45.05, 45.05);--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: rgb(67.15, 67.15, 67.15);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #fff;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #fff;--bs-offcanvas-bg: #222;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgb(67.15, 67.15, 67.15);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#fff !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(44, 72, 102, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(44, 72, 102, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(0, 150, 112, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 150, 112, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(89, 89, 89, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(89, 89, 89, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(36, 36, 36, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(36, 36, 36, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#fff}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #222);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}:root{--bslib-page-sidebar-title-bg: #375a7f;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#dee2e6}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:hsl(0,0%,99.4366666667%);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(252.45,254.33,253.85,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(0,0%,79.4366666667%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:hsl(0,0%,99.4366666667%)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(252.45,254.33,253.85,.8)}div.sidebar-item-container.disabled{color:hsla(0,0%,99.4366666667%,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(252.45,254.33,253.85)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:hsl(0,0%,43.6666666667%)}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid rgb(67.15,67.15,67.15) !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid rgb(67.15,67.15,67.15)}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:hsl(0,0%,43.6666666667%);border-bottom:1px solid rgb(67.15,67.15,67.15)}.quarto-banner nav.quarto-secondary-nav{background-color:#375a7f;color:#dee2e6;border-top:1px solid rgb(67.15,67.15,67.15)}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(0,150.4,112)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#222}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid rgb(67.15,67.15,67.15)}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,54.0666666667%)}.nav-footer a{color:hsl(0,0%,54.0666666667%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#dee2e6;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:hsl(0,0%,99.4366666667%);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#222;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#222;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#dee2e6;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#dee2e6;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #adb5bd;border-radius:.25rem;color:rgb(45.05,45.05,45.05);display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:rgb(45.05,45.05,45.05);opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:rgb(45.05,45.05,45.05);font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:rgb(45.05,45.05,45.05);opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:rgb(45.05,45.05,45.05);opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #adb5bd 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:rgb(46.75,46.75,46.75);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(42.6703296703,69.8241758242,98.5296703297)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:rgb(45.05,45.05,45.05)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#000}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:rgb(45.05,45.05,45.05);color:#fff}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:rgb(45.05,45.05,45.05);border-color:#adb5bd;color:#fff}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #adb5bd}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#dee2e6}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:hsl(0,0%,99.4366666667%)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(34,34,34,.65);width:90%;bottom:0;box-shadow:rgba(173,181,189,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#222;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#222;border-bottom:1px solid #adb5bd;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#fff;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:hsla(0,0%,100%,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#375a7f !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:rgb(67.15,67.15,67.15) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#00bc8c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:#3498db !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#f39c12 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:#e74c3c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:hsl(0,0%,43.6666666667%) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:rgb(45.05,45.05,45.05) !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879);border-bottom:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(67.3296703297,110.1758241758,155.4703296703)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#dee2e6}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#fff}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#fff}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(0,0%,75.2666666667%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#222;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#222;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#fff}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:rgb(45.05,45.05,45.05)}.tableFloatingHeaderOriginal{background-color:rgb(45.05,45.05,45.05);position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.listing-actions-group .form-select,.listing-actions-group .form-control{background-color:#222;color:#fff}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#fff;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#00bc8c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#00bc8c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#00bc8c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#222;border:solid 1px #dee2e6;border-radius:.25rem;color:#fff;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#222}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#222}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#222;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#222}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#222;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}div.code-copy-outer-scaffold{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #222;--quarto-body-color: #fff;--quarto-text-muted: #6c757d;--quarto-border-color: rgb(67.15, 67.15, 67.15);--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #222;--mermaid-edge-color: rgb(67.15, 67.15, 67.15);--mermaid-node-fg-color: #fff;--mermaid-fg-color: #fff;--mermaid-fg-color--lighter: white;--mermaid-fg-color--lightest: white;--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #222;--mermaid-label-fg-color: #375a7f;--mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--mermaid-node-fg-color: #fff}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#222}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#222}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#222}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#222}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#222}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#222}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#222}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#222}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#222}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>p:has(+section){margin-bottom:2rem}main.content>section:first-of-type>h2:nth-child(1),main.content>section:first-of-type>.h2:nth-child(1){margin-top:0}h2,.h2{border-bottom:1px solid rgb(67.15,67.15,67.15);padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(0,0%,75%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(0,0%,75%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(0,0%,75%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(0,0%,75%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:rgb(67.15,67.15,67.15) 1px solid;border-right:rgb(67.15,67.15,67.15) 1px solid;border-bottom:rgb(67.15,67.15,67.15) 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(67.15,67.15,67.15,.65);border:1px solid rgba(67.15,67.15,67.15,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow-y:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(0,0%,75%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code.sourceCode,li code.sourceCode,td code.sourceCode{background-color:rgba(67.15,67.15,67.15,.65)}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:rgba(67.15,67.15,67.15,.65);padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#00bc8c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#00bc8c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ebebeb;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #00bc8c;color:#00bc8c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#00bc8c !important}kbd,.kbd{color:#fff;background-color:rgb(74.4,74.7,75);border:1px solid;border-radius:5px;border-color:rgb(67.15,67.15,67.15)}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout.callout-style-default{border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400;margin-bottom:-0.4em;margin-top:.5em}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-empty-content>.callout-header{margin-bottom:0em;border-bottom-right-radius:calc(0.25rem + -1px)}.callout>.callout-header.collapsed{border-bottom-right-radius:calc(0.25rem + -1px)}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em;border-top-right-radius:calc(0.25rem + -1px)}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#375a7f}div.callout-note.callout-style-default>.callout-header{background-color:rgb(16.5,27,38.1)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#00bc8c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(0,56.4,42)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(72.9,46.8,5.4)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(75.9,37.8,6)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(69.3,22.8,18)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#375a7f;color:#dee2e6}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:rgb(39.1,39.1,39.1)}#quarto-content .quarto-sidebar-toggle-title{color:#fff}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#222;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#222;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(217.43, 217.43, 217.43);--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: rgb(217.43, 217.43, 217.43);--bs-btn-hover-bg: rgb(95.3275, 95.3275, 95.3275);--bs-btn-hover-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-focus-shadow-rgb: 90, 90, 90;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(104.72, 104.72, 104.72);--bs-btn-active-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}nav.quarto-secondary-nav.color-navbar{background-color:#375a7f;color:#dee2e6}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#dee2e6}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! dark */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#222}.code-annotation-gutter{background-color:rgba(67.15,67.15,67.15,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:hsl(0,0%,90%);border:solid hsl(0,0%,90%) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#222;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#434343;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(78.2,78.2,78.2);border-bottom:1px solid rgb(78.2,78.2,78.2)}.table>thead{border-top-width:0;border-bottom:1px solid rgb(144.5,144.5,144.5)}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}.screen-reader-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#dee2e6;background:#375a7f}.quarto-title-banner a{color:#dee2e6}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#dee2e6}.quarto-title-banner .code-tools-button{color:rgb(163.9655172414,175,186.0344827586)}.quarto-title-banner .code-tools-button:hover{color:#dee2e6}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.blockquote-footer{color:hsl(0,0%,35%)}.form-floating>label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label{color:hsl(0,0%,35%)}.nav-tabs .nav-link,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-pills .nav-link,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover{color:#fff}.breadcrumb a{color:#fff}.pagination a:hover{text-decoration:none}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:rgb(67.15,67.15,67.15)}.alert-primary{background-color:#375a7f}.alert-secondary{background-color:rgb(67.15,67.15,67.15)}.alert-success{background-color:#00bc8c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:hsl(0,0%,43.6666666667%)}.alert-dark{background-color:rgb(45.05,45.05,45.05)}.tooltip{--bs-tooltip-bg: var(--bs-tertiary-bg);--bs-tooltip-color: var(--bs-emphasis-color)}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ebebeb;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #444;--quarto-scss-export-gray-900: #222;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #375a7f;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #00bc8c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-body-bg: #222;--quarto-scss-export-body-color: #fff;--quarto-scss-export-primary: #375a7f;--quarto-scss-export-success: #00bc8c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-link-color: #00bc8c;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #adb5bd;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-file-button-hover-bg: rgb(54.4, 54.4, 54.4);--quarto-scss-export-dropdown-bg: #222;--quarto-scss-export-dropdown-link-color: #fff;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #375a7f;--quarto-scss-export-nav-tabs-link-active-color: #fff;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #00bc8c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #fff;--quarto-scss-export-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-color: #fff;--quarto-scss-export-list-group-action-hover-color: #fff;--quarto-scss-export-list-group-action-active-bg: #222;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #f8f8f2;--quarto-scss-export-btn-code-copy-color-active: #ffa07a;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #00bc8c;--quarto-scss-export-toc-active-border: #00bc8c;--quarto-scss-export-toc-inactive-border: #ebebeb;--quarto-scss-export-navbar-default: #375a7f;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #375a7f;--quarto-scss-export-btn-bg: rgb(67.15, 67.15, 67.15);--quarto-scss-export-btn-fg: rgb(217.43, 217.43, 217.43);--quarto-scss-export-body-contrast-bg: #222;--quarto-scss-export-body-contrast-color: #fff;--quarto-scss-export-navbar-fg: #dee2e6;--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: #dee2e6;--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(222, 226, 230, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(222, 226, 230, 0.75);--quarto-scss-export-sidebar-bg: rgb(111.35, 111.35, 111.35);--quarto-scss-export-sidebar-fg: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-title-block-color: #fff;--quarto-scss-export-title-block-contast-color: #222;--quarto-scss-export-footer-bg: #222;--quarto-scss-export-footer-fg: rgb(137.87, 137.87, 137.87);--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: rgb(144.5, 144.5, 144.5);--quarto-scss-export-table-group-separator-color-lighter: rgb(78.2, 78.2, 78.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(215, 222, 229.4);--quarto-scss-export-blue-200: rgb(175, 189, 203.8);--quarto-scss-export-blue-300: rgb(135, 156, 178.2);--quarto-scss-export-blue-400: rgb(95, 123, 152.6);--quarto-scss-export-blue-500: #375a7f;--quarto-scss-export-blue-600: rgb(44, 72, 101.6);--quarto-scss-export-blue-700: rgb(33, 54, 76.2);--quarto-scss-export-blue-800: rgb(22, 36, 50.8);--quarto-scss-export-blue-900: rgb(11, 18, 25.4);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(204, 241.6, 232);--quarto-scss-export-green-200: rgb(153, 228.2, 209);--quarto-scss-export-green-300: rgb(102, 214.8, 186);--quarto-scss-export-green-400: rgb(51, 201.4, 163);--quarto-scss-export-green-500: #00bc8c;--quarto-scss-export-green-600: rgb(0, 150.4, 112);--quarto-scss-export-green-700: rgb(0, 112.8, 84);--quarto-scss-export-green-800: rgb(0, 75.2, 56);--quarto-scss-export-green-900: rgb(0, 37.6, 28);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: rgb(67.15, 67.15, 67.15);--quarto-scss-export-primary-text-emphasis: rgb(22, 36, 50.8);--quarto-scss-export-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--quarto-scss-export-success-text-emphasis: rgb(0, 75.2, 56);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #444;--quarto-scss-export-dark-text-emphasis: #444;--quarto-scss-export-primary-bg-subtle: rgb(215, 222, 229.4);--quarto-scss-export-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--quarto-scss-export-success-bg-subtle: rgb(204, 241.6, 232);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(175, 189, 203.8);--quarto-scss-export-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--quarto-scss-export-success-border-subtle: rgb(153, 228.2, 209);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ebebeb;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-secondary-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-body-secondary-bg: #ebebeb;--quarto-scss-export-body-tertiary-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #375a7f;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ebebeb;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #fff;--quarto-scss-export-table-bg: #222;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #fff;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #fff;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #fff;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-btn-color: #fff;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #00bc8c;--quarto-scss-export-btn-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ebebeb;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-input-plaintext-color: #fff;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-focus-border: rgb(155, 172.5, 191);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #375a7f;--quarto-scss-export-form-check-input-checked-border-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-border-color: #375a7f;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(155, 172.5, 191);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-border-color: #adb5bd;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-bg: #ebebeb;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #adb5bd;--quarto-scss-export-form-select-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #375a7f;--quarto-scss-export-form-range-thumb-active-bg: rgb(195, 205.5, 216.6);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #00bc8c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #00bc8c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #00bc8c;--quarto-scss-export-form-valid-border-color: #00bc8c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #00bc8c;--quarto-scss-export-nav-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-nav-tabs-link-active-bg: #222;--quarto-scss-export-nav-pills-link-active-bg: #375a7f;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #fff;--quarto-scss-export-dropdown-link-active-bg: #375a7f;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #375a7f;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(0, 150.4, 112);--quarto-scss-export-pagination-focus-bg: #ebebeb;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-accordion-color: #fff;--quarto-scss-export-accordion-bg: #222;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #fff;--quarto-scss-export-accordion-button-bg: #222;--quarto-scss-export-accordion-button-active-bg: rgb(215, 222, 229.4);--quarto-scss-export-accordion-button-active-color: rgb(22, 36, 50.8);--quarto-scss-export-accordion-button-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-accordion-icon-color: #fff;--quarto-scss-export-accordion-icon-active-color: rgb(22, 36, 50.8);--quarto-scss-export-tooltip-color: #222;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-body-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #375a7f;--quarto-scss-export-list-group-active-bg: #375a7f;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #375a7f;--quarto-scss-export-list-group-disabled-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-active-color: #fff;--quarto-scss-export-thumbnail-bg: #222;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-bg-color: #222;--quarto-scss-export-offcanvas-color: #fff;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #222;--quarto-scss-export-kbd-bg: #fff;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-bslib-page-sidebar-title-bg: #375a7f;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-sidebar-hover-color: rgba(252.45, 254.33, 253.85, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(253.5635, 253.5635, 253.5635, 0.75);--quarto-scss-export-valuebox-bg-primary: #375a7f;--quarto-scss-export-valuebox-bg-success: #00bc8c;--quarto-scss-export-valuebox-bg-info: #3498db;--quarto-scss-export-valuebox-bg-warning: #f39c12;--quarto-scss-export-valuebox-bg-danger: #e74c3c;--quarto-scss-export-mermaid-bg-color: #222;--quarto-scss-export-mermaid-node-fg-color: #fff;--quarto-scss-export-mermaid-fg-color: #fff;--quarto-scss-export-mermaid-fg-color--lighter: white;--quarto-scss-export-mermaid-fg-color--lightest: white;--quarto-scss-export-mermaid-label-bg-color: #222;--quarto-scss-export-mermaid-label-fg-color: #375a7f;--quarto-scss-export-mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--quarto-scss-export-callout-color-note: #375a7f;--quarto-scss-export-callout-color-tip: #00bc8c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-dark-47732130d4368f36b8c72e31939bd287.min.css b/_site/site_libs/bootstrap/bootstrap-dark-47732130d4368f36b8c72e31939bd287.min.css deleted file mode 100644 index 5852eab..0000000 --- a/_site/site_libs/bootstrap/bootstrap-dark-47732130d4368f36b8c72e31939bd287.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #375a7f;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #00bc8c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ebebeb;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #444;--bs-gray-800: #343a40;--bs-gray-900: #222;--bs-default: rgb(67.15, 67.15, 67.15);--bs-primary: #375a7f;--bs-secondary: rgb(67.15, 67.15, 67.15);--bs-success: #00bc8c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: rgb(111.35, 111.35, 111.35);--bs-dark: rgb(45.05, 45.05, 45.05);--bs-default-rgb: 67, 67, 67;--bs-primary-rgb: 55, 90, 127;--bs-secondary-rgb: 67, 67, 67;--bs-success-rgb: 0, 188, 140;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 111, 111, 111;--bs-dark-rgb: 45, 45, 45;--bs-primary-text-emphasis: rgb(22, 36, 50.8);--bs-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--bs-success-text-emphasis: rgb(0, 75.2, 56);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #444;--bs-dark-text-emphasis: #444;--bs-primary-bg-subtle: rgb(215, 222, 229.4);--bs-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--bs-success-bg-subtle: rgb(204, 241.6, 232);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(175, 189, 203.8);--bs-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--bs-success-border-subtle: rgb(153, 228.2, 209);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ebebeb;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #fff;--bs-body-color-rgb: 255, 255, 255;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(255, 255, 255, 0.75);--bs-secondary-color-rgb: 255, 255, 255;--bs-secondary-bg: #ebebeb;--bs-secondary-bg-rgb: 235, 235, 235;--bs-tertiary-color: rgba(255, 255, 255, 0.5);--bs-tertiary-color-rgb: 255, 255, 255;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #00bc8c;--bs-link-color-rgb: 0, 188, 140;--bs-link-decoration: underline;--bs-link-hover-color: rgb(0, 150.4, 112);--bs-link-hover-color-rgb: 0, 150, 112;--bs-code-color: inherit;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(55, 90, 127, 0.25);--bs-form-valid-color: #00bc8c;--bs-form-valid-border-color: #00bc8c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b2e31;--bs-tertiary-bg-rgb: 43, 46, 49;--bs-primary-text-emphasis: rgb(135, 156, 178.2);--bs-secondary-text-emphasis: rgb(142.29, 142.29, 142.29);--bs-success-text-emphasis: rgb(102, 214.8, 186);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(11, 18, 25.4);--bs-secondary-bg-subtle: rgb(13.43, 13.43, 13.43);--bs-success-bg-subtle: rgb(0, 37.6, 28);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(33, 54, 76.2);--bs-secondary-border-subtle: rgb(40.29, 40.29, 40.29);--bs-success-border-subtle: rgb(0, 112.8, 84);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #444;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(135, 156, 178.2);--bs-link-hover-color: rgb(159, 175.8, 193.56);--bs-link-color-rgb: 135, 156, 178;--bs-link-hover-color-rgb: 159, 176, 194;--bs-code-color: white;--bs-border-color: #444;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(102, 214.8, 186);--bs-form-valid-border-color: rgb(102, 214.8, 186);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ebebeb}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:inherit;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#222;background-color:#fff;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:hsla(0,0%,100%,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#222;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:hsla(0,0%,100%,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none !important}body.quarto-dark .light-content{display:none !important}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #fff;--bs-table-bg: #222;--bs-table-border-color: rgb(67.15, 67.15, 67.15);--bs-table-accent-bg: transparent;--bs-table-striped-color: #fff;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #fff;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #fff;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid rgb(144.5,144.5,144.5)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #375a7f;--bs-table-border-color: rgb(75, 106.5, 139.8);--bs-table-striped-bg: rgb(65, 98.25, 133.4);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(75, 106.5, 139.8);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(70, 102.375, 136.6);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: rgb(67.15, 67.15, 67.15);--bs-table-border-color: rgb(85.935, 85.935, 85.935);--bs-table-striped-bg: rgb(76.5425, 76.5425, 76.5425);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(85.935, 85.935, 85.935);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(81.23875, 81.23875, 81.23875);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #00bc8c;--bs-table-border-color: rgb(25.5, 194.7, 151.5);--bs-table-striped-bg: rgb(12.75, 191.35, 145.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(25.5, 194.7, 151.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(19.125, 193.025, 148.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #fff;--bs-table-bg: rgb(111.35, 111.35, 111.35);--bs-table-border-color: rgb(125.715, 125.715, 125.715);--bs-table-striped-bg: rgb(118.5325, 118.5325, 118.5325);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(125.715, 125.715, 125.715);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(122.12375, 122.12375, 122.12375);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: rgb(45.05, 45.05, 45.05);--bs-table-border-color: rgb(66.045, 66.045, 66.045);--bs-table-striped-bg: rgb(55.5475, 55.5475, 55.5475);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(66.045, 66.045, 66.045);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(60.79625, 60.79625, 60.79625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:hsla(0,0%,100%,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:rgb(45.05,45.05,45.05);background-color:#fff;border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:hsl(0,0%,35%);opacity:1}.form-control:disabled{background-color:#ebebeb;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:hsl(0,0%,43.6666666667%);background-color:rgb(67.15,67.15,67.15);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:rgb(54.4,54.4,54.4)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:hsl(0,0%,35%);background-color:#ebebeb}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 rgb(45.05,45.05,45.05)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:none;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#375a7f;border-color:#375a7f}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#375a7f;border-color:#375a7f;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28155, 172.5, 191%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:hsla(0,0%,100%,.75)}.form-range:disabled::-moz-range-thumb{background-color:hsla(0,0%,100%,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ebebeb}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:hsl(0,0%,43.6666666667%);text-align:center;white-space:nowrap;background-color:rgb(67.15,67.15,67.15);border:1px solid #adb5bd;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#00bc8c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#00bc8c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#00bc8c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#00bc8c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#00bc8c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#00bc8c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#00bc8c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #fff;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(46.75, 76.5, 107.95);--bs-btn-hover-border-color: rgb(44, 72, 101.6);--bs-btn-focus-shadow-rgb: 85, 115, 146;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(44, 72, 101.6);--bs-btn-active-border-color: rgb(41.25, 67.5, 95.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #375a7f;--bs-btn-disabled-border-color: #375a7f}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(0, 159.8, 119);--bs-btn-hover-border-color: rgb(0, 150.4, 112);--bs-btn-focus-shadow-rgb: 38, 198, 157;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(0, 150.4, 112);--bs-btn-active-border-color: #008d69;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #00bc8c;--bs-btn-disabled-border-color: #00bc8c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #fff;--bs-btn-bg: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(94.6475, 94.6475, 94.6475);--bs-btn-hover-border-color: rgb(89.08, 89.08, 89.08);--bs-btn-focus-shadow-rgb: 133, 133, 133;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(89.08, 89.08, 89.08);--bs-btn-active-border-color: rgb(83.5125, 83.5125, 83.5125);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35)}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(76.5425, 76.5425, 76.5425);--bs-btn-hover-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-focus-shadow-rgb: 77, 77, 77;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(87.04, 87.04, 87.04);--bs-btn-active-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05)}.btn-outline-default{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #375a7f;--bs-btn-hover-border-color: #375a7f;--bs-btn-focus-shadow-rgb: 55, 90, 127;--bs-btn-active-color: #fff;--bs-btn-active-bg: #375a7f;--bs-btn-active-border-color: #375a7f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #375a7f;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #375a7f;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #00bc8c;--bs-btn-hover-border-color: #00bc8c;--bs-btn-focus-shadow-rgb: 0, 188, 140;--bs-btn-active-color: #fff;--bs-btn-active-bg: #00bc8c;--bs-btn-active-border-color: #00bc8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #00bc8c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #00bc8c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(111.35, 111.35, 111.35);--bs-btn-hover-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-focus-shadow-rgb: 111, 111, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(111.35, 111.35, 111.35);--bs-btn-active-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(45.05, 45.05, 45.05);--bs-btn-hover-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-focus-shadow-rgb: 45, 45, 45;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(45.05, 45.05, 45.05);--bs-btn-active-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #00bc8c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(0, 150.4, 112);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(0, 150.4, 112);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 198, 157;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #fff;--bs-dropdown-bg: #222;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #fff;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #375a7f;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #00bc8c;--bs-nav-link-hover-color: rgb(0, 150.4, 112);--bs-nav-link-disabled-color: rgb(111.35, 111.35, 111.35);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: rgb(67.15, 67.15, 67.15);--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;--bs-nav-tabs-link-active-color: #fff;--bs-nav-tabs-link-active-bg: #222;--bs-nav-tabs-link-active-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #375a7f}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: rgb(45.05, 45.05, 45.05);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #fff;--bs-accordion-bg: #222;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #fff;--bs-accordion-btn-bg: #222;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2822, 36, 50.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(155, 172.5, 191);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(22, 36, 50.8);--bs-accordion-active-bg: rgb(215, 222, 229.4)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: rgb(67.15, 67.15, 67.15);--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(255, 255, 255, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #00bc8c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(0, 239, 177.9787234043);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(0, 150.4, 112);--bs-pagination-focus-bg: #ebebeb;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(0, 239, 177.9787234043);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #fff;--bs-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: rgb(67.15, 67.15, 67.15);--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #375a7f;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #fff;--bs-list-group-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-border-color: rgb(67.15, 67.15, 67.15);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(255, 255, 255, 0.75);--bs-list-group-action-hover-color: #fff;--bs-list-group-action-hover-bg: rgb(67.15, 67.15, 67.15);--bs-list-group-action-active-color: #fff;--bs-list-group-action-active-bg: #222;--bs-list-group-disabled-color: rgba(255, 255, 255, 0.75);--bs-list-group-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #375a7f;--bs-list-group-active-border-color: #375a7f;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgb(67.15, 67.15, 67.15);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(255, 255, 255, 0.75);--bs-toast-header-bg: rgb(45.05, 45.05, 45.05);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: rgb(45.05, 45.05, 45.05);--bs-modal-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #222;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: rgb(45.05, 45.05, 45.05);--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: rgb(67.15, 67.15, 67.15);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #fff;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #fff;--bs-offcanvas-bg: #222;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgb(67.15, 67.15, 67.15);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#fff !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(44, 72, 102, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(44, 72, 102, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(0, 150, 112, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 150, 112, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(89, 89, 89, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(89, 89, 89, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(36, 36, 36, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(36, 36, 36, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#fff}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}:root{--bslib-page-sidebar-title-bg: #375a7f;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #222);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#dee2e6}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:hsl(0,0%,99.4366666667%);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(252.45,254.33,253.85,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(0,0%,79.4366666667%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:hsl(0,0%,99.4366666667%)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(252.45,254.33,253.85,.8)}div.sidebar-item-container.disabled{color:hsla(0,0%,99.4366666667%,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(252.45,254.33,253.85)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:hsl(0,0%,43.6666666667%)}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid rgb(67.15,67.15,67.15) !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid rgb(67.15,67.15,67.15)}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:hsl(0,0%,43.6666666667%);border-bottom:1px solid rgb(67.15,67.15,67.15)}.quarto-banner nav.quarto-secondary-nav{background-color:#375a7f;color:#dee2e6;border-top:1px solid rgb(67.15,67.15,67.15)}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(0,150.4,112)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#222}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid rgb(67.15,67.15,67.15)}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,54.0666666667%)}.nav-footer a{color:hsl(0,0%,54.0666666667%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#dee2e6;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:hsl(0,0%,99.4366666667%);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#222;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#222;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#dee2e6;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#dee2e6;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #adb5bd;border-radius:.25rem;color:rgb(45.05,45.05,45.05);display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:rgb(45.05,45.05,45.05);opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:rgb(45.05,45.05,45.05);font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:rgb(45.05,45.05,45.05);opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:rgb(45.05,45.05,45.05);opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #adb5bd 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:rgb(46.75,46.75,46.75);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(42.6703296703,69.8241758242,98.5296703297)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:rgb(45.05,45.05,45.05)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#000}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:rgb(45.05,45.05,45.05);color:#fff}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:rgb(45.05,45.05,45.05);border-color:#adb5bd;color:#fff}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #adb5bd}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#dee2e6}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:hsl(0,0%,99.4366666667%)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(34,34,34,.65);width:90%;bottom:0;box-shadow:rgba(173,181,189,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#222;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#222;border-bottom:1px solid #adb5bd;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#fff;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:hsla(0,0%,100%,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#375a7f !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:rgb(67.15,67.15,67.15) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#00bc8c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:#3498db !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#f39c12 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:#e74c3c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:hsl(0,0%,43.6666666667%) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:rgb(45.05,45.05,45.05) !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879);border-bottom:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(67.3296703297,110.1758241758,155.4703296703)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#dee2e6}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#fff}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#fff}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(0,0%,75.2666666667%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#222;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#222;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#fff}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:rgb(45.05,45.05,45.05)}.tableFloatingHeaderOriginal{background-color:rgb(45.05,45.05,45.05);position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.listing-actions-group .form-select,.listing-actions-group .form-control{background-color:#222;color:#fff}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#fff;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#00bc8c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#00bc8c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#00bc8c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#222;border:solid 1px #dee2e6;border-radius:.25rem;color:#fff;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#222}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#222}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#222;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#222}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#222;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}div.code-copy-outer-scaffold{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #222;--quarto-body-color: #fff;--quarto-text-muted: #6c757d;--quarto-border-color: rgb(67.15, 67.15, 67.15);--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #222;--mermaid-edge-color: rgb(67.15, 67.15, 67.15);--mermaid-node-fg-color: #fff;--mermaid-fg-color: #fff;--mermaid-fg-color--lighter: white;--mermaid-fg-color--lightest: white;--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #222;--mermaid-label-fg-color: #375a7f;--mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--mermaid-node-fg-color: #fff}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#222}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#222}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#222}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#222}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#222}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#222}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#222}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#222}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#222}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>p:has(+section){margin-bottom:2rem}main.content>section:first-of-type>h2:nth-child(1),main.content>section:first-of-type>.h2:nth-child(1){margin-top:0}h2,.h2{border-bottom:1px solid rgb(67.15,67.15,67.15);padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(0,0%,75%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(0,0%,75%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(0,0%,75%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(0,0%,75%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:rgb(67.15,67.15,67.15) 1px solid;border-right:rgb(67.15,67.15,67.15) 1px solid;border-bottom:rgb(67.15,67.15,67.15) 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(67.15,67.15,67.15,.65);border:1px solid rgba(67.15,67.15,67.15,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow-y:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(0,0%,75%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code.sourceCode,li code.sourceCode,td code.sourceCode{background-color:rgba(67.15,67.15,67.15,.65)}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:rgba(67.15,67.15,67.15,.65);padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#00bc8c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#00bc8c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ebebeb;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #00bc8c;color:#00bc8c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#00bc8c !important}kbd,.kbd{color:#fff;background-color:rgb(74.4,74.7,75);border:1px solid;border-radius:5px;border-color:rgb(67.15,67.15,67.15)}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout.callout-style-default{border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400;margin-bottom:-0.4em;margin-top:.5em}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-empty-content>.callout-header{margin-bottom:0em;border-bottom-right-radius:calc(0.25rem + -1px)}.callout>.callout-header.collapsed{border-bottom-right-radius:calc(0.25rem + -1px)}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em;border-top-right-radius:calc(0.25rem + -1px)}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#375a7f}div.callout-note.callout-style-default>.callout-header{background-color:rgb(16.5,27,38.1)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#00bc8c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(0,56.4,42)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(72.9,46.8,5.4)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(75.9,37.8,6)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(69.3,22.8,18)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#375a7f;color:#dee2e6}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:rgb(39.1,39.1,39.1)}#quarto-content .quarto-sidebar-toggle-title{color:#fff}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#222;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#222;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(217.43, 217.43, 217.43);--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: rgb(217.43, 217.43, 217.43);--bs-btn-hover-bg: rgb(95.3275, 95.3275, 95.3275);--bs-btn-hover-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-focus-shadow-rgb: 90, 90, 90;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(104.72, 104.72, 104.72);--bs-btn-active-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}nav.quarto-secondary-nav.color-navbar{background-color:#375a7f;color:#dee2e6}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#dee2e6}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! dark */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#222}.code-annotation-gutter{background-color:rgba(67.15,67.15,67.15,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:hsl(0,0%,90%);border:solid hsl(0,0%,90%) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#222;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#434343;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(78.2,78.2,78.2);border-bottom:1px solid rgb(78.2,78.2,78.2)}.table>thead{border-top-width:0;border-bottom:1px solid rgb(144.5,144.5,144.5)}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}.screen-reader-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#dee2e6;background:#375a7f}.quarto-title-banner a{color:#dee2e6}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#dee2e6}.quarto-title-banner .code-tools-button{color:rgb(163.9655172414,175,186.0344827586)}.quarto-title-banner .code-tools-button:hover{color:#dee2e6}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.blockquote-footer{color:hsl(0,0%,35%)}.form-floating>label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label{color:hsl(0,0%,35%)}.nav-tabs .nav-link,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-pills .nav-link,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover{color:#fff}.breadcrumb a{color:#fff}.pagination a:hover{text-decoration:none}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:rgb(67.15,67.15,67.15)}.alert-primary{background-color:#375a7f}.alert-secondary{background-color:rgb(67.15,67.15,67.15)}.alert-success{background-color:#00bc8c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:hsl(0,0%,43.6666666667%)}.alert-dark{background-color:rgb(45.05,45.05,45.05)}.tooltip{--bs-tooltip-bg: var(--bs-tertiary-bg);--bs-tooltip-color: var(--bs-emphasis-color)}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ebebeb;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #444;--quarto-scss-export-gray-900: #222;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #375a7f;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #00bc8c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-body-bg: #222;--quarto-scss-export-body-color: #fff;--quarto-scss-export-primary: #375a7f;--quarto-scss-export-success: #00bc8c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-link-color: #00bc8c;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #adb5bd;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-file-button-hover-bg: rgb(54.4, 54.4, 54.4);--quarto-scss-export-dropdown-bg: #222;--quarto-scss-export-dropdown-link-color: #fff;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #375a7f;--quarto-scss-export-nav-tabs-link-active-color: #fff;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #00bc8c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #fff;--quarto-scss-export-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-color: #fff;--quarto-scss-export-list-group-action-hover-color: #fff;--quarto-scss-export-list-group-action-active-bg: #222;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #f8f8f2;--quarto-scss-export-btn-code-copy-color-active: #ffa07a;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #00bc8c;--quarto-scss-export-toc-active-border: #00bc8c;--quarto-scss-export-toc-inactive-border: #ebebeb;--quarto-scss-export-navbar-default: #375a7f;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #375a7f;--quarto-scss-export-btn-bg: rgb(67.15, 67.15, 67.15);--quarto-scss-export-btn-fg: rgb(217.43, 217.43, 217.43);--quarto-scss-export-body-contrast-bg: #222;--quarto-scss-export-body-contrast-color: #fff;--quarto-scss-export-navbar-fg: #dee2e6;--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: #dee2e6;--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(222, 226, 230, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(222, 226, 230, 0.75);--quarto-scss-export-sidebar-bg: rgb(111.35, 111.35, 111.35);--quarto-scss-export-sidebar-fg: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-title-block-color: #fff;--quarto-scss-export-title-block-contast-color: #222;--quarto-scss-export-footer-bg: #222;--quarto-scss-export-footer-fg: rgb(137.87, 137.87, 137.87);--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: rgb(144.5, 144.5, 144.5);--quarto-scss-export-table-group-separator-color-lighter: rgb(78.2, 78.2, 78.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(215, 222, 229.4);--quarto-scss-export-blue-200: rgb(175, 189, 203.8);--quarto-scss-export-blue-300: rgb(135, 156, 178.2);--quarto-scss-export-blue-400: rgb(95, 123, 152.6);--quarto-scss-export-blue-500: #375a7f;--quarto-scss-export-blue-600: rgb(44, 72, 101.6);--quarto-scss-export-blue-700: rgb(33, 54, 76.2);--quarto-scss-export-blue-800: rgb(22, 36, 50.8);--quarto-scss-export-blue-900: rgb(11, 18, 25.4);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(204, 241.6, 232);--quarto-scss-export-green-200: rgb(153, 228.2, 209);--quarto-scss-export-green-300: rgb(102, 214.8, 186);--quarto-scss-export-green-400: rgb(51, 201.4, 163);--quarto-scss-export-green-500: #00bc8c;--quarto-scss-export-green-600: rgb(0, 150.4, 112);--quarto-scss-export-green-700: rgb(0, 112.8, 84);--quarto-scss-export-green-800: rgb(0, 75.2, 56);--quarto-scss-export-green-900: rgb(0, 37.6, 28);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: rgb(67.15, 67.15, 67.15);--quarto-scss-export-primary-text-emphasis: rgb(22, 36, 50.8);--quarto-scss-export-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--quarto-scss-export-success-text-emphasis: rgb(0, 75.2, 56);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #444;--quarto-scss-export-dark-text-emphasis: #444;--quarto-scss-export-primary-bg-subtle: rgb(215, 222, 229.4);--quarto-scss-export-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--quarto-scss-export-success-bg-subtle: rgb(204, 241.6, 232);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(175, 189, 203.8);--quarto-scss-export-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--quarto-scss-export-success-border-subtle: rgb(153, 228.2, 209);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ebebeb;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-secondary-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-body-secondary-bg: #ebebeb;--quarto-scss-export-body-tertiary-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #375a7f;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ebebeb;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #fff;--quarto-scss-export-table-bg: #222;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #fff;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #fff;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #fff;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-btn-color: #fff;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #00bc8c;--quarto-scss-export-btn-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ebebeb;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-input-plaintext-color: #fff;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-focus-border: rgb(155, 172.5, 191);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #375a7f;--quarto-scss-export-form-check-input-checked-border-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-border-color: #375a7f;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(155, 172.5, 191);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-border-color: #adb5bd;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-bg: #ebebeb;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #adb5bd;--quarto-scss-export-form-select-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #375a7f;--quarto-scss-export-form-range-thumb-active-bg: rgb(195, 205.5, 216.6);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #00bc8c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #00bc8c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #00bc8c;--quarto-scss-export-form-valid-border-color: #00bc8c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #00bc8c;--quarto-scss-export-nav-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-nav-tabs-link-active-bg: #222;--quarto-scss-export-nav-pills-link-active-bg: #375a7f;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #fff;--quarto-scss-export-dropdown-link-active-bg: #375a7f;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #375a7f;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(0, 150.4, 112);--quarto-scss-export-pagination-focus-bg: #ebebeb;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-accordion-color: #fff;--quarto-scss-export-accordion-bg: #222;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #fff;--quarto-scss-export-accordion-button-bg: #222;--quarto-scss-export-accordion-button-active-bg: rgb(215, 222, 229.4);--quarto-scss-export-accordion-button-active-color: rgb(22, 36, 50.8);--quarto-scss-export-accordion-button-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-accordion-icon-color: #fff;--quarto-scss-export-accordion-icon-active-color: rgb(22, 36, 50.8);--quarto-scss-export-tooltip-color: #222;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-body-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #375a7f;--quarto-scss-export-list-group-active-bg: #375a7f;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #375a7f;--quarto-scss-export-list-group-disabled-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-active-color: #fff;--quarto-scss-export-thumbnail-bg: #222;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-bg-color: #222;--quarto-scss-export-offcanvas-color: #fff;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #222;--quarto-scss-export-kbd-bg: #fff;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-bslib-page-sidebar-title-bg: #375a7f;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-sidebar-hover-color: rgba(252.45, 254.33, 253.85, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(253.5635, 253.5635, 253.5635, 0.75);--quarto-scss-export-valuebox-bg-primary: #375a7f;--quarto-scss-export-valuebox-bg-success: #00bc8c;--quarto-scss-export-valuebox-bg-info: #3498db;--quarto-scss-export-valuebox-bg-warning: #f39c12;--quarto-scss-export-valuebox-bg-danger: #e74c3c;--quarto-scss-export-mermaid-bg-color: #222;--quarto-scss-export-mermaid-node-fg-color: #fff;--quarto-scss-export-mermaid-fg-color: #fff;--quarto-scss-export-mermaid-fg-color--lighter: white;--quarto-scss-export-mermaid-fg-color--lightest: white;--quarto-scss-export-mermaid-label-bg-color: #222;--quarto-scss-export-mermaid-label-fg-color: #375a7f;--quarto-scss-export-mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--quarto-scss-export-callout-color-note: #375a7f;--quarto-scss-export-callout-color-tip: #00bc8c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-dark-aac4a5c125d2d3021b645ec9387c1b20.min.css b/_site/site_libs/bootstrap/bootstrap-dark-aac4a5c125d2d3021b645ec9387c1b20.min.css deleted file mode 100644 index 70425d0..0000000 --- a/_site/site_libs/bootstrap/bootstrap-dark-aac4a5c125d2d3021b645ec9387c1b20.min.css +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;1,400&display=swap";:root,[data-bs-theme=light]{--bs-blue: #375a7f;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #e83e8c;--bs-red: #e74c3c;--bs-orange: #fd7e14;--bs-yellow: #f39c12;--bs-green: #00bc8c;--bs-teal: #20c997;--bs-cyan: #3498db;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #ebebeb;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #444;--bs-gray-800: #343a40;--bs-gray-900: #222;--bs-default: rgb(67.15, 67.15, 67.15);--bs-primary: #375a7f;--bs-secondary: rgb(67.15, 67.15, 67.15);--bs-success: #00bc8c;--bs-info: #3498db;--bs-warning: #f39c12;--bs-danger: #e74c3c;--bs-light: rgb(111.35, 111.35, 111.35);--bs-dark: rgb(45.05, 45.05, 45.05);--bs-default-rgb: 67, 67, 67;--bs-primary-rgb: 55, 90, 127;--bs-secondary-rgb: 67, 67, 67;--bs-success-rgb: 0, 188, 140;--bs-info-rgb: 52, 152, 219;--bs-warning-rgb: 243, 156, 18;--bs-danger-rgb: 231, 76, 60;--bs-light-rgb: 111, 111, 111;--bs-dark-rgb: 45, 45, 45;--bs-primary-text-emphasis: rgb(22, 36, 50.8);--bs-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--bs-success-text-emphasis: rgb(0, 75.2, 56);--bs-info-text-emphasis: rgb(20.8, 60.8, 87.6);--bs-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--bs-danger-text-emphasis: rgb(92.4, 30.4, 24);--bs-light-text-emphasis: #444;--bs-dark-text-emphasis: #444;--bs-primary-bg-subtle: rgb(215, 222, 229.4);--bs-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--bs-success-bg-subtle: rgb(204, 241.6, 232);--bs-info-bg-subtle: rgb(214.4, 234.4, 247.8);--bs-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--bs-danger-bg-subtle: rgb(250.2, 219.2, 216);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(175, 189, 203.8);--bs-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--bs-success-border-subtle: rgb(153, 228.2, 209);--bs-info-border-subtle: rgb(173.8, 213.8, 240.6);--bs-warning-border-subtle: rgb(250.2, 215.4, 160.2);--bs-danger-border-subtle: rgb(245.4, 183.4, 177);--bs-light-border-subtle: #ebebeb;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #fff;--bs-body-color-rgb: 255, 255, 255;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(255, 255, 255, 0.75);--bs-secondary-color-rgb: 255, 255, 255;--bs-secondary-bg: #ebebeb;--bs-secondary-bg-rgb: 235, 235, 235;--bs-tertiary-color: rgba(255, 255, 255, 0.5);--bs-tertiary-color-rgb: 255, 255, 255;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #00bc8c;--bs-link-color-rgb: 0, 188, 140;--bs-link-decoration: underline;--bs-link-hover-color: rgb(0, 150.4, 112);--bs-link-hover-color-rgb: 0, 150, 112;--bs-code-color: #7d12ba;--bs-highlight-bg: rgb(252.6, 235.2, 207.6);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(55, 90, 127, 0.25);--bs-form-valid-color: #00bc8c;--bs-form-valid-border-color: #00bc8c;--bs-form-invalid-color: #e74c3c;--bs-form-invalid-border-color: #e74c3c}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #222;--bs-body-bg-rgb: 34, 34, 34;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b2e31;--bs-tertiary-bg-rgb: 43, 46, 49;--bs-primary-text-emphasis: rgb(135, 156, 178.2);--bs-secondary-text-emphasis: rgb(142.29, 142.29, 142.29);--bs-success-text-emphasis: rgb(102, 214.8, 186);--bs-info-text-emphasis: rgb(133.2, 193.2, 233.4);--bs-warning-text-emphasis: rgb(247.8, 195.6, 112.8);--bs-danger-text-emphasis: rgb(240.6, 147.6, 138);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(11, 18, 25.4);--bs-secondary-bg-subtle: rgb(13.43, 13.43, 13.43);--bs-success-bg-subtle: rgb(0, 37.6, 28);--bs-info-bg-subtle: rgb(10.4, 30.4, 43.8);--bs-warning-bg-subtle: rgb(48.6, 31.2, 3.6);--bs-danger-bg-subtle: rgb(46.2, 15.2, 12);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(33, 54, 76.2);--bs-secondary-border-subtle: rgb(40.29, 40.29, 40.29);--bs-success-border-subtle: rgb(0, 112.8, 84);--bs-info-border-subtle: rgb(31.2, 91.2, 131.4);--bs-warning-border-subtle: rgb(145.8, 93.6, 10.8);--bs-danger-border-subtle: rgb(138.6, 45.6, 36);--bs-light-border-subtle: #444;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(135, 156, 178.2);--bs-link-hover-color: rgb(159, 175.8, 193.56);--bs-link-color-rgb: 135, 156, 178;--bs-link-hover-color-rgb: 159, 176, 194;--bs-code-color: white;--bs-border-color: #444;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(102, 214.8, 186);--bs-form-valid-border-color: rgb(102, 214.8, 186);--bs-form-invalid-color: rgb(240.6, 147.6, 138);--bs-form-invalid-border-color: rgb(240.6, 147.6, 138)}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #ebebeb}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:inherit;background-color:#f8f9fa;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6);border-radius:.25rem}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;border-radius:.25rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#222;background-color:#fff;border-radius:.2em}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:hsla(0,0%,100%,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"β€”Β "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#222;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:hsla(0,0%,100%,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}body.quarto-light .dark-content{display:none}body.quarto-dark .light-content{display:none}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #fff;--bs-table-bg: #222;--bs-table-border-color: rgb(67.15, 67.15, 67.15);--bs-table-accent-bg: transparent;--bs-table-striped-color: #fff;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #fff;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #fff;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid rgb(144.5,144.5,144.5)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #fff;--bs-table-bg: #375a7f;--bs-table-border-color: rgb(75, 106.5, 139.8);--bs-table-striped-bg: rgb(65, 98.25, 133.4);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(75, 106.5, 139.8);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(70, 102.375, 136.6);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #fff;--bs-table-bg: rgb(67.15, 67.15, 67.15);--bs-table-border-color: rgb(85.935, 85.935, 85.935);--bs-table-striped-bg: rgb(76.5425, 76.5425, 76.5425);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(85.935, 85.935, 85.935);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(81.23875, 81.23875, 81.23875);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #fff;--bs-table-bg: #00bc8c;--bs-table-border-color: rgb(25.5, 194.7, 151.5);--bs-table-striped-bg: rgb(12.75, 191.35, 145.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(25.5, 194.7, 151.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(19.125, 193.025, 148.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #fff;--bs-table-bg: #3498db;--bs-table-border-color: rgb(72.3, 162.3, 222.6);--bs-table-striped-bg: rgb(62.15, 157.15, 220.8);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(72.3, 162.3, 222.6);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(67.225, 159.725, 221.7);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #fff;--bs-table-bg: #f39c12;--bs-table-border-color: rgb(244.2, 165.9, 41.7);--bs-table-striped-bg: rgb(243.6, 160.95, 29.85);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(244.2, 165.9, 41.7);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(243.9, 163.425, 35.775);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #fff;--bs-table-bg: #e74c3c;--bs-table-border-color: rgb(233.4, 93.9, 79.5);--bs-table-striped-bg: rgb(232.2, 84.95, 69.75);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(233.4, 93.9, 79.5);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(232.8, 89.425, 74.625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #fff;--bs-table-bg: rgb(111.35, 111.35, 111.35);--bs-table-border-color: rgb(125.715, 125.715, 125.715);--bs-table-striped-bg: rgb(118.5325, 118.5325, 118.5325);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(125.715, 125.715, 125.715);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(122.12375, 122.12375, 122.12375);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: rgb(45.05, 45.05, 45.05);--bs-table-border-color: rgb(66.045, 66.045, 66.045);--bs-table-striped-bg: rgb(55.5475, 55.5475, 55.5475);--bs-table-striped-color: #fff;--bs-table-active-bg: rgb(66.045, 66.045, 66.045);--bs-table-active-color: #fff;--bs-table-hover-bg: rgb(60.79625, 60.79625, 60.79625);--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:hsla(0,0%,100%,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:rgb(45.05,45.05,45.05);background-color:#fff;border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:hsl(0,0%,35%);opacity:1}.form-control:disabled{background-color:#ebebeb;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:hsl(0,0%,43.6666666667%);background-color:rgb(67.15,67.15,67.15);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:rgb(54.4,54.4,54.4)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.25rem}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:rgb(45.05,45.05,45.05);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #adb5bd;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:hsl(0,0%,35%);background-color:#ebebeb}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 rgb(45.05,45.05,45.05)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.2em}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:none;print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:rgb(155,172.5,191);outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#375a7f;border-color:#375a7f}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#375a7f;border-color:#375a7f;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgb%28155, 172.5, 191%29'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #222,0 0 0 .25rem rgba(55,90,127,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#375a7f;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:rgb(195,205.5,216.6)}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:hsla(0,0%,100%,.75)}.form-range:disabled::-moz-range-thumb{background-color:hsla(0,0%,100%,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:.25rem}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#ebebeb}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:hsl(0,0%,43.6666666667%);text-align:center;white-space:nowrap;background-color:rgb(67.15,67.15,67.15);border:1px solid #adb5bd;border-radius:.25rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:.2em}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#00bc8c}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#00bc8c;border-radius:.25rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#00bc8c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#00bc8c}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300bc8c' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#00bc8c;box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#00bc8c}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#00bc8c}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(0,188,140,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#00bc8c}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#e74c3c}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#e74c3c;border-radius:.25rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#e74c3c;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#e74c3c}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23e74c3c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23e74c3c' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#e74c3c;box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#e74c3c}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#e74c3c}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(231,76,60,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#e74c3c}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #fff;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(46.75, 76.5, 107.95);--bs-btn-hover-border-color: rgb(44, 72, 101.6);--bs-btn-focus-shadow-rgb: 85, 115, 146;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(44, 72, 101.6);--bs-btn-active-border-color: rgb(41.25, 67.5, 95.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #375a7f;--bs-btn-disabled-border-color: #375a7f}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(57.0775, 57.0775, 57.0775);--bs-btn-hover-border-color: rgb(53.72, 53.72, 53.72);--bs-btn-focus-shadow-rgb: 95, 95, 95;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(53.72, 53.72, 53.72);--bs-btn-active-border-color: rgb(50.3625, 50.3625, 50.3625);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(0, 159.8, 119);--bs-btn-hover-border-color: rgb(0, 150.4, 112);--bs-btn-focus-shadow-rgb: 38, 198, 157;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(0, 150.4, 112);--bs-btn-active-border-color: #008d69;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #00bc8c;--bs-btn-disabled-border-color: #00bc8c}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(44.2, 129.2, 186.15);--bs-btn-hover-border-color: rgb(41.6, 121.6, 175.2);--bs-btn-focus-shadow-rgb: 82, 167, 224;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(41.6, 121.6, 175.2);--bs-btn-active-border-color: rgb(39, 114, 164.25);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3498db;--bs-btn-disabled-border-color: #3498db}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(206.55, 132.6, 15.3);--bs-btn-hover-border-color: rgb(194.4, 124.8, 14.4);--bs-btn-focus-shadow-rgb: 245, 171, 54;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(194.4, 124.8, 14.4);--bs-btn-active-border-color: rgb(182.25, 117, 13.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #f39c12;--bs-btn-disabled-border-color: #f39c12}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(196.35, 64.6, 51);--bs-btn-hover-border-color: rgb(184.8, 60.8, 48);--bs-btn-focus-shadow-rgb: 235, 103, 89;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(184.8, 60.8, 48);--bs-btn-active-border-color: rgb(173.25, 57, 45);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #e74c3c;--bs-btn-disabled-border-color: #e74c3c}.btn-light{--bs-btn-color: #fff;--bs-btn-bg: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(94.6475, 94.6475, 94.6475);--bs-btn-hover-border-color: rgb(89.08, 89.08, 89.08);--bs-btn-focus-shadow-rgb: 133, 133, 133;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(89.08, 89.08, 89.08);--bs-btn-active-border-color: rgb(83.5125, 83.5125, 83.5125);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35)}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(76.5425, 76.5425, 76.5425);--bs-btn-hover-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-focus-shadow-rgb: 77, 77, 77;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(87.04, 87.04, 87.04);--bs-btn-active-border-color: rgb(66.045, 66.045, 66.045);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05)}.btn-outline-default{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #375a7f;--bs-btn-border-color: #375a7f;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #375a7f;--bs-btn-hover-border-color: #375a7f;--bs-btn-focus-shadow-rgb: 55, 90, 127;--bs-btn-active-color: #fff;--bs-btn-active-bg: #375a7f;--bs-btn-active-border-color: #375a7f;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #375a7f;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #375a7f;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(67.15, 67.15, 67.15);--bs-btn-hover-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-focus-shadow-rgb: 67, 67, 67;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(67.15, 67.15, 67.15);--bs-btn-active-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #00bc8c;--bs-btn-border-color: #00bc8c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #00bc8c;--bs-btn-hover-border-color: #00bc8c;--bs-btn-focus-shadow-rgb: 0, 188, 140;--bs-btn-active-color: #fff;--bs-btn-active-bg: #00bc8c;--bs-btn-active-border-color: #00bc8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #00bc8c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #00bc8c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #3498db;--bs-btn-border-color: #3498db;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3498db;--bs-btn-hover-border-color: #3498db;--bs-btn-focus-shadow-rgb: 52, 152, 219;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3498db;--bs-btn-active-border-color: #3498db;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3498db;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3498db;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f39c12;--bs-btn-border-color: #f39c12;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #f39c12;--bs-btn-hover-border-color: #f39c12;--bs-btn-focus-shadow-rgb: 243, 156, 18;--bs-btn-active-color: #fff;--bs-btn-active-bg: #f39c12;--bs-btn-active-border-color: #f39c12;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f39c12;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f39c12;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #e74c3c;--bs-btn-border-color: #e74c3c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #e74c3c;--bs-btn-hover-border-color: #e74c3c;--bs-btn-focus-shadow-rgb: 231, 76, 60;--bs-btn-active-color: #fff;--bs-btn-active-bg: #e74c3c;--bs-btn-active-border-color: #e74c3c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #e74c3c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #e74c3c;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: rgb(111.35, 111.35, 111.35);--bs-btn-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(111.35, 111.35, 111.35);--bs-btn-hover-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-focus-shadow-rgb: 111, 111, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(111.35, 111.35, 111.35);--bs-btn-active-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(111.35, 111.35, 111.35);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(111.35, 111.35, 111.35);--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: rgb(45.05, 45.05, 45.05);--bs-btn-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-hover-color: #fff;--bs-btn-hover-bg: rgb(45.05, 45.05, 45.05);--bs-btn-hover-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-focus-shadow-rgb: 45, 45, 45;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(45.05, 45.05, 45.05);--bs-btn-active-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: rgb(45.05, 45.05, 45.05);--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: rgb(45.05, 45.05, 45.05);--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #00bc8c;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(0, 150.4, 112);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(0, 150.4, 112);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 198, 157;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #fff;--bs-dropdown-bg: #222;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #fff;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-link-hover-bg: #375a7f;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgb(67.15, 67.15, 67.15);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgb(67.15, 67.15, 67.15);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #375a7f;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 2rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #00bc8c;--bs-nav-link-hover-color: rgb(0, 150.4, 112);--bs-nav-link-disabled-color: rgb(111.35, 111.35, 111.35);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(55,90,127,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: rgb(67.15, 67.15, 67.15);--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;--bs-nav-tabs-link-active-color: #fff;--bs-nav-tabs-link-active-bg: #222;--bs-nav-tabs-link-active-border-color: rgb(67.15, 67.15, 67.15) rgb(67.15, 67.15, 67.15) transparent;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #375a7f}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 1rem;--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #dee2e6;--bs-navbar-hover-color: rgba(255, 255, 255, 0.8);--bs-navbar-disabled-color: rgba(222, 226, 230, 0.75);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #dee2e6;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(222, 226, 230, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dee2e6' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: rgb(45.05, 45.05, 45.05);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #fff;--bs-accordion-bg: #222;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #fff;--bs-accordion-btn-bg: #222;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%2822, 36, 50.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: rgb(155, 172.5, 191);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(22, 36, 50.8);--bs-accordion-active-bg: rgb(215, 222, 229.4)}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28135, 156, 178.2%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0.75rem;--bs-breadcrumb-padding-y: 0.375rem;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: rgb(67.15, 67.15, 67.15);--bs-breadcrumb-border-radius: 0.25rem;--bs-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(255, 255, 255, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #fff;--bs-pagination-bg: #00bc8c;--bs-pagination-border-width: 0;--bs-pagination-border-color: transparent;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #fff;--bs-pagination-hover-bg: rgb(0, 239, 177.9787234043);--bs-pagination-hover-border-color: transparent;--bs-pagination-focus-color: rgb(0, 150.4, 112);--bs-pagination-focus-bg: #ebebeb;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: rgb(0, 239, 177.9787234043);--bs-pagination-active-border-color: transparent;--bs-pagination-disabled-color: #fff;--bs-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--bs-pagination-disabled-border-color: transparent;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0*-1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: rgb(67.15, 67.15, 67.15);--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #375a7f;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #fff;--bs-list-group-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-border-color: rgb(67.15, 67.15, 67.15);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(255, 255, 255, 0.75);--bs-list-group-action-hover-color: #fff;--bs-list-group-action-hover-bg: rgb(67.15, 67.15, 67.15);--bs-list-group-action-active-color: #fff;--bs-list-group-action-active-bg: #222;--bs-list-group-disabled-color: rgba(255, 255, 255, 0.75);--bs-list-group-disabled-bg: rgb(45.05, 45.05, 45.05);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #375a7f;--bs-list-group-active-border-color: #375a7f;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #fff;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.4;--bs-btn-close-hover-opacity: 1;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(55, 90, 127, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgb(67.15, 67.15, 67.15);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(255, 255, 255, 0.75);--bs-toast-header-bg: rgb(45.05, 45.05, 45.05);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: rgb(45.05, 45.05, 45.05);--bs-modal-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: rgb(67.15, 67.15, 67.15);--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #222;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: rgb(45.05, 45.05, 45.05);--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: rgb(67.15, 67.15, 67.15);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #fff;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #fff;--bs-offcanvas-bg: #222;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgb(67.15, 67.15, 67.15);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#fff !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(44, 72, 102, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(44, 72, 102, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(54, 54, 54, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(54, 54, 54, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(0, 150, 112, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 150, 112, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(42, 122, 175, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 122, 175, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(194, 125, 14, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(194, 125, 14, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(185, 61, 48, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(185, 61, 48, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(89, 89, 89, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(89, 89, 89, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(36, 36, 36, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(36, 36, 36, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:hsla(0,0%,100%,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#fff}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #375a7f;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #6f42c1;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #e74c3c;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #f39c12;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #00bc8c;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #3498db;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #3498db;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-default{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #375a7f}.bg-primary{--bslib-color-bg: #375a7f;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: rgb(67.15, 67.15, 67.15)}.bg-secondary{--bslib-color-bg: rgb(67.15, 67.15, 67.15);--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #00bc8c}.bg-success{--bslib-color-bg: #00bc8c;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #3498db}.bg-info{--bslib-color-bg: #3498db;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #f39c12}.bg-warning{--bslib-color-bg: #f39c12;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #e74c3c}.bg-danger{--bslib-color-bg: #e74c3c;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: rgb(111.35, 111.35, 111.35)}.bg-light{--bslib-color-bg: rgb(111.35, 111.35, 111.35);--bslib-color-fg: #fff}.text-dark{--bslib-color-fg: rgb(45.05, 45.05, 45.05)}.bg-dark{--bslib-color-bg: rgb(45.05, 45.05, 45.05);--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(73.8, 60.4, 173);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(73.8,60.4,173);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(77.4, 80.4, 153.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(77.4,80.4,153.4);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.8, 78.8, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(125.8,78.8,132.2);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(125.4, 84.4, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(125.4,84.4,100.2);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(134.2, 104.4, 84.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(134.2,104.4,84.2);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(130.2, 116.4, 83.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(130.2,116.4,83.4);color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(33, 129.2, 132.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(33,129.2,132.2);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(45.8, 134.4, 136.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(45.8,134.4,136.6);color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.8, 114.8, 163.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #375a7f var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(53.8,114.8,163.8);color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(83.2, 45.6, 196);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(83.2,45.6,196);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(154, 34.4, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(154,34.4,201.2);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(153.6, 40, 169.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(153.6,40,169.2);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.4, 72, 152.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(158.4,72,152.4);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(61.2, 84.8, 201.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(61.2,84.8,201.2);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(82, 70.4, 232.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(82,70.4,232.8);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(88.6, 75.6, 166.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(88.6,75.6,166.6);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 64.4, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(159.4,64.4,171.8);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159, 70, 139.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(159,70,139.8);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(163.8, 102, 123);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(163.8,102,123);color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(66.6, 114.8, 171.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(66.6,114.8,171.8);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(87.4, 100.4, 203.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(87.4,100.4,203.4);color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(161.2, 73.2, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(161.2,73.2,134.8);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(180, 43.6, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(180,43.6,180.8);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183.6, 63.6, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183.6,63.6,161.2);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.6, 67.6, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(231.6,67.6,108);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(240.4, 87.6, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(240.4,87.6,92);color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(236.4, 99.6, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(236.4,99.6,91.2);color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(139.2, 112.4, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(139.2,112.4,140);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(152, 117.6, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(152,117.6,144.4);color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160, 98, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(160,98,171.6);color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(160.6, 81.6, 86.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(160.6,81.6,86.8);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(179.4, 52, 132.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(179.4,52,132.8);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(183, 72, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(183,72,113.2);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(231.4, 70.4, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(231.4,70.4,92);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(239.8, 96, 44);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(239.8,96,44);color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(235.8, 108, 43.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(235.8,108,43.2);color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(138.6, 120.8, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(138.6,120.8,92);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.4, 126, 96.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(151.4,126,96.4);color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(159.4, 106.4, 123.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #e74c3c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(159.4,106.4,123.6);color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(173.8, 111.6, 62.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(173.8,111.6,62.8);color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.6, 100.4, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(244.6,100.4,68);color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(244.2, 106, 36);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(244.2,106,36);color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(249, 138, 19.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(249,138,19.2);color:#fff}.bg-gradient-orange-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(151.8, 150.8, 68);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(151.8,150.8,68);color:#fff}.bg-gradient-orange-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#fff}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(172.6, 136.4, 99.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(172.6,136.4,99.6);color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(167.8, 129.6, 61.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(167.8,129.6,61.6);color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(186.6, 100, 107.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(186.6,100,107.6);color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(190.2, 120, 88);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(190.2,120,88);color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.6, 118.4, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(238.6,118.4,66.8);color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(238.2, 124, 34.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(238.2,124,34.8);color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(247, 144, 18.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(247,144,18.8);color:#fff}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(145.8, 168.8, 66.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(145.8,168.8,66.8);color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(158.6, 174, 71.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(158.6,174,71.2);color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(166.6, 154.4, 98.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #f39c12 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(166.6,154.4,98.4);color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(22, 148.8, 134.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(22,148.8,134.8);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40.8, 119.2, 180.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(40.8,119.2,180.8);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44.4, 139.2, 161.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(44.4,139.2,161.2);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.8, 137.6, 140);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(92.8,137.6,140);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(92.4, 143.2, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(92.4,143.2,108);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(101.2, 163.2, 92);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(101.2,163.2,92);color:#fff}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(97.2, 175.2, 91.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(97.2,175.2,91.2);color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(12.8, 193.2, 144.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(12.8,193.2,144.4);color:#fff}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(20.8, 173.6, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #00bc8c var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(20.8,173.6,171.6);color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(41.2, 156.6, 141.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(41.2,156.6,141.4);color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(112, 145.4, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(112,145.4,146.6);color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(111.6, 151, 114.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(111.6,151,114.6);color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#fff}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(116.4, 183, 97.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(116.4,183,97.8);color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(19.2, 195.8, 146.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(19.2,195.8,146.6);color:#fff}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: rgb(40, 181.4, 178.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3498db var(--bg-gradient-end, 180%)) rgb(40,181.4,178.2);color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: rgb(53.2, 127.2, 182.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #375a7f var(--bg-gradient-end, 180%)) rgb(53.2,127.2,182.2);color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: rgb(72, 97.6, 228.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(72,97.6,228.2);color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: rgb(75.6, 117.6, 208.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(75.6,117.6,208.6);color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: rgb(124, 116, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) rgb(124,116,187.4);color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: rgb(123.6, 121.6, 155.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #e74c3c var(--bg-gradient-end, 180%)) rgb(123.6,121.6,155.4);color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: rgb(132.4, 141.6, 139.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(132.4,141.6,139.4);color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: rgb(128.4, 153.6, 138.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #f39c12 var(--bg-gradient-end, 180%)) rgb(128.4,153.6,138.6);color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: rgb(31.2, 166.4, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #00bc8c var(--bg-gradient-end, 180%)) rgb(31.2,166.4,187.4);color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: rgb(44, 171.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #3498db var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(44,171.6,191.8);color:#fff}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #222);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:"Β "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:"Β "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}:root{--bslib-page-sidebar-title-bg: #375a7f;--bslib-page-sidebar-title-color: #fff}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#dee2e6}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#fff}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:hsl(0,0%,99.4366666667%);padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:hsl(0,0%,99.4366666667%)}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(252.45,254.33,253.85,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:hsl(0,0%,79.4366666667%)}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:hsl(0,0%,99.4366666667%)}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(252.45,254.33,253.85,.8)}div.sidebar-item-container.disabled{color:hsla(0,0%,99.4366666667%,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:rgb(252.45,254.33,253.85)}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:hsl(0,0%,43.6666666667%)}.sidebar.sidebar-navigation:not(.rollup){border-right:1px solid rgb(67.15,67.15,67.15) !important}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid rgb(67.15,67.15,67.15)}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:hsl(0,0%,43.6666666667%);border-bottom:1px solid rgb(67.15,67.15,67.15)}.quarto-banner nav.quarto-secondary-nav{background-color:#375a7f;color:#dee2e6;border-top:1px solid rgb(67.15,67.15,67.15)}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,100%,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:hsla(0,0%,40%,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:rgb(0,150.4,112)}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#222}body.nav-fixed{padding-top:82px}body .nav-footer{border-top:1px solid rgb(67.15,67.15,67.15)}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:hsl(0,0%,54.0666666667%)}.nav-footer a{color:hsl(0,0%,54.0666666667%)}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#dee2e6;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:hsl(0,0%,99.4366666667%);border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#222;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#222;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#dee2e6;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#dee2e6;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #adb5bd;border-radius:.25rem;color:rgb(45.05,45.05,45.05);display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:rgb(45.05,45.05,45.05);opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:rgb(45.05,45.05,45.05);font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:rgb(45.05,45.05,45.05);opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:rgb(45.05,45.05,45.05);opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:rgb(45.05,45.05,45.05);opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #adb5bd 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:rgb(46.75,46.75,46.75);padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#375a7f}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:rgb(42.6703296703,69.8241758242,98.5296703297)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:rgb(45.05,45.05,45.05)}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#000}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:rgb(45.05,45.05,45.05);color:#fff}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:rgb(45.05,45.05,45.05);border-color:#adb5bd;color:#fff}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #adb5bd}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#dee2e6}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:hsl(0,0%,99.4366666667%)}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(34,34,34,.65);width:90%;bottom:0;box-shadow:rgba(173,181,189,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#222;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#222;border-bottom:1px solid #adb5bd;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#fff;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(55,90,127,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:hsla(0,0%,100%,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#375a7f !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:rgb(67.15,67.15,67.15) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#00bc8c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:#3498db !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#f39c12 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:#e74c3c !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:hsl(0,0%,43.6666666667%) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:rgb(45.05,45.05,45.05) !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879);border-bottom:solid 1px rgb(70.4120879121,115.2197802198,162.5879120879)}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:rgb(67.3296703297,110.1758241758,155.4703296703)}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#dee2e6}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#fff}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#fff}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px hsl(0,0%,75.2666666667%);padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#222;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#222;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#fff}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:rgb(45.05,45.05,45.05)}.tableFloatingHeaderOriginal{background-color:rgb(45.05,45.05,45.05);position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.listing-actions-group .form-select,.listing-actions-group .form-control{background-color:#222;color:#fff}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#fff;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:Lato,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid #6c757d 1px;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#00bc8c}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#00bc8c}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#00bc8c}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#fff;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#00bc8c}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#222;border:solid 1px #dee2e6;border-radius:.25rem;color:#fff;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#222}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#222}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#222;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#222}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#222;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#fff}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! -* -* ansi colors from IPython notebook's -* -* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since -* that seems to be what ansi_up emits -* -*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #222;--quarto-body-color: #fff;--quarto-text-muted: #6c757d;--quarto-border-color: rgb(67.15, 67.15, 67.15);--quarto-border-width: 1px;--quarto-border-radius: 0.25rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #222;--mermaid-edge-color: rgb(67.15, 67.15, 67.15);--mermaid-node-fg-color: #fff;--mermaid-fg-color: #fff;--mermaid-fg-color--lighter: white;--mermaid-fg-color--lightest: white;--mermaid-font-family: Lato, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;--mermaid-label-bg-color: #222;--mermaid-label-fg-color: #375a7f;--mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--mermaid-node-fg-color: #fff}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 3.5vw [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 3.5vw [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(950px - 3em)) [body-content-end] 3em [body-end] 5vw [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(5vw, 10vw) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 17.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(5vw, 10vw) [page-start-inset] 5vw [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 5vw [page-start-inset] minmax(5vw, 15vw) [body-start-outset] 5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(2.5vw, 5vw) [page-start-inset] minmax(5vw, 15vw) [body-start-outset] minmax(2.5vw, 5vw) [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1350px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 3.5vw [page-start-inset] minmax(0vw, 14.5vw) [body-start-outset] 3.5vw [body-start] 1.5em [body-content-start] minmax(450px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1100px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(900px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#222}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#222}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#222}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#222}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#222}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#222}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#222}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#222}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#222}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>section:first-of-type>h2:first-child,main.content>section:first-of-type>.h2:first-child{margin-top:0}h2,.h2{border-bottom:1px solid rgb(67.15,67.15,67.15);padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(0,0%,75%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(0,0%,75%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(0,0%,75%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(0,0%,75%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:rgb(67.15,67.15,67.15) 1px solid;border-right:rgb(67.15,67.15,67.15) 1px solid;border-bottom:rgb(67.15,67.15,67.15) 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(67.15,67.15,67.15,.65);border:1px solid rgba(67.15,67.15,67.15,.65);border-radius:.25rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(0,0%,75%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:#f8f9fa;padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:#6c757d;background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:#6c757d;margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#00bc8c}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#00bc8c}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #ebebeb;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #00bc8c;color:#00bc8c !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#00bc8c !important}kbd,.kbd{color:#fff;background-color:rgb(74.4,74.7,75);border:1px solid;border-radius:5px;border-color:rgb(67.15,67.15,67.15)}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.25rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout.callout-style-default{border-left:5px solid;border-right:1px solid rgb(67.15,67.15,67.15);border-top:1px solid rgb(67.15,67.15,67.15);border-bottom:1px solid rgb(67.15,67.15,67.15)}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:#6c757d}div.callout.callout-style-default>.callout-header{background-color:#6c757d}div.callout-note.callout{border-left-color:#375a7f}div.callout-note.callout-style-default>.callout-header{background-color:rgb(16.5,27,38.1)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#00bc8c}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(0,56.4,42)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#f39c12}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(72.9,46.8,5.4)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(75.9,37.8,6)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#e74c3c}div.callout-important.callout-style-default>.callout-header{background-color:rgb(69.3,22.8,18)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#375a7f;color:#dee2e6}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:#dee2e6;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:rgb(39.1,39.1,39.1)}#quarto-content .quarto-sidebar-toggle-title{color:#fff}.quarto-sidebar-toggle-icon{color:#dee2e6;margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid #dee2e6 1px}.quarto-sidebar-toggle-contents{background-color:#222;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid #dee2e6}#quarto-appendix.default{background-color:#222;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px #dee2e6;margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(217.43, 217.43, 217.43);--bs-btn-bg: rgb(67.15, 67.15, 67.15);--bs-btn-border-color: rgb(67.15, 67.15, 67.15);--bs-btn-hover-color: rgb(217.43, 217.43, 217.43);--bs-btn-hover-bg: rgb(95.3275, 95.3275, 95.3275);--bs-btn-hover-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-focus-shadow-rgb: 90, 90, 90;--bs-btn-active-color: #fff;--bs-btn-active-bg: rgb(104.72, 104.72, 104.72);--bs-btn-active-border-color: rgb(85.935, 85.935, 85.935);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: rgb(67.15, 67.15, 67.15);--bs-btn-disabled-border-color: rgb(67.15, 67.15, 67.15)}nav.quarto-secondary-nav.color-navbar{background-color:#375a7f;color:#dee2e6}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:#dee2e6}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! dark */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#222}.code-annotation-gutter{background-color:rgba(67.15,67.15,67.15,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:hsl(0,0%,90%);border:solid hsl(0,0%,90%) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#222;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#434343;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#222}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#222}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#222}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#222}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#222}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#222}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:hsl(0,0%,43.6666666667%);z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(78.2,78.2,78.2);border-bottom:1px solid rgb(78.2,78.2,78.2)}.table>thead{border-top-width:0;border-bottom:1px solid rgb(144.5,144.5,144.5)}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:#dee2e6;background:#375a7f}.quarto-title-banner a{color:#dee2e6}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:#dee2e6}.quarto-title-banner .code-tools-button{color:rgb(163.9655172414,175,186.0344827586)}.quarto-title-banner .code-tools-button:hover{color:#dee2e6}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.25rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}.blockquote-footer{color:hsl(0,0%,35%)}.form-floating>label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label{color:hsl(0,0%,35%)}.nav-tabs .nav-link,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-pills .nav-link,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover{color:#fff}.breadcrumb a{color:#fff}.pagination a:hover{text-decoration:none}.alert{color:#fff;border:none}.alert a,.alert .alert-link{color:#fff;text-decoration:underline}.alert-default{background-color:rgb(67.15,67.15,67.15)}.alert-primary{background-color:#375a7f}.alert-secondary{background-color:rgb(67.15,67.15,67.15)}.alert-success{background-color:#00bc8c}.alert-info{background-color:#3498db}.alert-warning{background-color:#f39c12}.alert-danger{background-color:#e74c3c}.alert-light{background-color:hsl(0,0%,43.6666666667%)}.alert-dark{background-color:rgb(45.05,45.05,45.05)}.tooltip{--bs-tooltip-bg: var(--bs-tertiary-bg);--bs-tooltip-color: var(--bs-emphasis-color)}:root{--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-card-cap-bg: rgba(52, 58, 64, 0.25);--quarto-scss-export-border-color: #dee2e6;--quarto-scss-export-text-muted: #6c757d;--quarto-scss-export-white: #fff;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-200: #ebebeb;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-700: #444;--quarto-scss-export-gray-900: #222;--quarto-scss-export-black: #000;--quarto-scss-export-blue: #375a7f;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #e83e8c;--quarto-scss-export-red: #e74c3c;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #f39c12;--quarto-scss-export-green: #00bc8c;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #3498db;--quarto-scss-export-body-bg: #222;--quarto-scss-export-body-color: #fff;--quarto-scss-export-primary: #375a7f;--quarto-scss-export-success: #00bc8c;--quarto-scss-export-info: #3498db;--quarto-scss-export-warning: #f39c12;--quarto-scss-export-danger: #e74c3c;--quarto-scss-export-link-color: #00bc8c;--quarto-scss-export-input-bg: #fff;--quarto-scss-export-input-border-color: #adb5bd;--quarto-scss-export-form-check-input-bg: #fff;--quarto-scss-export-form-file-button-hover-bg: rgb(54.4, 54.4, 54.4);--quarto-scss-export-dropdown-bg: #222;--quarto-scss-export-dropdown-link-color: #fff;--quarto-scss-export-dropdown-link-hover-color: #fff;--quarto-scss-export-dropdown-link-hover-bg: #375a7f;--quarto-scss-export-nav-tabs-link-active-color: #fff;--quarto-scss-export-pagination-color: #fff;--quarto-scss-export-pagination-bg: #00bc8c;--quarto-scss-export-pagination-border-color: transparent;--quarto-scss-export-pagination-hover-color: #fff;--quarto-scss-export-pagination-hover-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-hover-border-color: transparent;--quarto-scss-export-pagination-active-bg: rgb(0, 239, 177.9787234043);--quarto-scss-export-pagination-active-border-color: transparent;--quarto-scss-export-pagination-disabled-color: #fff;--quarto-scss-export-pagination-disabled-bg: rgb(0, 111.5, 83.0319148936);--quarto-scss-export-pagination-disabled-border-color: transparent;--quarto-scss-export-list-group-color: #fff;--quarto-scss-export-list-group-action-hover-color: #fff;--quarto-scss-export-list-group-action-active-bg: #222;--quarto-scss-export-btn-close-color: #fff;--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #f8f8f2;--quarto-scss-export-btn-code-copy-color-active: #ffa07a;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-color: #7d12ba;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #00bc8c;--quarto-scss-export-toc-active-border: #00bc8c;--quarto-scss-export-toc-inactive-border: #ebebeb;--quarto-scss-export-navbar-default: #375a7f;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #375a7f;--quarto-scss-export-btn-bg: rgb(67.15, 67.15, 67.15);--quarto-scss-export-btn-fg: rgb(217.43, 217.43, 217.43);--quarto-scss-export-body-contrast-bg: #222;--quarto-scss-export-body-contrast-color: #fff;--quarto-scss-export-navbar-fg: #dee2e6;--quarto-scss-export-navbar-hl: #fff;--quarto-scss-export-navbar-brand: #dee2e6;--quarto-scss-export-navbar-brand-hl: #fff;--quarto-scss-export-navbar-toggler-border-color: rgba(222, 226, 230, 0);--quarto-scss-export-navbar-hover-color: rgba(255, 255, 255, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(222, 226, 230, 0.75);--quarto-scss-export-sidebar-bg: rgb(111.35, 111.35, 111.35);--quarto-scss-export-sidebar-fg: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-title-block-color: #fff;--quarto-scss-export-title-block-contast-color: #222;--quarto-scss-export-footer-bg: #222;--quarto-scss-export-footer-fg: rgb(137.87, 137.87, 137.87);--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: rgb(144.5, 144.5, 144.5);--quarto-scss-export-table-group-separator-color-lighter: rgb(78.2, 78.2, 78.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-sidebar-glass-bg: rgba(102, 102, 102, 0.4);--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #fff;--quarto-scss-export-blue-100: rgb(215, 222, 229.4);--quarto-scss-export-blue-200: rgb(175, 189, 203.8);--quarto-scss-export-blue-300: rgb(135, 156, 178.2);--quarto-scss-export-blue-400: rgb(95, 123, 152.6);--quarto-scss-export-blue-500: #375a7f;--quarto-scss-export-blue-600: rgb(44, 72, 101.6);--quarto-scss-export-blue-700: rgb(33, 54, 76.2);--quarto-scss-export-blue-800: rgb(22, 36, 50.8);--quarto-scss-export-blue-900: rgb(11, 18, 25.4);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(250.4, 216.4, 232);--quarto-scss-export-pink-200: rgb(245.8, 177.8, 209);--quarto-scss-export-pink-300: rgb(241.2, 139.2, 186);--quarto-scss-export-pink-400: rgb(236.6, 100.6, 163);--quarto-scss-export-pink-500: #e83e8c;--quarto-scss-export-pink-600: rgb(185.6, 49.6, 112);--quarto-scss-export-pink-700: rgb(139.2, 37.2, 84);--quarto-scss-export-pink-800: rgb(92.8, 24.8, 56);--quarto-scss-export-pink-900: rgb(46.4, 12.4, 28);--quarto-scss-export-red-100: rgb(250.2, 219.2, 216);--quarto-scss-export-red-200: rgb(245.4, 183.4, 177);--quarto-scss-export-red-300: rgb(240.6, 147.6, 138);--quarto-scss-export-red-400: rgb(235.8, 111.8, 99);--quarto-scss-export-red-500: #e74c3c;--quarto-scss-export-red-600: rgb(184.8, 60.8, 48);--quarto-scss-export-red-700: rgb(138.6, 45.6, 36);--quarto-scss-export-red-800: rgb(92.4, 30.4, 24);--quarto-scss-export-red-900: rgb(46.2, 15.2, 12);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(252.6, 235.2, 207.6);--quarto-scss-export-yellow-200: rgb(250.2, 215.4, 160.2);--quarto-scss-export-yellow-300: rgb(247.8, 195.6, 112.8);--quarto-scss-export-yellow-400: rgb(245.4, 175.8, 65.4);--quarto-scss-export-yellow-500: #f39c12;--quarto-scss-export-yellow-600: rgb(194.4, 124.8, 14.4);--quarto-scss-export-yellow-700: rgb(145.8, 93.6, 10.8);--quarto-scss-export-yellow-800: rgb(97.2, 62.4, 7.2);--quarto-scss-export-yellow-900: rgb(48.6, 31.2, 3.6);--quarto-scss-export-green-100: rgb(204, 241.6, 232);--quarto-scss-export-green-200: rgb(153, 228.2, 209);--quarto-scss-export-green-300: rgb(102, 214.8, 186);--quarto-scss-export-green-400: rgb(51, 201.4, 163);--quarto-scss-export-green-500: #00bc8c;--quarto-scss-export-green-600: rgb(0, 150.4, 112);--quarto-scss-export-green-700: rgb(0, 112.8, 84);--quarto-scss-export-green-800: rgb(0, 75.2, 56);--quarto-scss-export-green-900: rgb(0, 37.6, 28);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(214.4, 234.4, 247.8);--quarto-scss-export-cyan-200: rgb(173.8, 213.8, 240.6);--quarto-scss-export-cyan-300: rgb(133.2, 193.2, 233.4);--quarto-scss-export-cyan-400: rgb(92.6, 172.6, 226.2);--quarto-scss-export-cyan-500: #3498db;--quarto-scss-export-cyan-600: rgb(41.6, 121.6, 175.2);--quarto-scss-export-cyan-700: rgb(31.2, 91.2, 131.4);--quarto-scss-export-cyan-800: rgb(20.8, 60.8, 87.6);--quarto-scss-export-cyan-900: rgb(10.4, 30.4, 43.8);--quarto-scss-export-default: rgb(67.15, 67.15, 67.15);--quarto-scss-export-primary-text-emphasis: rgb(22, 36, 50.8);--quarto-scss-export-secondary-text-emphasis: rgb(26.86, 26.86, 26.86);--quarto-scss-export-success-text-emphasis: rgb(0, 75.2, 56);--quarto-scss-export-info-text-emphasis: rgb(20.8, 60.8, 87.6);--quarto-scss-export-warning-text-emphasis: rgb(97.2, 62.4, 7.2);--quarto-scss-export-danger-text-emphasis: rgb(92.4, 30.4, 24);--quarto-scss-export-light-text-emphasis: #444;--quarto-scss-export-dark-text-emphasis: #444;--quarto-scss-export-primary-bg-subtle: rgb(215, 222, 229.4);--quarto-scss-export-secondary-bg-subtle: rgb(217.43, 217.43, 217.43);--quarto-scss-export-success-bg-subtle: rgb(204, 241.6, 232);--quarto-scss-export-info-bg-subtle: rgb(214.4, 234.4, 247.8);--quarto-scss-export-warning-bg-subtle: rgb(252.6, 235.2, 207.6);--quarto-scss-export-danger-bg-subtle: rgb(250.2, 219.2, 216);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(175, 189, 203.8);--quarto-scss-export-secondary-border-subtle: rgb(179.86, 179.86, 179.86);--quarto-scss-export-success-border-subtle: rgb(153, 228.2, 209);--quarto-scss-export-info-border-subtle: rgb(173.8, 213.8, 240.6);--quarto-scss-export-warning-border-subtle: rgb(250.2, 215.4, 160.2);--quarto-scss-export-danger-border-subtle: rgb(245.4, 183.4, 177);--quarto-scss-export-light-border-subtle: #ebebeb;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-secondary-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-body-secondary-bg: #ebebeb;--quarto-scss-export-body-tertiary-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #375a7f;--quarto-scss-export-component-active-color: #fff;--quarto-scss-export-focus-ring-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #ebebeb;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(252.6, 235.2, 207.6);--quarto-scss-export-table-color: #fff;--quarto-scss-export-table-bg: #222;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #fff;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #fff;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #fff;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(55, 90, 127, 0.25);--quarto-scss-export-btn-color: #fff;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #00bc8c;--quarto-scss-export-btn-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #ebebeb;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-focus-bg: #fff;--quarto-scss-export-input-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-input-plaintext-color: #fff;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-focus-border: rgb(155, 172.5, 191);--quarto-scss-export-form-check-input-checked-color: #fff;--quarto-scss-export-form-check-input-checked-bg-color: #375a7f;--quarto-scss-export-form-check-input-checked-border-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-color: #fff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #375a7f;--quarto-scss-export-form-check-input-indeterminate-border-color: #375a7f;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(155, 172.5, 191);--quarto-scss-export-form-switch-checked-color: #fff;--quarto-scss-export-input-group-addon-border-color: #adb5bd;--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-bg: #fff;--quarto-scss-export-form-select-disabled-bg: #ebebeb;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: #adb5bd;--quarto-scss-export-form-select-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #375a7f;--quarto-scss-export-form-range-thumb-active-bg: rgb(195, 205.5, 216.6);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(255, 255, 255, 0.75);--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #00bc8c;--quarto-scss-export-form-feedback-invalid-color: #e74c3c;--quarto-scss-export-form-feedback-icon-valid-color: #00bc8c;--quarto-scss-export-form-feedback-icon-invalid-color: #e74c3c;--quarto-scss-export-form-valid-color: #00bc8c;--quarto-scss-export-form-valid-border-color: #00bc8c;--quarto-scss-export-form-invalid-color: #e74c3c;--quarto-scss-export-form-invalid-border-color: #e74c3c;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #00bc8c;--quarto-scss-export-nav-link-hover-color: rgb(0, 150.4, 112);--quarto-scss-export-nav-tabs-link-active-bg: #222;--quarto-scss-export-nav-pills-link-active-bg: #375a7f;--quarto-scss-export-nav-pills-link-active-color: #fff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #fff;--quarto-scss-export-navbar-dark-contrast: #fff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #fff;--quarto-scss-export-dropdown-link-active-bg: #375a7f;--quarto-scss-export-dropdown-link-active-color: #fff;--quarto-scss-export-dropdown-link-disabled-color: rgba(255, 255, 255, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #fff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #fff;--quarto-scss-export-dropdown-dark-link-active-bg: #375a7f;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-focus-color: rgb(0, 150.4, 112);--quarto-scss-export-pagination-focus-bg: #ebebeb;--quarto-scss-export-pagination-active-color: #fff;--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-accordion-color: #fff;--quarto-scss-export-accordion-bg: #222;--quarto-scss-export-accordion-border-color: #dee2e6;--quarto-scss-export-accordion-button-color: #fff;--quarto-scss-export-accordion-button-bg: #222;--quarto-scss-export-accordion-button-active-bg: rgb(215, 222, 229.4);--quarto-scss-export-accordion-button-active-color: rgb(22, 36, 50.8);--quarto-scss-export-accordion-button-focus-border-color: rgb(155, 172.5, 191);--quarto-scss-export-accordion-icon-color: #fff;--quarto-scss-export-accordion-icon-active-color: rgb(22, 36, 50.8);--quarto-scss-export-tooltip-color: #222;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-body-color: #fff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #fff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-progress-bar-color: #fff;--quarto-scss-export-progress-bar-bg: #375a7f;--quarto-scss-export-list-group-active-bg: #375a7f;--quarto-scss-export-list-group-active-color: #fff;--quarto-scss-export-list-group-active-border-color: #375a7f;--quarto-scss-export-list-group-disabled-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-list-group-action-active-color: #fff;--quarto-scss-export-thumbnail-bg: #222;--quarto-scss-export-thumbnail-border-color: #dee2e6;--quarto-scss-export-figure-caption-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-divider-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-carousel-control-color: #fff;--quarto-scss-export-carousel-indicator-active-bg: #fff;--quarto-scss-export-carousel-caption-color: #fff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-offcanvas-bg-color: #222;--quarto-scss-export-offcanvas-color: #fff;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #222;--quarto-scss-export-kbd-bg: #fff;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-bslib-page-sidebar-title-bg: #375a7f;--quarto-scss-export-bslib-page-sidebar-title-color: #fff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-sidebar-color: rgb(253.5635, 253.5635, 253.5635);--quarto-scss-export-sidebar-hover-color: rgba(252.45, 254.33, 253.85, 0.8);--quarto-scss-export-sidebar-disabled-color: rgba(253.5635, 253.5635, 253.5635, 0.75);--quarto-scss-export-valuebox-bg-primary: #375a7f;--quarto-scss-export-valuebox-bg-success: #00bc8c;--quarto-scss-export-valuebox-bg-info: #3498db;--quarto-scss-export-valuebox-bg-warning: #f39c12;--quarto-scss-export-valuebox-bg-danger: #e74c3c;--quarto-scss-export-mermaid-bg-color: #222;--quarto-scss-export-mermaid-node-fg-color: #fff;--quarto-scss-export-mermaid-fg-color: #fff;--quarto-scss-export-mermaid-fg-color--lighter: white;--quarto-scss-export-mermaid-fg-color--lightest: white;--quarto-scss-export-mermaid-label-bg-color: #222;--quarto-scss-export-mermaid-label-fg-color: #375a7f;--quarto-scss-export-mermaid-node-bg-color: rgba(55, 90, 127, 0.1);--quarto-scss-export-callout-color-note: #375a7f;--quarto-scss-export-callout-color-tip: #00bc8c;--quarto-scss-export-callout-color-important: #e74c3c;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #f39c12} \ No newline at end of file diff --git a/_site/site_libs/bootstrap/bootstrap-icons.css b/_site/site_libs/bootstrap/bootstrap-icons.css deleted file mode 100644 index 82b40f5..0000000 --- a/_site/site_libs/bootstrap/bootstrap-icons.css +++ /dev/null @@ -1,2106 +0,0 @@ -/*! - * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/) - * Copyright 2019-2024 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) - */ - -@font-face { - font-display: block; - font-family: "bootstrap-icons"; - src: -url("./bootstrap-icons.woff?e34853135f9e39acf64315236852cd5a") format("woff"); -} - -.bi::before, -[class^="bi-"]::before, -[class*=" bi-"]::before { - display: inline-block; - font-family: bootstrap-icons !important; - font-style: normal; - font-weight: normal !important; - font-variant: normal; - text-transform: none; - line-height: 1; - vertical-align: -.125em; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.bi-123::before { content: "\f67f"; } -.bi-alarm-fill::before { content: "\f101"; } -.bi-alarm::before { content: "\f102"; } -.bi-align-bottom::before { content: "\f103"; } -.bi-align-center::before { content: "\f104"; } -.bi-align-end::before { content: "\f105"; } -.bi-align-middle::before { content: "\f106"; } -.bi-align-start::before { content: "\f107"; } -.bi-align-top::before { content: "\f108"; } -.bi-alt::before { content: "\f109"; } -.bi-app-indicator::before { content: "\f10a"; } -.bi-app::before { content: "\f10b"; } -.bi-archive-fill::before { content: "\f10c"; } -.bi-archive::before { content: "\f10d"; } -.bi-arrow-90deg-down::before { content: "\f10e"; } -.bi-arrow-90deg-left::before { content: "\f10f"; } -.bi-arrow-90deg-right::before { content: "\f110"; } -.bi-arrow-90deg-up::before { content: "\f111"; } -.bi-arrow-bar-down::before { content: "\f112"; } -.bi-arrow-bar-left::before { content: "\f113"; } -.bi-arrow-bar-right::before { content: "\f114"; } -.bi-arrow-bar-up::before { content: "\f115"; } -.bi-arrow-clockwise::before { content: "\f116"; } -.bi-arrow-counterclockwise::before { content: "\f117"; } -.bi-arrow-down-circle-fill::before { content: "\f118"; } -.bi-arrow-down-circle::before { content: "\f119"; } -.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } -.bi-arrow-down-left-circle::before { content: "\f11b"; } -.bi-arrow-down-left-square-fill::before { content: "\f11c"; } -.bi-arrow-down-left-square::before { content: "\f11d"; } -.bi-arrow-down-left::before { content: "\f11e"; } -.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } -.bi-arrow-down-right-circle::before { content: "\f120"; } -.bi-arrow-down-right-square-fill::before { content: "\f121"; } -.bi-arrow-down-right-square::before { content: "\f122"; } -.bi-arrow-down-right::before { content: "\f123"; } -.bi-arrow-down-short::before { content: "\f124"; } -.bi-arrow-down-square-fill::before { content: "\f125"; } -.bi-arrow-down-square::before { content: "\f126"; } -.bi-arrow-down-up::before { content: "\f127"; } -.bi-arrow-down::before { content: "\f128"; } -.bi-arrow-left-circle-fill::before { content: "\f129"; } -.bi-arrow-left-circle::before { content: "\f12a"; } -.bi-arrow-left-right::before { content: "\f12b"; } -.bi-arrow-left-short::before { content: "\f12c"; } -.bi-arrow-left-square-fill::before { content: "\f12d"; } -.bi-arrow-left-square::before { content: "\f12e"; } -.bi-arrow-left::before { content: "\f12f"; } -.bi-arrow-repeat::before { content: "\f130"; } -.bi-arrow-return-left::before { content: "\f131"; } -.bi-arrow-return-right::before { content: "\f132"; } -.bi-arrow-right-circle-fill::before { content: "\f133"; } -.bi-arrow-right-circle::before { content: "\f134"; } -.bi-arrow-right-short::before { content: "\f135"; } -.bi-arrow-right-square-fill::before { content: "\f136"; } -.bi-arrow-right-square::before { content: "\f137"; } -.bi-arrow-right::before { content: "\f138"; } -.bi-arrow-up-circle-fill::before { content: "\f139"; } -.bi-arrow-up-circle::before { content: "\f13a"; } -.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } -.bi-arrow-up-left-circle::before { content: "\f13c"; } -.bi-arrow-up-left-square-fill::before { content: "\f13d"; } -.bi-arrow-up-left-square::before { content: "\f13e"; } -.bi-arrow-up-left::before { content: "\f13f"; } -.bi-arrow-up-right-circle-fill::before { content: "\f140"; } -.bi-arrow-up-right-circle::before { content: "\f141"; } -.bi-arrow-up-right-square-fill::before { content: "\f142"; } -.bi-arrow-up-right-square::before { content: "\f143"; } -.bi-arrow-up-right::before { content: "\f144"; } -.bi-arrow-up-short::before { content: "\f145"; } -.bi-arrow-up-square-fill::before { content: "\f146"; } -.bi-arrow-up-square::before { content: "\f147"; } -.bi-arrow-up::before { content: "\f148"; } -.bi-arrows-angle-contract::before { content: "\f149"; } -.bi-arrows-angle-expand::before { content: "\f14a"; } -.bi-arrows-collapse::before { content: "\f14b"; } -.bi-arrows-expand::before { content: "\f14c"; } -.bi-arrows-fullscreen::before { content: "\f14d"; } -.bi-arrows-move::before { content: "\f14e"; } -.bi-aspect-ratio-fill::before { content: "\f14f"; } -.bi-aspect-ratio::before { content: "\f150"; } -.bi-asterisk::before { content: "\f151"; } -.bi-at::before { content: "\f152"; } -.bi-award-fill::before { content: "\f153"; } -.bi-award::before { content: "\f154"; } -.bi-back::before { content: "\f155"; } -.bi-backspace-fill::before { content: "\f156"; } -.bi-backspace-reverse-fill::before { content: "\f157"; } -.bi-backspace-reverse::before { content: "\f158"; } -.bi-backspace::before { content: "\f159"; } -.bi-badge-3d-fill::before { content: "\f15a"; } -.bi-badge-3d::before { content: "\f15b"; } -.bi-badge-4k-fill::before { content: "\f15c"; } -.bi-badge-4k::before { content: "\f15d"; } -.bi-badge-8k-fill::before { content: "\f15e"; } -.bi-badge-8k::before { content: "\f15f"; } -.bi-badge-ad-fill::before { content: "\f160"; } -.bi-badge-ad::before { content: "\f161"; } -.bi-badge-ar-fill::before { content: "\f162"; } -.bi-badge-ar::before { content: "\f163"; } -.bi-badge-cc-fill::before { content: "\f164"; } -.bi-badge-cc::before { content: "\f165"; } -.bi-badge-hd-fill::before { content: "\f166"; } -.bi-badge-hd::before { content: "\f167"; } -.bi-badge-tm-fill::before { content: "\f168"; } -.bi-badge-tm::before { content: "\f169"; } -.bi-badge-vo-fill::before { content: "\f16a"; } -.bi-badge-vo::before { content: "\f16b"; } -.bi-badge-vr-fill::before { content: "\f16c"; } -.bi-badge-vr::before { content: "\f16d"; } -.bi-badge-wc-fill::before { content: "\f16e"; } -.bi-badge-wc::before { content: "\f16f"; } -.bi-bag-check-fill::before { content: "\f170"; } -.bi-bag-check::before { content: "\f171"; } -.bi-bag-dash-fill::before { content: "\f172"; } -.bi-bag-dash::before { content: "\f173"; } -.bi-bag-fill::before { content: "\f174"; } -.bi-bag-plus-fill::before { content: "\f175"; } -.bi-bag-plus::before { content: "\f176"; } -.bi-bag-x-fill::before { content: "\f177"; } -.bi-bag-x::before { content: "\f178"; } -.bi-bag::before { content: "\f179"; } -.bi-bar-chart-fill::before { content: "\f17a"; } -.bi-bar-chart-line-fill::before { content: "\f17b"; } -.bi-bar-chart-line::before { content: "\f17c"; } -.bi-bar-chart-steps::before { content: "\f17d"; } -.bi-bar-chart::before { content: "\f17e"; } -.bi-basket-fill::before { content: "\f17f"; } -.bi-basket::before { content: "\f180"; } -.bi-basket2-fill::before { content: "\f181"; } -.bi-basket2::before { content: "\f182"; } -.bi-basket3-fill::before { content: "\f183"; } -.bi-basket3::before { content: "\f184"; } -.bi-battery-charging::before { content: "\f185"; } -.bi-battery-full::before { content: "\f186"; } -.bi-battery-half::before { content: "\f187"; } -.bi-battery::before { content: "\f188"; } -.bi-bell-fill::before { content: "\f189"; } -.bi-bell::before { content: "\f18a"; } -.bi-bezier::before { content: "\f18b"; } -.bi-bezier2::before { content: "\f18c"; } -.bi-bicycle::before { content: "\f18d"; } -.bi-binoculars-fill::before { content: "\f18e"; } -.bi-binoculars::before { content: "\f18f"; } -.bi-blockquote-left::before { content: "\f190"; } -.bi-blockquote-right::before { content: "\f191"; } -.bi-book-fill::before { content: "\f192"; } -.bi-book-half::before { content: "\f193"; } -.bi-book::before { content: "\f194"; } -.bi-bookmark-check-fill::before { content: "\f195"; } -.bi-bookmark-check::before { content: "\f196"; } -.bi-bookmark-dash-fill::before { content: "\f197"; } -.bi-bookmark-dash::before { content: "\f198"; } -.bi-bookmark-fill::before { content: "\f199"; } -.bi-bookmark-heart-fill::before { content: "\f19a"; } -.bi-bookmark-heart::before { content: "\f19b"; } -.bi-bookmark-plus-fill::before { content: "\f19c"; } -.bi-bookmark-plus::before { content: "\f19d"; } -.bi-bookmark-star-fill::before { content: "\f19e"; } -.bi-bookmark-star::before { content: "\f19f"; } -.bi-bookmark-x-fill::before { content: "\f1a0"; } -.bi-bookmark-x::before { content: "\f1a1"; } -.bi-bookmark::before { content: "\f1a2"; } -.bi-bookmarks-fill::before { content: "\f1a3"; } -.bi-bookmarks::before { content: "\f1a4"; } -.bi-bookshelf::before { content: "\f1a5"; } -.bi-bootstrap-fill::before { content: "\f1a6"; } -.bi-bootstrap-reboot::before { content: "\f1a7"; } -.bi-bootstrap::before { content: "\f1a8"; } -.bi-border-all::before { content: "\f1a9"; } -.bi-border-bottom::before { content: "\f1aa"; } -.bi-border-center::before { content: "\f1ab"; } -.bi-border-inner::before { content: "\f1ac"; } -.bi-border-left::before { content: "\f1ad"; } -.bi-border-middle::before { content: "\f1ae"; } -.bi-border-outer::before { content: "\f1af"; } -.bi-border-right::before { content: "\f1b0"; } -.bi-border-style::before { content: "\f1b1"; } -.bi-border-top::before { content: "\f1b2"; } -.bi-border-width::before { content: "\f1b3"; } -.bi-border::before { content: "\f1b4"; } -.bi-bounding-box-circles::before { content: "\f1b5"; } -.bi-bounding-box::before { content: "\f1b6"; } -.bi-box-arrow-down-left::before { content: "\f1b7"; } -.bi-box-arrow-down-right::before { content: "\f1b8"; } -.bi-box-arrow-down::before { content: "\f1b9"; } -.bi-box-arrow-in-down-left::before { content: "\f1ba"; } -.bi-box-arrow-in-down-right::before { content: "\f1bb"; } -.bi-box-arrow-in-down::before { content: "\f1bc"; } -.bi-box-arrow-in-left::before { content: "\f1bd"; } -.bi-box-arrow-in-right::before { content: "\f1be"; } -.bi-box-arrow-in-up-left::before { content: "\f1bf"; } -.bi-box-arrow-in-up-right::before { content: "\f1c0"; } -.bi-box-arrow-in-up::before { content: "\f1c1"; } -.bi-box-arrow-left::before { content: "\f1c2"; } -.bi-box-arrow-right::before { content: "\f1c3"; } -.bi-box-arrow-up-left::before { content: "\f1c4"; } -.bi-box-arrow-up-right::before { content: "\f1c5"; } -.bi-box-arrow-up::before { content: "\f1c6"; } -.bi-box-seam::before { content: "\f1c7"; } -.bi-box::before { content: "\f1c8"; } -.bi-braces::before { content: "\f1c9"; } -.bi-bricks::before { content: "\f1ca"; } -.bi-briefcase-fill::before { content: "\f1cb"; } -.bi-briefcase::before { content: "\f1cc"; } -.bi-brightness-alt-high-fill::before { content: "\f1cd"; } -.bi-brightness-alt-high::before { content: "\f1ce"; } -.bi-brightness-alt-low-fill::before { content: "\f1cf"; } -.bi-brightness-alt-low::before { content: "\f1d0"; } -.bi-brightness-high-fill::before { content: "\f1d1"; } -.bi-brightness-high::before { content: "\f1d2"; } -.bi-brightness-low-fill::before { content: "\f1d3"; } -.bi-brightness-low::before { content: "\f1d4"; } -.bi-broadcast-pin::before { content: "\f1d5"; } -.bi-broadcast::before { content: "\f1d6"; } -.bi-brush-fill::before { content: "\f1d7"; } -.bi-brush::before { content: "\f1d8"; } -.bi-bucket-fill::before { content: "\f1d9"; } -.bi-bucket::before { content: "\f1da"; } -.bi-bug-fill::before { content: "\f1db"; } -.bi-bug::before { content: "\f1dc"; } -.bi-building::before { content: "\f1dd"; } -.bi-bullseye::before { content: "\f1de"; } -.bi-calculator-fill::before { content: "\f1df"; } -.bi-calculator::before { content: "\f1e0"; } -.bi-calendar-check-fill::before { content: "\f1e1"; } -.bi-calendar-check::before { content: "\f1e2"; } -.bi-calendar-date-fill::before { content: "\f1e3"; } -.bi-calendar-date::before { content: "\f1e4"; } -.bi-calendar-day-fill::before { content: "\f1e5"; } -.bi-calendar-day::before { content: "\f1e6"; } -.bi-calendar-event-fill::before { content: "\f1e7"; } -.bi-calendar-event::before { content: "\f1e8"; } -.bi-calendar-fill::before { content: "\f1e9"; } -.bi-calendar-minus-fill::before { content: "\f1ea"; } -.bi-calendar-minus::before { content: "\f1eb"; } -.bi-calendar-month-fill::before { content: "\f1ec"; } -.bi-calendar-month::before { content: "\f1ed"; } -.bi-calendar-plus-fill::before { content: "\f1ee"; } -.bi-calendar-plus::before { content: "\f1ef"; } -.bi-calendar-range-fill::before { content: "\f1f0"; } -.bi-calendar-range::before { content: "\f1f1"; } -.bi-calendar-week-fill::before { content: "\f1f2"; } -.bi-calendar-week::before { content: "\f1f3"; } -.bi-calendar-x-fill::before { content: "\f1f4"; } -.bi-calendar-x::before { content: "\f1f5"; } -.bi-calendar::before { content: "\f1f6"; } -.bi-calendar2-check-fill::before { content: "\f1f7"; } -.bi-calendar2-check::before { content: "\f1f8"; } -.bi-calendar2-date-fill::before { content: "\f1f9"; } -.bi-calendar2-date::before { content: "\f1fa"; } -.bi-calendar2-day-fill::before { content: "\f1fb"; } -.bi-calendar2-day::before { content: "\f1fc"; } -.bi-calendar2-event-fill::before { content: "\f1fd"; } -.bi-calendar2-event::before { content: "\f1fe"; } -.bi-calendar2-fill::before { content: "\f1ff"; } -.bi-calendar2-minus-fill::before { content: "\f200"; } -.bi-calendar2-minus::before { content: "\f201"; } -.bi-calendar2-month-fill::before { content: "\f202"; } -.bi-calendar2-month::before { content: "\f203"; } -.bi-calendar2-plus-fill::before { content: "\f204"; } -.bi-calendar2-plus::before { content: "\f205"; } -.bi-calendar2-range-fill::before { content: "\f206"; } -.bi-calendar2-range::before { content: "\f207"; } -.bi-calendar2-week-fill::before { content: "\f208"; } -.bi-calendar2-week::before { content: "\f209"; } -.bi-calendar2-x-fill::before { content: "\f20a"; } -.bi-calendar2-x::before { content: "\f20b"; } -.bi-calendar2::before { content: "\f20c"; } -.bi-calendar3-event-fill::before { content: "\f20d"; } -.bi-calendar3-event::before { content: "\f20e"; } -.bi-calendar3-fill::before { content: "\f20f"; } -.bi-calendar3-range-fill::before { content: "\f210"; } -.bi-calendar3-range::before { content: "\f211"; } -.bi-calendar3-week-fill::before { content: "\f212"; } -.bi-calendar3-week::before { content: "\f213"; } -.bi-calendar3::before { content: "\f214"; } -.bi-calendar4-event::before { content: "\f215"; } -.bi-calendar4-range::before { content: "\f216"; } -.bi-calendar4-week::before { content: "\f217"; } -.bi-calendar4::before { content: "\f218"; } -.bi-camera-fill::before { content: "\f219"; } -.bi-camera-reels-fill::before { content: "\f21a"; } -.bi-camera-reels::before { content: "\f21b"; } -.bi-camera-video-fill::before { content: "\f21c"; } -.bi-camera-video-off-fill::before { content: "\f21d"; } -.bi-camera-video-off::before { content: "\f21e"; } -.bi-camera-video::before { content: "\f21f"; } -.bi-camera::before { content: "\f220"; } -.bi-camera2::before { content: "\f221"; } -.bi-capslock-fill::before { content: "\f222"; } -.bi-capslock::before { content: "\f223"; } -.bi-card-checklist::before { content: "\f224"; } -.bi-card-heading::before { content: "\f225"; } -.bi-card-image::before { content: "\f226"; } -.bi-card-list::before { content: "\f227"; } -.bi-card-text::before { content: "\f228"; } -.bi-caret-down-fill::before { content: "\f229"; } -.bi-caret-down-square-fill::before { content: "\f22a"; } -.bi-caret-down-square::before { content: "\f22b"; } -.bi-caret-down::before { content: "\f22c"; } -.bi-caret-left-fill::before { content: "\f22d"; } -.bi-caret-left-square-fill::before { content: "\f22e"; } -.bi-caret-left-square::before { content: "\f22f"; } -.bi-caret-left::before { content: "\f230"; } -.bi-caret-right-fill::before { content: "\f231"; } -.bi-caret-right-square-fill::before { content: "\f232"; } -.bi-caret-right-square::before { content: "\f233"; } -.bi-caret-right::before { content: "\f234"; } -.bi-caret-up-fill::before { content: "\f235"; } -.bi-caret-up-square-fill::before { content: "\f236"; } -.bi-caret-up-square::before { content: "\f237"; } -.bi-caret-up::before { content: "\f238"; } -.bi-cart-check-fill::before { content: "\f239"; } -.bi-cart-check::before { content: "\f23a"; } -.bi-cart-dash-fill::before { content: "\f23b"; } -.bi-cart-dash::before { content: "\f23c"; } -.bi-cart-fill::before { content: "\f23d"; } -.bi-cart-plus-fill::before { content: "\f23e"; } -.bi-cart-plus::before { content: "\f23f"; } -.bi-cart-x-fill::before { content: "\f240"; } -.bi-cart-x::before { content: "\f241"; } -.bi-cart::before { content: "\f242"; } -.bi-cart2::before { content: "\f243"; } -.bi-cart3::before { content: "\f244"; } -.bi-cart4::before { content: "\f245"; } -.bi-cash-stack::before { content: "\f246"; } -.bi-cash::before { content: "\f247"; } -.bi-cast::before { content: "\f248"; } -.bi-chat-dots-fill::before { content: "\f249"; } -.bi-chat-dots::before { content: "\f24a"; } -.bi-chat-fill::before { content: "\f24b"; } -.bi-chat-left-dots-fill::before { content: "\f24c"; } -.bi-chat-left-dots::before { content: "\f24d"; } -.bi-chat-left-fill::before { content: "\f24e"; } -.bi-chat-left-quote-fill::before { content: "\f24f"; } -.bi-chat-left-quote::before { content: "\f250"; } -.bi-chat-left-text-fill::before { content: "\f251"; } -.bi-chat-left-text::before { content: "\f252"; } -.bi-chat-left::before { content: "\f253"; } -.bi-chat-quote-fill::before { content: "\f254"; } -.bi-chat-quote::before { content: "\f255"; } -.bi-chat-right-dots-fill::before { content: "\f256"; } -.bi-chat-right-dots::before { content: "\f257"; } -.bi-chat-right-fill::before { content: "\f258"; } -.bi-chat-right-quote-fill::before { content: "\f259"; } -.bi-chat-right-quote::before { content: "\f25a"; } -.bi-chat-right-text-fill::before { content: "\f25b"; } -.bi-chat-right-text::before { content: "\f25c"; } -.bi-chat-right::before { content: "\f25d"; } -.bi-chat-square-dots-fill::before { content: "\f25e"; } -.bi-chat-square-dots::before { content: "\f25f"; } -.bi-chat-square-fill::before { content: "\f260"; } -.bi-chat-square-quote-fill::before { content: "\f261"; } -.bi-chat-square-quote::before { content: "\f262"; } -.bi-chat-square-text-fill::before { content: "\f263"; } -.bi-chat-square-text::before { content: "\f264"; } -.bi-chat-square::before { content: "\f265"; } -.bi-chat-text-fill::before { content: "\f266"; } -.bi-chat-text::before { content: "\f267"; } -.bi-chat::before { content: "\f268"; } -.bi-check-all::before { content: "\f269"; } -.bi-check-circle-fill::before { content: "\f26a"; } -.bi-check-circle::before { content: "\f26b"; } -.bi-check-square-fill::before { content: "\f26c"; } -.bi-check-square::before { content: "\f26d"; } -.bi-check::before { content: "\f26e"; } -.bi-check2-all::before { content: "\f26f"; } -.bi-check2-circle::before { content: "\f270"; } -.bi-check2-square::before { content: "\f271"; } -.bi-check2::before { content: "\f272"; } -.bi-chevron-bar-contract::before { content: "\f273"; } -.bi-chevron-bar-down::before { content: "\f274"; } -.bi-chevron-bar-expand::before { content: "\f275"; } -.bi-chevron-bar-left::before { content: "\f276"; } -.bi-chevron-bar-right::before { content: "\f277"; } -.bi-chevron-bar-up::before { content: "\f278"; } -.bi-chevron-compact-down::before { content: "\f279"; } -.bi-chevron-compact-left::before { content: "\f27a"; } -.bi-chevron-compact-right::before { content: "\f27b"; } -.bi-chevron-compact-up::before { content: "\f27c"; } -.bi-chevron-contract::before { content: "\f27d"; } -.bi-chevron-double-down::before { content: "\f27e"; } -.bi-chevron-double-left::before { content: "\f27f"; } -.bi-chevron-double-right::before { content: "\f280"; } -.bi-chevron-double-up::before { content: "\f281"; } -.bi-chevron-down::before { content: "\f282"; } -.bi-chevron-expand::before { content: "\f283"; } -.bi-chevron-left::before { content: "\f284"; } -.bi-chevron-right::before { content: "\f285"; } -.bi-chevron-up::before { content: "\f286"; } -.bi-circle-fill::before { content: "\f287"; } -.bi-circle-half::before { content: "\f288"; } -.bi-circle-square::before { content: "\f289"; } -.bi-circle::before { content: "\f28a"; } -.bi-clipboard-check::before { content: "\f28b"; } -.bi-clipboard-data::before { content: "\f28c"; } -.bi-clipboard-minus::before { content: "\f28d"; } -.bi-clipboard-plus::before { content: "\f28e"; } -.bi-clipboard-x::before { content: "\f28f"; } -.bi-clipboard::before { content: "\f290"; } -.bi-clock-fill::before { content: "\f291"; } -.bi-clock-history::before { content: "\f292"; } -.bi-clock::before { content: "\f293"; } -.bi-cloud-arrow-down-fill::before { content: "\f294"; } -.bi-cloud-arrow-down::before { content: "\f295"; } -.bi-cloud-arrow-up-fill::before { content: "\f296"; } -.bi-cloud-arrow-up::before { content: "\f297"; } -.bi-cloud-check-fill::before { content: "\f298"; } -.bi-cloud-check::before { content: "\f299"; } -.bi-cloud-download-fill::before { content: "\f29a"; } -.bi-cloud-download::before { content: "\f29b"; } -.bi-cloud-drizzle-fill::before { content: "\f29c"; } -.bi-cloud-drizzle::before { content: "\f29d"; } -.bi-cloud-fill::before { content: "\f29e"; } -.bi-cloud-fog-fill::before { content: "\f29f"; } -.bi-cloud-fog::before { content: "\f2a0"; } -.bi-cloud-fog2-fill::before { content: "\f2a1"; } -.bi-cloud-fog2::before { content: "\f2a2"; } -.bi-cloud-hail-fill::before { content: "\f2a3"; } -.bi-cloud-hail::before { content: "\f2a4"; } -.bi-cloud-haze-fill::before { content: "\f2a6"; } -.bi-cloud-haze::before { content: "\f2a7"; } -.bi-cloud-haze2-fill::before { content: "\f2a8"; } -.bi-cloud-lightning-fill::before { content: "\f2a9"; } -.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } -.bi-cloud-lightning-rain::before { content: "\f2ab"; } -.bi-cloud-lightning::before { content: "\f2ac"; } -.bi-cloud-minus-fill::before { content: "\f2ad"; } -.bi-cloud-minus::before { content: "\f2ae"; } -.bi-cloud-moon-fill::before { content: "\f2af"; } -.bi-cloud-moon::before { content: "\f2b0"; } -.bi-cloud-plus-fill::before { content: "\f2b1"; } -.bi-cloud-plus::before { content: "\f2b2"; } -.bi-cloud-rain-fill::before { content: "\f2b3"; } -.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } -.bi-cloud-rain-heavy::before { content: "\f2b5"; } -.bi-cloud-rain::before { content: "\f2b6"; } -.bi-cloud-slash-fill::before { content: "\f2b7"; } -.bi-cloud-slash::before { content: "\f2b8"; } -.bi-cloud-sleet-fill::before { content: "\f2b9"; } -.bi-cloud-sleet::before { content: "\f2ba"; } -.bi-cloud-snow-fill::before { content: "\f2bb"; } -.bi-cloud-snow::before { content: "\f2bc"; } -.bi-cloud-sun-fill::before { content: "\f2bd"; } -.bi-cloud-sun::before { content: "\f2be"; } -.bi-cloud-upload-fill::before { content: "\f2bf"; } -.bi-cloud-upload::before { content: "\f2c0"; } -.bi-cloud::before { content: "\f2c1"; } -.bi-clouds-fill::before { content: "\f2c2"; } -.bi-clouds::before { content: "\f2c3"; } -.bi-cloudy-fill::before { content: "\f2c4"; } -.bi-cloudy::before { content: "\f2c5"; } -.bi-code-slash::before { content: "\f2c6"; } -.bi-code-square::before { content: "\f2c7"; } -.bi-code::before { content: "\f2c8"; } -.bi-collection-fill::before { content: "\f2c9"; } -.bi-collection-play-fill::before { content: "\f2ca"; } -.bi-collection-play::before { content: "\f2cb"; } -.bi-collection::before { content: "\f2cc"; } -.bi-columns-gap::before { content: "\f2cd"; } -.bi-columns::before { content: "\f2ce"; } -.bi-command::before { content: "\f2cf"; } -.bi-compass-fill::before { content: "\f2d0"; } -.bi-compass::before { content: "\f2d1"; } -.bi-cone-striped::before { content: "\f2d2"; } -.bi-cone::before { content: "\f2d3"; } -.bi-controller::before { content: "\f2d4"; } -.bi-cpu-fill::before { content: "\f2d5"; } -.bi-cpu::before { content: "\f2d6"; } -.bi-credit-card-2-back-fill::before { content: "\f2d7"; } -.bi-credit-card-2-back::before { content: "\f2d8"; } -.bi-credit-card-2-front-fill::before { content: "\f2d9"; } -.bi-credit-card-2-front::before { content: "\f2da"; } -.bi-credit-card-fill::before { content: "\f2db"; } -.bi-credit-card::before { content: "\f2dc"; } -.bi-crop::before { content: "\f2dd"; } -.bi-cup-fill::before { content: "\f2de"; } -.bi-cup-straw::before { content: "\f2df"; } -.bi-cup::before { content: "\f2e0"; } -.bi-cursor-fill::before { content: "\f2e1"; } -.bi-cursor-text::before { content: "\f2e2"; } -.bi-cursor::before { content: "\f2e3"; } -.bi-dash-circle-dotted::before { content: "\f2e4"; } -.bi-dash-circle-fill::before { content: "\f2e5"; } -.bi-dash-circle::before { content: "\f2e6"; } -.bi-dash-square-dotted::before { content: "\f2e7"; } -.bi-dash-square-fill::before { content: "\f2e8"; } -.bi-dash-square::before { content: "\f2e9"; } -.bi-dash::before { content: "\f2ea"; } -.bi-diagram-2-fill::before { content: "\f2eb"; } -.bi-diagram-2::before { content: "\f2ec"; } -.bi-diagram-3-fill::before { content: "\f2ed"; } -.bi-diagram-3::before { content: "\f2ee"; } -.bi-diamond-fill::before { content: "\f2ef"; } -.bi-diamond-half::before { content: "\f2f0"; } -.bi-diamond::before { content: "\f2f1"; } -.bi-dice-1-fill::before { content: "\f2f2"; } -.bi-dice-1::before { content: "\f2f3"; } -.bi-dice-2-fill::before { content: "\f2f4"; } -.bi-dice-2::before { content: "\f2f5"; } -.bi-dice-3-fill::before { content: "\f2f6"; } -.bi-dice-3::before { content: "\f2f7"; } -.bi-dice-4-fill::before { content: "\f2f8"; } -.bi-dice-4::before { content: "\f2f9"; } -.bi-dice-5-fill::before { content: "\f2fa"; } -.bi-dice-5::before { content: "\f2fb"; } -.bi-dice-6-fill::before { content: "\f2fc"; } -.bi-dice-6::before { content: "\f2fd"; } -.bi-disc-fill::before { content: "\f2fe"; } -.bi-disc::before { content: "\f2ff"; } -.bi-discord::before { content: "\f300"; } -.bi-display-fill::before { content: "\f301"; } -.bi-display::before { content: "\f302"; } -.bi-distribute-horizontal::before { content: "\f303"; } -.bi-distribute-vertical::before { content: "\f304"; } -.bi-door-closed-fill::before { content: "\f305"; } -.bi-door-closed::before { content: "\f306"; } -.bi-door-open-fill::before { content: "\f307"; } -.bi-door-open::before { content: "\f308"; } -.bi-dot::before { content: "\f309"; } -.bi-download::before { content: "\f30a"; } -.bi-droplet-fill::before { content: "\f30b"; } -.bi-droplet-half::before { content: "\f30c"; } -.bi-droplet::before { content: "\f30d"; } -.bi-earbuds::before { content: "\f30e"; } -.bi-easel-fill::before { content: "\f30f"; } -.bi-easel::before { content: "\f310"; } -.bi-egg-fill::before { content: "\f311"; } -.bi-egg-fried::before { content: "\f312"; } -.bi-egg::before { content: "\f313"; } -.bi-eject-fill::before { content: "\f314"; } -.bi-eject::before { content: "\f315"; } -.bi-emoji-angry-fill::before { content: "\f316"; } -.bi-emoji-angry::before { content: "\f317"; } -.bi-emoji-dizzy-fill::before { content: "\f318"; } -.bi-emoji-dizzy::before { content: "\f319"; } -.bi-emoji-expressionless-fill::before { content: "\f31a"; } -.bi-emoji-expressionless::before { content: "\f31b"; } -.bi-emoji-frown-fill::before { content: "\f31c"; } -.bi-emoji-frown::before { content: "\f31d"; } -.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } -.bi-emoji-heart-eyes::before { content: "\f31f"; } -.bi-emoji-laughing-fill::before { content: "\f320"; } -.bi-emoji-laughing::before { content: "\f321"; } -.bi-emoji-neutral-fill::before { content: "\f322"; } -.bi-emoji-neutral::before { content: "\f323"; } -.bi-emoji-smile-fill::before { content: "\f324"; } -.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } -.bi-emoji-smile-upside-down::before { content: "\f326"; } -.bi-emoji-smile::before { content: "\f327"; } -.bi-emoji-sunglasses-fill::before { content: "\f328"; } -.bi-emoji-sunglasses::before { content: "\f329"; } -.bi-emoji-wink-fill::before { content: "\f32a"; } -.bi-emoji-wink::before { content: "\f32b"; } -.bi-envelope-fill::before { content: "\f32c"; } -.bi-envelope-open-fill::before { content: "\f32d"; } -.bi-envelope-open::before { content: "\f32e"; } -.bi-envelope::before { content: "\f32f"; } -.bi-eraser-fill::before { content: "\f330"; } -.bi-eraser::before { content: "\f331"; } -.bi-exclamation-circle-fill::before { content: "\f332"; } -.bi-exclamation-circle::before { content: "\f333"; } -.bi-exclamation-diamond-fill::before { content: "\f334"; } -.bi-exclamation-diamond::before { content: "\f335"; } -.bi-exclamation-octagon-fill::before { content: "\f336"; } -.bi-exclamation-octagon::before { content: "\f337"; } -.bi-exclamation-square-fill::before { content: "\f338"; } -.bi-exclamation-square::before { content: "\f339"; } -.bi-exclamation-triangle-fill::before { content: "\f33a"; } -.bi-exclamation-triangle::before { content: "\f33b"; } -.bi-exclamation::before { content: "\f33c"; } -.bi-exclude::before { content: "\f33d"; } -.bi-eye-fill::before { content: "\f33e"; } -.bi-eye-slash-fill::before { content: "\f33f"; } -.bi-eye-slash::before { content: "\f340"; } -.bi-eye::before { content: "\f341"; } -.bi-eyedropper::before { content: "\f342"; } -.bi-eyeglasses::before { content: "\f343"; } -.bi-facebook::before { content: "\f344"; } -.bi-file-arrow-down-fill::before { content: "\f345"; } -.bi-file-arrow-down::before { content: "\f346"; } -.bi-file-arrow-up-fill::before { content: "\f347"; } -.bi-file-arrow-up::before { content: "\f348"; } -.bi-file-bar-graph-fill::before { content: "\f349"; } -.bi-file-bar-graph::before { content: "\f34a"; } -.bi-file-binary-fill::before { content: "\f34b"; } -.bi-file-binary::before { content: "\f34c"; } -.bi-file-break-fill::before { content: "\f34d"; } -.bi-file-break::before { content: "\f34e"; } -.bi-file-check-fill::before { content: "\f34f"; } -.bi-file-check::before { content: "\f350"; } -.bi-file-code-fill::before { content: "\f351"; } -.bi-file-code::before { content: "\f352"; } -.bi-file-diff-fill::before { content: "\f353"; } -.bi-file-diff::before { content: "\f354"; } -.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } -.bi-file-earmark-arrow-down::before { content: "\f356"; } -.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } -.bi-file-earmark-arrow-up::before { content: "\f358"; } -.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } -.bi-file-earmark-bar-graph::before { content: "\f35a"; } -.bi-file-earmark-binary-fill::before { content: "\f35b"; } -.bi-file-earmark-binary::before { content: "\f35c"; } -.bi-file-earmark-break-fill::before { content: "\f35d"; } -.bi-file-earmark-break::before { content: "\f35e"; } -.bi-file-earmark-check-fill::before { content: "\f35f"; } -.bi-file-earmark-check::before { content: "\f360"; } -.bi-file-earmark-code-fill::before { content: "\f361"; } -.bi-file-earmark-code::before { content: "\f362"; } -.bi-file-earmark-diff-fill::before { content: "\f363"; } -.bi-file-earmark-diff::before { content: "\f364"; } -.bi-file-earmark-easel-fill::before { content: "\f365"; } -.bi-file-earmark-easel::before { content: "\f366"; } -.bi-file-earmark-excel-fill::before { content: "\f367"; } -.bi-file-earmark-excel::before { content: "\f368"; } -.bi-file-earmark-fill::before { content: "\f369"; } -.bi-file-earmark-font-fill::before { content: "\f36a"; } -.bi-file-earmark-font::before { content: "\f36b"; } -.bi-file-earmark-image-fill::before { content: "\f36c"; } -.bi-file-earmark-image::before { content: "\f36d"; } -.bi-file-earmark-lock-fill::before { content: "\f36e"; } -.bi-file-earmark-lock::before { content: "\f36f"; } -.bi-file-earmark-lock2-fill::before { content: "\f370"; } -.bi-file-earmark-lock2::before { content: "\f371"; } -.bi-file-earmark-medical-fill::before { content: "\f372"; } -.bi-file-earmark-medical::before { content: "\f373"; } -.bi-file-earmark-minus-fill::before { content: "\f374"; } -.bi-file-earmark-minus::before { content: "\f375"; } -.bi-file-earmark-music-fill::before { content: "\f376"; } -.bi-file-earmark-music::before { content: "\f377"; } -.bi-file-earmark-person-fill::before { content: "\f378"; } -.bi-file-earmark-person::before { content: "\f379"; } -.bi-file-earmark-play-fill::before { content: "\f37a"; } -.bi-file-earmark-play::before { content: "\f37b"; } -.bi-file-earmark-plus-fill::before { content: "\f37c"; } -.bi-file-earmark-plus::before { content: "\f37d"; } -.bi-file-earmark-post-fill::before { content: "\f37e"; } -.bi-file-earmark-post::before { content: "\f37f"; } -.bi-file-earmark-ppt-fill::before { content: "\f380"; } -.bi-file-earmark-ppt::before { content: "\f381"; } -.bi-file-earmark-richtext-fill::before { content: "\f382"; } -.bi-file-earmark-richtext::before { content: "\f383"; } -.bi-file-earmark-ruled-fill::before { content: "\f384"; } -.bi-file-earmark-ruled::before { content: "\f385"; } -.bi-file-earmark-slides-fill::before { content: "\f386"; } -.bi-file-earmark-slides::before { content: "\f387"; } -.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } -.bi-file-earmark-spreadsheet::before { content: "\f389"; } -.bi-file-earmark-text-fill::before { content: "\f38a"; } -.bi-file-earmark-text::before { content: "\f38b"; } -.bi-file-earmark-word-fill::before { content: "\f38c"; } -.bi-file-earmark-word::before { content: "\f38d"; } -.bi-file-earmark-x-fill::before { content: "\f38e"; } -.bi-file-earmark-x::before { content: "\f38f"; } -.bi-file-earmark-zip-fill::before { content: "\f390"; } -.bi-file-earmark-zip::before { content: "\f391"; } -.bi-file-earmark::before { content: "\f392"; } -.bi-file-easel-fill::before { content: "\f393"; } -.bi-file-easel::before { content: "\f394"; } -.bi-file-excel-fill::before { content: "\f395"; } -.bi-file-excel::before { content: "\f396"; } -.bi-file-fill::before { content: "\f397"; } -.bi-file-font-fill::before { content: "\f398"; } -.bi-file-font::before { content: "\f399"; } -.bi-file-image-fill::before { content: "\f39a"; } -.bi-file-image::before { content: "\f39b"; } -.bi-file-lock-fill::before { content: "\f39c"; } -.bi-file-lock::before { content: "\f39d"; } -.bi-file-lock2-fill::before { content: "\f39e"; } -.bi-file-lock2::before { content: "\f39f"; } -.bi-file-medical-fill::before { content: "\f3a0"; } -.bi-file-medical::before { content: "\f3a1"; } -.bi-file-minus-fill::before { content: "\f3a2"; } -.bi-file-minus::before { content: "\f3a3"; } -.bi-file-music-fill::before { content: "\f3a4"; } -.bi-file-music::before { content: "\f3a5"; } -.bi-file-person-fill::before { content: "\f3a6"; } -.bi-file-person::before { content: "\f3a7"; } -.bi-file-play-fill::before { content: "\f3a8"; } -.bi-file-play::before { content: "\f3a9"; } -.bi-file-plus-fill::before { content: "\f3aa"; } -.bi-file-plus::before { content: "\f3ab"; } -.bi-file-post-fill::before { content: "\f3ac"; } -.bi-file-post::before { content: "\f3ad"; } -.bi-file-ppt-fill::before { content: "\f3ae"; } -.bi-file-ppt::before { content: "\f3af"; } -.bi-file-richtext-fill::before { content: "\f3b0"; } -.bi-file-richtext::before { content: "\f3b1"; } -.bi-file-ruled-fill::before { content: "\f3b2"; } -.bi-file-ruled::before { content: "\f3b3"; } -.bi-file-slides-fill::before { content: "\f3b4"; } -.bi-file-slides::before { content: "\f3b5"; } -.bi-file-spreadsheet-fill::before { content: "\f3b6"; } -.bi-file-spreadsheet::before { content: "\f3b7"; } -.bi-file-text-fill::before { content: "\f3b8"; } -.bi-file-text::before { content: "\f3b9"; } -.bi-file-word-fill::before { content: "\f3ba"; } -.bi-file-word::before { content: "\f3bb"; } -.bi-file-x-fill::before { content: "\f3bc"; } -.bi-file-x::before { content: "\f3bd"; } -.bi-file-zip-fill::before { content: "\f3be"; } -.bi-file-zip::before { content: "\f3bf"; } -.bi-file::before { content: "\f3c0"; } -.bi-files-alt::before { content: "\f3c1"; } -.bi-files::before { content: "\f3c2"; } -.bi-film::before { content: "\f3c3"; } -.bi-filter-circle-fill::before { content: "\f3c4"; } -.bi-filter-circle::before { content: "\f3c5"; } -.bi-filter-left::before { content: "\f3c6"; } -.bi-filter-right::before { content: "\f3c7"; } -.bi-filter-square-fill::before { content: "\f3c8"; } -.bi-filter-square::before { content: "\f3c9"; } -.bi-filter::before { content: "\f3ca"; } -.bi-flag-fill::before { content: "\f3cb"; } -.bi-flag::before { content: "\f3cc"; } -.bi-flower1::before { content: "\f3cd"; } -.bi-flower2::before { content: "\f3ce"; } -.bi-flower3::before { content: "\f3cf"; } -.bi-folder-check::before { content: "\f3d0"; } -.bi-folder-fill::before { content: "\f3d1"; } -.bi-folder-minus::before { content: "\f3d2"; } -.bi-folder-plus::before { content: "\f3d3"; } -.bi-folder-symlink-fill::before { content: "\f3d4"; } -.bi-folder-symlink::before { content: "\f3d5"; } -.bi-folder-x::before { content: "\f3d6"; } -.bi-folder::before { content: "\f3d7"; } -.bi-folder2-open::before { content: "\f3d8"; } -.bi-folder2::before { content: "\f3d9"; } -.bi-fonts::before { content: "\f3da"; } -.bi-forward-fill::before { content: "\f3db"; } -.bi-forward::before { content: "\f3dc"; } -.bi-front::before { content: "\f3dd"; } -.bi-fullscreen-exit::before { content: "\f3de"; } -.bi-fullscreen::before { content: "\f3df"; } -.bi-funnel-fill::before { content: "\f3e0"; } -.bi-funnel::before { content: "\f3e1"; } -.bi-gear-fill::before { content: "\f3e2"; } -.bi-gear-wide-connected::before { content: "\f3e3"; } -.bi-gear-wide::before { content: "\f3e4"; } -.bi-gear::before { content: "\f3e5"; } -.bi-gem::before { content: "\f3e6"; } -.bi-geo-alt-fill::before { content: "\f3e7"; } -.bi-geo-alt::before { content: "\f3e8"; } -.bi-geo-fill::before { content: "\f3e9"; } -.bi-geo::before { content: "\f3ea"; } -.bi-gift-fill::before { content: "\f3eb"; } -.bi-gift::before { content: "\f3ec"; } -.bi-github::before { content: "\f3ed"; } -.bi-globe::before { content: "\f3ee"; } -.bi-globe2::before { content: "\f3ef"; } -.bi-google::before { content: "\f3f0"; } -.bi-graph-down::before { content: "\f3f1"; } -.bi-graph-up::before { content: "\f3f2"; } -.bi-grid-1x2-fill::before { content: "\f3f3"; } -.bi-grid-1x2::before { content: "\f3f4"; } -.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } -.bi-grid-3x2-gap::before { content: "\f3f6"; } -.bi-grid-3x2::before { content: "\f3f7"; } -.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } -.bi-grid-3x3-gap::before { content: "\f3f9"; } -.bi-grid-3x3::before { content: "\f3fa"; } -.bi-grid-fill::before { content: "\f3fb"; } -.bi-grid::before { content: "\f3fc"; } -.bi-grip-horizontal::before { content: "\f3fd"; } -.bi-grip-vertical::before { content: "\f3fe"; } -.bi-hammer::before { content: "\f3ff"; } -.bi-hand-index-fill::before { content: "\f400"; } -.bi-hand-index-thumb-fill::before { content: "\f401"; } -.bi-hand-index-thumb::before { content: "\f402"; } -.bi-hand-index::before { content: "\f403"; } -.bi-hand-thumbs-down-fill::before { content: "\f404"; } -.bi-hand-thumbs-down::before { content: "\f405"; } -.bi-hand-thumbs-up-fill::before { content: "\f406"; } -.bi-hand-thumbs-up::before { content: "\f407"; } -.bi-handbag-fill::before { content: "\f408"; } -.bi-handbag::before { content: "\f409"; } -.bi-hash::before { content: "\f40a"; } -.bi-hdd-fill::before { content: "\f40b"; } -.bi-hdd-network-fill::before { content: "\f40c"; } -.bi-hdd-network::before { content: "\f40d"; } -.bi-hdd-rack-fill::before { content: "\f40e"; } -.bi-hdd-rack::before { content: "\f40f"; } -.bi-hdd-stack-fill::before { content: "\f410"; } -.bi-hdd-stack::before { content: "\f411"; } -.bi-hdd::before { content: "\f412"; } -.bi-headphones::before { content: "\f413"; } -.bi-headset::before { content: "\f414"; } -.bi-heart-fill::before { content: "\f415"; } -.bi-heart-half::before { content: "\f416"; } -.bi-heart::before { content: "\f417"; } -.bi-heptagon-fill::before { content: "\f418"; } -.bi-heptagon-half::before { content: "\f419"; } -.bi-heptagon::before { content: "\f41a"; } -.bi-hexagon-fill::before { content: "\f41b"; } -.bi-hexagon-half::before { content: "\f41c"; } -.bi-hexagon::before { content: "\f41d"; } -.bi-hourglass-bottom::before { content: "\f41e"; } -.bi-hourglass-split::before { content: "\f41f"; } -.bi-hourglass-top::before { content: "\f420"; } -.bi-hourglass::before { content: "\f421"; } -.bi-house-door-fill::before { content: "\f422"; } -.bi-house-door::before { content: "\f423"; } -.bi-house-fill::before { content: "\f424"; } -.bi-house::before { content: "\f425"; } -.bi-hr::before { content: "\f426"; } -.bi-hurricane::before { content: "\f427"; } -.bi-image-alt::before { content: "\f428"; } -.bi-image-fill::before { content: "\f429"; } -.bi-image::before { content: "\f42a"; } -.bi-images::before { content: "\f42b"; } -.bi-inbox-fill::before { content: "\f42c"; } -.bi-inbox::before { content: "\f42d"; } -.bi-inboxes-fill::before { content: "\f42e"; } -.bi-inboxes::before { content: "\f42f"; } -.bi-info-circle-fill::before { content: "\f430"; } -.bi-info-circle::before { content: "\f431"; } -.bi-info-square-fill::before { content: "\f432"; } -.bi-info-square::before { content: "\f433"; } -.bi-info::before { content: "\f434"; } -.bi-input-cursor-text::before { content: "\f435"; } -.bi-input-cursor::before { content: "\f436"; } -.bi-instagram::before { content: "\f437"; } -.bi-intersect::before { content: "\f438"; } -.bi-journal-album::before { content: "\f439"; } -.bi-journal-arrow-down::before { content: "\f43a"; } -.bi-journal-arrow-up::before { content: "\f43b"; } -.bi-journal-bookmark-fill::before { content: "\f43c"; } -.bi-journal-bookmark::before { content: "\f43d"; } -.bi-journal-check::before { content: "\f43e"; } -.bi-journal-code::before { content: "\f43f"; } -.bi-journal-medical::before { content: "\f440"; } -.bi-journal-minus::before { content: "\f441"; } -.bi-journal-plus::before { content: "\f442"; } -.bi-journal-richtext::before { content: "\f443"; } -.bi-journal-text::before { content: "\f444"; } -.bi-journal-x::before { content: "\f445"; } -.bi-journal::before { content: "\f446"; } -.bi-journals::before { content: "\f447"; } -.bi-joystick::before { content: "\f448"; } -.bi-justify-left::before { content: "\f449"; } -.bi-justify-right::before { content: "\f44a"; } -.bi-justify::before { content: "\f44b"; } -.bi-kanban-fill::before { content: "\f44c"; } -.bi-kanban::before { content: "\f44d"; } -.bi-key-fill::before { content: "\f44e"; } -.bi-key::before { content: "\f44f"; } -.bi-keyboard-fill::before { content: "\f450"; } -.bi-keyboard::before { content: "\f451"; } -.bi-ladder::before { content: "\f452"; } -.bi-lamp-fill::before { content: "\f453"; } -.bi-lamp::before { content: "\f454"; } -.bi-laptop-fill::before { content: "\f455"; } -.bi-laptop::before { content: "\f456"; } -.bi-layer-backward::before { content: "\f457"; } -.bi-layer-forward::before { content: "\f458"; } -.bi-layers-fill::before { content: "\f459"; } -.bi-layers-half::before { content: "\f45a"; } -.bi-layers::before { content: "\f45b"; } -.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } -.bi-layout-sidebar-inset::before { content: "\f45d"; } -.bi-layout-sidebar-reverse::before { content: "\f45e"; } -.bi-layout-sidebar::before { content: "\f45f"; } -.bi-layout-split::before { content: "\f460"; } -.bi-layout-text-sidebar-reverse::before { content: "\f461"; } -.bi-layout-text-sidebar::before { content: "\f462"; } -.bi-layout-text-window-reverse::before { content: "\f463"; } -.bi-layout-text-window::before { content: "\f464"; } -.bi-layout-three-columns::before { content: "\f465"; } -.bi-layout-wtf::before { content: "\f466"; } -.bi-life-preserver::before { content: "\f467"; } -.bi-lightbulb-fill::before { content: "\f468"; } -.bi-lightbulb-off-fill::before { content: "\f469"; } -.bi-lightbulb-off::before { content: "\f46a"; } -.bi-lightbulb::before { content: "\f46b"; } -.bi-lightning-charge-fill::before { content: "\f46c"; } -.bi-lightning-charge::before { content: "\f46d"; } -.bi-lightning-fill::before { content: "\f46e"; } -.bi-lightning::before { content: "\f46f"; } -.bi-link-45deg::before { content: "\f470"; } -.bi-link::before { content: "\f471"; } -.bi-linkedin::before { content: "\f472"; } -.bi-list-check::before { content: "\f473"; } -.bi-list-nested::before { content: "\f474"; } -.bi-list-ol::before { content: "\f475"; } -.bi-list-stars::before { content: "\f476"; } -.bi-list-task::before { content: "\f477"; } -.bi-list-ul::before { content: "\f478"; } -.bi-list::before { content: "\f479"; } -.bi-lock-fill::before { content: "\f47a"; } -.bi-lock::before { content: "\f47b"; } -.bi-mailbox::before { content: "\f47c"; } -.bi-mailbox2::before { content: "\f47d"; } -.bi-map-fill::before { content: "\f47e"; } -.bi-map::before { content: "\f47f"; } -.bi-markdown-fill::before { content: "\f480"; } -.bi-markdown::before { content: "\f481"; } -.bi-mask::before { content: "\f482"; } -.bi-megaphone-fill::before { content: "\f483"; } -.bi-megaphone::before { content: "\f484"; } -.bi-menu-app-fill::before { content: "\f485"; } -.bi-menu-app::before { content: "\f486"; } -.bi-menu-button-fill::before { content: "\f487"; } -.bi-menu-button-wide-fill::before { content: "\f488"; } -.bi-menu-button-wide::before { content: "\f489"; } -.bi-menu-button::before { content: "\f48a"; } -.bi-menu-down::before { content: "\f48b"; } -.bi-menu-up::before { content: "\f48c"; } -.bi-mic-fill::before { content: "\f48d"; } -.bi-mic-mute-fill::before { content: "\f48e"; } -.bi-mic-mute::before { content: "\f48f"; } -.bi-mic::before { content: "\f490"; } -.bi-minecart-loaded::before { content: "\f491"; } -.bi-minecart::before { content: "\f492"; } -.bi-moisture::before { content: "\f493"; } -.bi-moon-fill::before { content: "\f494"; } -.bi-moon-stars-fill::before { content: "\f495"; } -.bi-moon-stars::before { content: "\f496"; } -.bi-moon::before { content: "\f497"; } -.bi-mouse-fill::before { content: "\f498"; } -.bi-mouse::before { content: "\f499"; } -.bi-mouse2-fill::before { content: "\f49a"; } -.bi-mouse2::before { content: "\f49b"; } -.bi-mouse3-fill::before { content: "\f49c"; } -.bi-mouse3::before { content: "\f49d"; } -.bi-music-note-beamed::before { content: "\f49e"; } -.bi-music-note-list::before { content: "\f49f"; } -.bi-music-note::before { content: "\f4a0"; } -.bi-music-player-fill::before { content: "\f4a1"; } -.bi-music-player::before { content: "\f4a2"; } -.bi-newspaper::before { content: "\f4a3"; } -.bi-node-minus-fill::before { content: "\f4a4"; } -.bi-node-minus::before { content: "\f4a5"; } -.bi-node-plus-fill::before { content: "\f4a6"; } -.bi-node-plus::before { content: "\f4a7"; } -.bi-nut-fill::before { content: "\f4a8"; } -.bi-nut::before { content: "\f4a9"; } -.bi-octagon-fill::before { content: "\f4aa"; } -.bi-octagon-half::before { content: "\f4ab"; } -.bi-octagon::before { content: "\f4ac"; } -.bi-option::before { content: "\f4ad"; } -.bi-outlet::before { content: "\f4ae"; } -.bi-paint-bucket::before { content: "\f4af"; } -.bi-palette-fill::before { content: "\f4b0"; } -.bi-palette::before { content: "\f4b1"; } -.bi-palette2::before { content: "\f4b2"; } -.bi-paperclip::before { content: "\f4b3"; } -.bi-paragraph::before { content: "\f4b4"; } -.bi-patch-check-fill::before { content: "\f4b5"; } -.bi-patch-check::before { content: "\f4b6"; } -.bi-patch-exclamation-fill::before { content: "\f4b7"; } -.bi-patch-exclamation::before { content: "\f4b8"; } -.bi-patch-minus-fill::before { content: "\f4b9"; } -.bi-patch-minus::before { content: "\f4ba"; } -.bi-patch-plus-fill::before { content: "\f4bb"; } -.bi-patch-plus::before { content: "\f4bc"; } -.bi-patch-question-fill::before { content: "\f4bd"; } -.bi-patch-question::before { content: "\f4be"; } -.bi-pause-btn-fill::before { content: "\f4bf"; } -.bi-pause-btn::before { content: "\f4c0"; } -.bi-pause-circle-fill::before { content: "\f4c1"; } -.bi-pause-circle::before { content: "\f4c2"; } -.bi-pause-fill::before { content: "\f4c3"; } -.bi-pause::before { content: "\f4c4"; } -.bi-peace-fill::before { content: "\f4c5"; } -.bi-peace::before { content: "\f4c6"; } -.bi-pen-fill::before { content: "\f4c7"; } -.bi-pen::before { content: "\f4c8"; } -.bi-pencil-fill::before { content: "\f4c9"; } -.bi-pencil-square::before { content: "\f4ca"; } -.bi-pencil::before { content: "\f4cb"; } -.bi-pentagon-fill::before { content: "\f4cc"; } -.bi-pentagon-half::before { content: "\f4cd"; } -.bi-pentagon::before { content: "\f4ce"; } -.bi-people-fill::before { content: "\f4cf"; } -.bi-people::before { content: "\f4d0"; } -.bi-percent::before { content: "\f4d1"; } -.bi-person-badge-fill::before { content: "\f4d2"; } -.bi-person-badge::before { content: "\f4d3"; } -.bi-person-bounding-box::before { content: "\f4d4"; } -.bi-person-check-fill::before { content: "\f4d5"; } -.bi-person-check::before { content: "\f4d6"; } -.bi-person-circle::before { content: "\f4d7"; } -.bi-person-dash-fill::before { content: "\f4d8"; } -.bi-person-dash::before { content: "\f4d9"; } -.bi-person-fill::before { content: "\f4da"; } -.bi-person-lines-fill::before { content: "\f4db"; } -.bi-person-plus-fill::before { content: "\f4dc"; } -.bi-person-plus::before { content: "\f4dd"; } -.bi-person-square::before { content: "\f4de"; } -.bi-person-x-fill::before { content: "\f4df"; } -.bi-person-x::before { content: "\f4e0"; } -.bi-person::before { content: "\f4e1"; } -.bi-phone-fill::before { content: "\f4e2"; } -.bi-phone-landscape-fill::before { content: "\f4e3"; } -.bi-phone-landscape::before { content: "\f4e4"; } -.bi-phone-vibrate-fill::before { content: "\f4e5"; } -.bi-phone-vibrate::before { content: "\f4e6"; } -.bi-phone::before { content: "\f4e7"; } -.bi-pie-chart-fill::before { content: "\f4e8"; } -.bi-pie-chart::before { content: "\f4e9"; } -.bi-pin-angle-fill::before { content: "\f4ea"; } -.bi-pin-angle::before { content: "\f4eb"; } -.bi-pin-fill::before { content: "\f4ec"; } -.bi-pin::before { content: "\f4ed"; } -.bi-pip-fill::before { content: "\f4ee"; } -.bi-pip::before { content: "\f4ef"; } -.bi-play-btn-fill::before { content: "\f4f0"; } -.bi-play-btn::before { content: "\f4f1"; } -.bi-play-circle-fill::before { content: "\f4f2"; } -.bi-play-circle::before { content: "\f4f3"; } -.bi-play-fill::before { content: "\f4f4"; } -.bi-play::before { content: "\f4f5"; } -.bi-plug-fill::before { content: "\f4f6"; } -.bi-plug::before { content: "\f4f7"; } -.bi-plus-circle-dotted::before { content: "\f4f8"; } -.bi-plus-circle-fill::before { content: "\f4f9"; } -.bi-plus-circle::before { content: "\f4fa"; } -.bi-plus-square-dotted::before { content: "\f4fb"; } -.bi-plus-square-fill::before { content: "\f4fc"; } -.bi-plus-square::before { content: "\f4fd"; } -.bi-plus::before { content: "\f4fe"; } -.bi-power::before { content: "\f4ff"; } -.bi-printer-fill::before { content: "\f500"; } -.bi-printer::before { content: "\f501"; } -.bi-puzzle-fill::before { content: "\f502"; } -.bi-puzzle::before { content: "\f503"; } -.bi-question-circle-fill::before { content: "\f504"; } -.bi-question-circle::before { content: "\f505"; } -.bi-question-diamond-fill::before { content: "\f506"; } -.bi-question-diamond::before { content: "\f507"; } -.bi-question-octagon-fill::before { content: "\f508"; } -.bi-question-octagon::before { content: "\f509"; } -.bi-question-square-fill::before { content: "\f50a"; } -.bi-question-square::before { content: "\f50b"; } -.bi-question::before { content: "\f50c"; } -.bi-rainbow::before { content: "\f50d"; } -.bi-receipt-cutoff::before { content: "\f50e"; } -.bi-receipt::before { content: "\f50f"; } -.bi-reception-0::before { content: "\f510"; } -.bi-reception-1::before { content: "\f511"; } -.bi-reception-2::before { content: "\f512"; } -.bi-reception-3::before { content: "\f513"; } -.bi-reception-4::before { content: "\f514"; } -.bi-record-btn-fill::before { content: "\f515"; } -.bi-record-btn::before { content: "\f516"; } -.bi-record-circle-fill::before { content: "\f517"; } -.bi-record-circle::before { content: "\f518"; } -.bi-record-fill::before { content: "\f519"; } -.bi-record::before { content: "\f51a"; } -.bi-record2-fill::before { content: "\f51b"; } -.bi-record2::before { content: "\f51c"; } -.bi-reply-all-fill::before { content: "\f51d"; } -.bi-reply-all::before { content: "\f51e"; } -.bi-reply-fill::before { content: "\f51f"; } -.bi-reply::before { content: "\f520"; } -.bi-rss-fill::before { content: "\f521"; } -.bi-rss::before { content: "\f522"; } -.bi-rulers::before { content: "\f523"; } -.bi-save-fill::before { content: "\f524"; } -.bi-save::before { content: "\f525"; } -.bi-save2-fill::before { content: "\f526"; } -.bi-save2::before { content: "\f527"; } -.bi-scissors::before { content: "\f528"; } -.bi-screwdriver::before { content: "\f529"; } -.bi-search::before { content: "\f52a"; } -.bi-segmented-nav::before { content: "\f52b"; } -.bi-server::before { content: "\f52c"; } -.bi-share-fill::before { content: "\f52d"; } -.bi-share::before { content: "\f52e"; } -.bi-shield-check::before { content: "\f52f"; } -.bi-shield-exclamation::before { content: "\f530"; } -.bi-shield-fill-check::before { content: "\f531"; } -.bi-shield-fill-exclamation::before { content: "\f532"; } -.bi-shield-fill-minus::before { content: "\f533"; } -.bi-shield-fill-plus::before { content: "\f534"; } -.bi-shield-fill-x::before { content: "\f535"; } -.bi-shield-fill::before { content: "\f536"; } -.bi-shield-lock-fill::before { content: "\f537"; } -.bi-shield-lock::before { content: "\f538"; } -.bi-shield-minus::before { content: "\f539"; } -.bi-shield-plus::before { content: "\f53a"; } -.bi-shield-shaded::before { content: "\f53b"; } -.bi-shield-slash-fill::before { content: "\f53c"; } -.bi-shield-slash::before { content: "\f53d"; } -.bi-shield-x::before { content: "\f53e"; } -.bi-shield::before { content: "\f53f"; } -.bi-shift-fill::before { content: "\f540"; } -.bi-shift::before { content: "\f541"; } -.bi-shop-window::before { content: "\f542"; } -.bi-shop::before { content: "\f543"; } -.bi-shuffle::before { content: "\f544"; } -.bi-signpost-2-fill::before { content: "\f545"; } -.bi-signpost-2::before { content: "\f546"; } -.bi-signpost-fill::before { content: "\f547"; } -.bi-signpost-split-fill::before { content: "\f548"; } -.bi-signpost-split::before { content: "\f549"; } -.bi-signpost::before { content: "\f54a"; } -.bi-sim-fill::before { content: "\f54b"; } -.bi-sim::before { content: "\f54c"; } -.bi-skip-backward-btn-fill::before { content: "\f54d"; } -.bi-skip-backward-btn::before { content: "\f54e"; } -.bi-skip-backward-circle-fill::before { content: "\f54f"; } -.bi-skip-backward-circle::before { content: "\f550"; } -.bi-skip-backward-fill::before { content: "\f551"; } -.bi-skip-backward::before { content: "\f552"; } -.bi-skip-end-btn-fill::before { content: "\f553"; } -.bi-skip-end-btn::before { content: "\f554"; } -.bi-skip-end-circle-fill::before { content: "\f555"; } -.bi-skip-end-circle::before { content: "\f556"; } -.bi-skip-end-fill::before { content: "\f557"; } -.bi-skip-end::before { content: "\f558"; } -.bi-skip-forward-btn-fill::before { content: "\f559"; } -.bi-skip-forward-btn::before { content: "\f55a"; } -.bi-skip-forward-circle-fill::before { content: "\f55b"; } -.bi-skip-forward-circle::before { content: "\f55c"; } -.bi-skip-forward-fill::before { content: "\f55d"; } -.bi-skip-forward::before { content: "\f55e"; } -.bi-skip-start-btn-fill::before { content: "\f55f"; } -.bi-skip-start-btn::before { content: "\f560"; } -.bi-skip-start-circle-fill::before { content: "\f561"; } -.bi-skip-start-circle::before { content: "\f562"; } -.bi-skip-start-fill::before { content: "\f563"; } -.bi-skip-start::before { content: "\f564"; } -.bi-slack::before { content: "\f565"; } -.bi-slash-circle-fill::before { content: "\f566"; } -.bi-slash-circle::before { content: "\f567"; } -.bi-slash-square-fill::before { content: "\f568"; } -.bi-slash-square::before { content: "\f569"; } -.bi-slash::before { content: "\f56a"; } -.bi-sliders::before { content: "\f56b"; } -.bi-smartwatch::before { content: "\f56c"; } -.bi-snow::before { content: "\f56d"; } -.bi-snow2::before { content: "\f56e"; } -.bi-snow3::before { content: "\f56f"; } -.bi-sort-alpha-down-alt::before { content: "\f570"; } -.bi-sort-alpha-down::before { content: "\f571"; } -.bi-sort-alpha-up-alt::before { content: "\f572"; } -.bi-sort-alpha-up::before { content: "\f573"; } -.bi-sort-down-alt::before { content: "\f574"; } -.bi-sort-down::before { content: "\f575"; } -.bi-sort-numeric-down-alt::before { content: "\f576"; } -.bi-sort-numeric-down::before { content: "\f577"; } -.bi-sort-numeric-up-alt::before { content: "\f578"; } -.bi-sort-numeric-up::before { content: "\f579"; } -.bi-sort-up-alt::before { content: "\f57a"; } -.bi-sort-up::before { content: "\f57b"; } -.bi-soundwave::before { content: "\f57c"; } -.bi-speaker-fill::before { content: "\f57d"; } -.bi-speaker::before { content: "\f57e"; } -.bi-speedometer::before { content: "\f57f"; } -.bi-speedometer2::before { content: "\f580"; } -.bi-spellcheck::before { content: "\f581"; } -.bi-square-fill::before { content: "\f582"; } -.bi-square-half::before { content: "\f583"; } -.bi-square::before { content: "\f584"; } -.bi-stack::before { content: "\f585"; } -.bi-star-fill::before { content: "\f586"; } -.bi-star-half::before { content: "\f587"; } -.bi-star::before { content: "\f588"; } -.bi-stars::before { content: "\f589"; } -.bi-stickies-fill::before { content: "\f58a"; } -.bi-stickies::before { content: "\f58b"; } -.bi-sticky-fill::before { content: "\f58c"; } -.bi-sticky::before { content: "\f58d"; } -.bi-stop-btn-fill::before { content: "\f58e"; } -.bi-stop-btn::before { content: "\f58f"; } -.bi-stop-circle-fill::before { content: "\f590"; } -.bi-stop-circle::before { content: "\f591"; } -.bi-stop-fill::before { content: "\f592"; } -.bi-stop::before { content: "\f593"; } -.bi-stoplights-fill::before { content: "\f594"; } -.bi-stoplights::before { content: "\f595"; } -.bi-stopwatch-fill::before { content: "\f596"; } -.bi-stopwatch::before { content: "\f597"; } -.bi-subtract::before { content: "\f598"; } -.bi-suit-club-fill::before { content: "\f599"; } -.bi-suit-club::before { content: "\f59a"; } -.bi-suit-diamond-fill::before { content: "\f59b"; } -.bi-suit-diamond::before { content: "\f59c"; } -.bi-suit-heart-fill::before { content: "\f59d"; } -.bi-suit-heart::before { content: "\f59e"; } -.bi-suit-spade-fill::before { content: "\f59f"; } -.bi-suit-spade::before { content: "\f5a0"; } -.bi-sun-fill::before { content: "\f5a1"; } -.bi-sun::before { content: "\f5a2"; } -.bi-sunglasses::before { content: "\f5a3"; } -.bi-sunrise-fill::before { content: "\f5a4"; } -.bi-sunrise::before { content: "\f5a5"; } -.bi-sunset-fill::before { content: "\f5a6"; } -.bi-sunset::before { content: "\f5a7"; } -.bi-symmetry-horizontal::before { content: "\f5a8"; } -.bi-symmetry-vertical::before { content: "\f5a9"; } -.bi-table::before { content: "\f5aa"; } -.bi-tablet-fill::before { content: "\f5ab"; } -.bi-tablet-landscape-fill::before { content: "\f5ac"; } -.bi-tablet-landscape::before { content: "\f5ad"; } -.bi-tablet::before { content: "\f5ae"; } -.bi-tag-fill::before { content: "\f5af"; } -.bi-tag::before { content: "\f5b0"; } -.bi-tags-fill::before { content: "\f5b1"; } -.bi-tags::before { content: "\f5b2"; } -.bi-telegram::before { content: "\f5b3"; } -.bi-telephone-fill::before { content: "\f5b4"; } -.bi-telephone-forward-fill::before { content: "\f5b5"; } -.bi-telephone-forward::before { content: "\f5b6"; } -.bi-telephone-inbound-fill::before { content: "\f5b7"; } -.bi-telephone-inbound::before { content: "\f5b8"; } -.bi-telephone-minus-fill::before { content: "\f5b9"; } -.bi-telephone-minus::before { content: "\f5ba"; } -.bi-telephone-outbound-fill::before { content: "\f5bb"; } -.bi-telephone-outbound::before { content: "\f5bc"; } -.bi-telephone-plus-fill::before { content: "\f5bd"; } -.bi-telephone-plus::before { content: "\f5be"; } -.bi-telephone-x-fill::before { content: "\f5bf"; } -.bi-telephone-x::before { content: "\f5c0"; } -.bi-telephone::before { content: "\f5c1"; } -.bi-terminal-fill::before { content: "\f5c2"; } -.bi-terminal::before { content: "\f5c3"; } -.bi-text-center::before { content: "\f5c4"; } -.bi-text-indent-left::before { content: "\f5c5"; } -.bi-text-indent-right::before { content: "\f5c6"; } -.bi-text-left::before { content: "\f5c7"; } -.bi-text-paragraph::before { content: "\f5c8"; } -.bi-text-right::before { content: "\f5c9"; } -.bi-textarea-resize::before { content: "\f5ca"; } -.bi-textarea-t::before { content: "\f5cb"; } -.bi-textarea::before { content: "\f5cc"; } -.bi-thermometer-half::before { content: "\f5cd"; } -.bi-thermometer-high::before { content: "\f5ce"; } -.bi-thermometer-low::before { content: "\f5cf"; } -.bi-thermometer-snow::before { content: "\f5d0"; } -.bi-thermometer-sun::before { content: "\f5d1"; } -.bi-thermometer::before { content: "\f5d2"; } -.bi-three-dots-vertical::before { content: "\f5d3"; } -.bi-three-dots::before { content: "\f5d4"; } -.bi-toggle-off::before { content: "\f5d5"; } -.bi-toggle-on::before { content: "\f5d6"; } -.bi-toggle2-off::before { content: "\f5d7"; } -.bi-toggle2-on::before { content: "\f5d8"; } -.bi-toggles::before { content: "\f5d9"; } -.bi-toggles2::before { content: "\f5da"; } -.bi-tools::before { content: "\f5db"; } -.bi-tornado::before { content: "\f5dc"; } -.bi-trash-fill::before { content: "\f5dd"; } -.bi-trash::before { content: "\f5de"; } -.bi-trash2-fill::before { content: "\f5df"; } -.bi-trash2::before { content: "\f5e0"; } -.bi-tree-fill::before { content: "\f5e1"; } -.bi-tree::before { content: "\f5e2"; } -.bi-triangle-fill::before { content: "\f5e3"; } -.bi-triangle-half::before { content: "\f5e4"; } -.bi-triangle::before { content: "\f5e5"; } -.bi-trophy-fill::before { content: "\f5e6"; } -.bi-trophy::before { content: "\f5e7"; } -.bi-tropical-storm::before { content: "\f5e8"; } -.bi-truck-flatbed::before { content: "\f5e9"; } -.bi-truck::before { content: "\f5ea"; } -.bi-tsunami::before { content: "\f5eb"; } -.bi-tv-fill::before { content: "\f5ec"; } -.bi-tv::before { content: "\f5ed"; } -.bi-twitch::before { content: "\f5ee"; } -.bi-twitter::before { content: "\f5ef"; } -.bi-type-bold::before { content: "\f5f0"; } -.bi-type-h1::before { content: "\f5f1"; } -.bi-type-h2::before { content: "\f5f2"; } -.bi-type-h3::before { content: "\f5f3"; } -.bi-type-italic::before { content: "\f5f4"; } -.bi-type-strikethrough::before { content: "\f5f5"; } -.bi-type-underline::before { content: "\f5f6"; } -.bi-type::before { content: "\f5f7"; } -.bi-ui-checks-grid::before { content: "\f5f8"; } -.bi-ui-checks::before { content: "\f5f9"; } -.bi-ui-radios-grid::before { content: "\f5fa"; } -.bi-ui-radios::before { content: "\f5fb"; } -.bi-umbrella-fill::before { content: "\f5fc"; } -.bi-umbrella::before { content: "\f5fd"; } -.bi-union::before { content: "\f5fe"; } -.bi-unlock-fill::before { content: "\f5ff"; } -.bi-unlock::before { content: "\f600"; } -.bi-upc-scan::before { content: "\f601"; } -.bi-upc::before { content: "\f602"; } -.bi-upload::before { content: "\f603"; } -.bi-vector-pen::before { content: "\f604"; } -.bi-view-list::before { content: "\f605"; } -.bi-view-stacked::before { content: "\f606"; } -.bi-vinyl-fill::before { content: "\f607"; } -.bi-vinyl::before { content: "\f608"; } -.bi-voicemail::before { content: "\f609"; } -.bi-volume-down-fill::before { content: "\f60a"; } -.bi-volume-down::before { content: "\f60b"; } -.bi-volume-mute-fill::before { content: "\f60c"; } -.bi-volume-mute::before { content: "\f60d"; } -.bi-volume-off-fill::before { content: "\f60e"; } -.bi-volume-off::before { content: "\f60f"; } -.bi-volume-up-fill::before { content: "\f610"; } -.bi-volume-up::before { content: "\f611"; } -.bi-vr::before { content: "\f612"; } -.bi-wallet-fill::before { content: "\f613"; } -.bi-wallet::before { content: "\f614"; } -.bi-wallet2::before { content: "\f615"; } -.bi-watch::before { content: "\f616"; } -.bi-water::before { content: "\f617"; } -.bi-whatsapp::before { content: "\f618"; } -.bi-wifi-1::before { content: "\f619"; } -.bi-wifi-2::before { content: "\f61a"; } -.bi-wifi-off::before { content: "\f61b"; } -.bi-wifi::before { content: "\f61c"; } -.bi-wind::before { content: "\f61d"; } -.bi-window-dock::before { content: "\f61e"; } -.bi-window-sidebar::before { content: "\f61f"; } -.bi-window::before { content: "\f620"; } -.bi-wrench::before { content: "\f621"; } -.bi-x-circle-fill::before { content: "\f622"; } -.bi-x-circle::before { content: "\f623"; } -.bi-x-diamond-fill::before { content: "\f624"; } -.bi-x-diamond::before { content: "\f625"; } -.bi-x-octagon-fill::before { content: "\f626"; } -.bi-x-octagon::before { content: "\f627"; } -.bi-x-square-fill::before { content: "\f628"; } -.bi-x-square::before { content: "\f629"; } -.bi-x::before { content: "\f62a"; } -.bi-youtube::before { content: "\f62b"; } -.bi-zoom-in::before { content: "\f62c"; } -.bi-zoom-out::before { content: "\f62d"; } -.bi-bank::before { content: "\f62e"; } -.bi-bank2::before { content: "\f62f"; } -.bi-bell-slash-fill::before { content: "\f630"; } -.bi-bell-slash::before { content: "\f631"; } -.bi-cash-coin::before { content: "\f632"; } -.bi-check-lg::before { content: "\f633"; } -.bi-coin::before { content: "\f634"; } -.bi-currency-bitcoin::before { content: "\f635"; } -.bi-currency-dollar::before { content: "\f636"; } -.bi-currency-euro::before { content: "\f637"; } -.bi-currency-exchange::before { content: "\f638"; } -.bi-currency-pound::before { content: "\f639"; } -.bi-currency-yen::before { content: "\f63a"; } -.bi-dash-lg::before { content: "\f63b"; } -.bi-exclamation-lg::before { content: "\f63c"; } -.bi-file-earmark-pdf-fill::before { content: "\f63d"; } -.bi-file-earmark-pdf::before { content: "\f63e"; } -.bi-file-pdf-fill::before { content: "\f63f"; } -.bi-file-pdf::before { content: "\f640"; } -.bi-gender-ambiguous::before { content: "\f641"; } -.bi-gender-female::before { content: "\f642"; } -.bi-gender-male::before { content: "\f643"; } -.bi-gender-trans::before { content: "\f644"; } -.bi-headset-vr::before { content: "\f645"; } -.bi-info-lg::before { content: "\f646"; } -.bi-mastodon::before { content: "\f647"; } -.bi-messenger::before { content: "\f648"; } -.bi-piggy-bank-fill::before { content: "\f649"; } -.bi-piggy-bank::before { content: "\f64a"; } -.bi-pin-map-fill::before { content: "\f64b"; } -.bi-pin-map::before { content: "\f64c"; } -.bi-plus-lg::before { content: "\f64d"; } -.bi-question-lg::before { content: "\f64e"; } -.bi-recycle::before { content: "\f64f"; } -.bi-reddit::before { content: "\f650"; } -.bi-safe-fill::before { content: "\f651"; } -.bi-safe2-fill::before { content: "\f652"; } -.bi-safe2::before { content: "\f653"; } -.bi-sd-card-fill::before { content: "\f654"; } -.bi-sd-card::before { content: "\f655"; } -.bi-skype::before { content: "\f656"; } -.bi-slash-lg::before { content: "\f657"; } -.bi-translate::before { content: "\f658"; } -.bi-x-lg::before { content: "\f659"; } -.bi-safe::before { content: "\f65a"; } -.bi-apple::before { content: "\f65b"; } -.bi-microsoft::before { content: "\f65d"; } -.bi-windows::before { content: "\f65e"; } -.bi-behance::before { content: "\f65c"; } -.bi-dribbble::before { content: "\f65f"; } -.bi-line::before { content: "\f660"; } -.bi-medium::before { content: "\f661"; } -.bi-paypal::before { content: "\f662"; } -.bi-pinterest::before { content: "\f663"; } -.bi-signal::before { content: "\f664"; } -.bi-snapchat::before { content: "\f665"; } -.bi-spotify::before { content: "\f666"; } -.bi-stack-overflow::before { content: "\f667"; } -.bi-strava::before { content: "\f668"; } -.bi-wordpress::before { content: "\f669"; } -.bi-vimeo::before { content: "\f66a"; } -.bi-activity::before { content: "\f66b"; } -.bi-easel2-fill::before { content: "\f66c"; } -.bi-easel2::before { content: "\f66d"; } -.bi-easel3-fill::before { content: "\f66e"; } -.bi-easel3::before { content: "\f66f"; } -.bi-fan::before { content: "\f670"; } -.bi-fingerprint::before { content: "\f671"; } -.bi-graph-down-arrow::before { content: "\f672"; } -.bi-graph-up-arrow::before { content: "\f673"; } -.bi-hypnotize::before { content: "\f674"; } -.bi-magic::before { content: "\f675"; } -.bi-person-rolodex::before { content: "\f676"; } -.bi-person-video::before { content: "\f677"; } -.bi-person-video2::before { content: "\f678"; } -.bi-person-video3::before { content: "\f679"; } -.bi-person-workspace::before { content: "\f67a"; } -.bi-radioactive::before { content: "\f67b"; } -.bi-webcam-fill::before { content: "\f67c"; } -.bi-webcam::before { content: "\f67d"; } -.bi-yin-yang::before { content: "\f67e"; } -.bi-bandaid-fill::before { content: "\f680"; } -.bi-bandaid::before { content: "\f681"; } -.bi-bluetooth::before { content: "\f682"; } -.bi-body-text::before { content: "\f683"; } -.bi-boombox::before { content: "\f684"; } -.bi-boxes::before { content: "\f685"; } -.bi-dpad-fill::before { content: "\f686"; } -.bi-dpad::before { content: "\f687"; } -.bi-ear-fill::before { content: "\f688"; } -.bi-ear::before { content: "\f689"; } -.bi-envelope-check-fill::before { content: "\f68b"; } -.bi-envelope-check::before { content: "\f68c"; } -.bi-envelope-dash-fill::before { content: "\f68e"; } -.bi-envelope-dash::before { content: "\f68f"; } -.bi-envelope-exclamation-fill::before { content: "\f691"; } -.bi-envelope-exclamation::before { content: "\f692"; } -.bi-envelope-plus-fill::before { content: "\f693"; } -.bi-envelope-plus::before { content: "\f694"; } -.bi-envelope-slash-fill::before { content: "\f696"; } -.bi-envelope-slash::before { content: "\f697"; } -.bi-envelope-x-fill::before { content: "\f699"; } -.bi-envelope-x::before { content: "\f69a"; } -.bi-explicit-fill::before { content: "\f69b"; } -.bi-explicit::before { content: "\f69c"; } -.bi-git::before { content: "\f69d"; } -.bi-infinity::before { content: "\f69e"; } -.bi-list-columns-reverse::before { content: "\f69f"; } -.bi-list-columns::before { content: "\f6a0"; } -.bi-meta::before { content: "\f6a1"; } -.bi-nintendo-switch::before { content: "\f6a4"; } -.bi-pc-display-horizontal::before { content: "\f6a5"; } -.bi-pc-display::before { content: "\f6a6"; } -.bi-pc-horizontal::before { content: "\f6a7"; } -.bi-pc::before { content: "\f6a8"; } -.bi-playstation::before { content: "\f6a9"; } -.bi-plus-slash-minus::before { content: "\f6aa"; } -.bi-projector-fill::before { content: "\f6ab"; } -.bi-projector::before { content: "\f6ac"; } -.bi-qr-code-scan::before { content: "\f6ad"; } -.bi-qr-code::before { content: "\f6ae"; } -.bi-quora::before { content: "\f6af"; } -.bi-quote::before { content: "\f6b0"; } -.bi-robot::before { content: "\f6b1"; } -.bi-send-check-fill::before { content: "\f6b2"; } -.bi-send-check::before { content: "\f6b3"; } -.bi-send-dash-fill::before { content: "\f6b4"; } -.bi-send-dash::before { content: "\f6b5"; } -.bi-send-exclamation-fill::before { content: "\f6b7"; } -.bi-send-exclamation::before { content: "\f6b8"; } -.bi-send-fill::before { content: "\f6b9"; } -.bi-send-plus-fill::before { content: "\f6ba"; } -.bi-send-plus::before { content: "\f6bb"; } -.bi-send-slash-fill::before { content: "\f6bc"; } -.bi-send-slash::before { content: "\f6bd"; } -.bi-send-x-fill::before { content: "\f6be"; } -.bi-send-x::before { content: "\f6bf"; } -.bi-send::before { content: "\f6c0"; } -.bi-steam::before { content: "\f6c1"; } -.bi-terminal-dash::before { content: "\f6c3"; } -.bi-terminal-plus::before { content: "\f6c4"; } -.bi-terminal-split::before { content: "\f6c5"; } -.bi-ticket-detailed-fill::before { content: "\f6c6"; } -.bi-ticket-detailed::before { content: "\f6c7"; } -.bi-ticket-fill::before { content: "\f6c8"; } -.bi-ticket-perforated-fill::before { content: "\f6c9"; } -.bi-ticket-perforated::before { content: "\f6ca"; } -.bi-ticket::before { content: "\f6cb"; } -.bi-tiktok::before { content: "\f6cc"; } -.bi-window-dash::before { content: "\f6cd"; } -.bi-window-desktop::before { content: "\f6ce"; } -.bi-window-fullscreen::before { content: "\f6cf"; } -.bi-window-plus::before { content: "\f6d0"; } -.bi-window-split::before { content: "\f6d1"; } -.bi-window-stack::before { content: "\f6d2"; } -.bi-window-x::before { content: "\f6d3"; } -.bi-xbox::before { content: "\f6d4"; } -.bi-ethernet::before { content: "\f6d5"; } -.bi-hdmi-fill::before { content: "\f6d6"; } -.bi-hdmi::before { content: "\f6d7"; } -.bi-usb-c-fill::before { content: "\f6d8"; } -.bi-usb-c::before { content: "\f6d9"; } -.bi-usb-fill::before { content: "\f6da"; } -.bi-usb-plug-fill::before { content: "\f6db"; } -.bi-usb-plug::before { content: "\f6dc"; } -.bi-usb-symbol::before { content: "\f6dd"; } -.bi-usb::before { content: "\f6de"; } -.bi-boombox-fill::before { content: "\f6df"; } -.bi-displayport::before { content: "\f6e1"; } -.bi-gpu-card::before { content: "\f6e2"; } -.bi-memory::before { content: "\f6e3"; } -.bi-modem-fill::before { content: "\f6e4"; } -.bi-modem::before { content: "\f6e5"; } -.bi-motherboard-fill::before { content: "\f6e6"; } -.bi-motherboard::before { content: "\f6e7"; } -.bi-optical-audio-fill::before { content: "\f6e8"; } -.bi-optical-audio::before { content: "\f6e9"; } -.bi-pci-card::before { content: "\f6ea"; } -.bi-router-fill::before { content: "\f6eb"; } -.bi-router::before { content: "\f6ec"; } -.bi-thunderbolt-fill::before { content: "\f6ef"; } -.bi-thunderbolt::before { content: "\f6f0"; } -.bi-usb-drive-fill::before { content: "\f6f1"; } -.bi-usb-drive::before { content: "\f6f2"; } -.bi-usb-micro-fill::before { content: "\f6f3"; } -.bi-usb-micro::before { content: "\f6f4"; } -.bi-usb-mini-fill::before { content: "\f6f5"; } -.bi-usb-mini::before { content: "\f6f6"; } -.bi-cloud-haze2::before { content: "\f6f7"; } -.bi-device-hdd-fill::before { content: "\f6f8"; } -.bi-device-hdd::before { content: "\f6f9"; } -.bi-device-ssd-fill::before { content: "\f6fa"; } -.bi-device-ssd::before { content: "\f6fb"; } -.bi-displayport-fill::before { content: "\f6fc"; } -.bi-mortarboard-fill::before { content: "\f6fd"; } -.bi-mortarboard::before { content: "\f6fe"; } -.bi-terminal-x::before { content: "\f6ff"; } -.bi-arrow-through-heart-fill::before { content: "\f700"; } -.bi-arrow-through-heart::before { content: "\f701"; } -.bi-badge-sd-fill::before { content: "\f702"; } -.bi-badge-sd::before { content: "\f703"; } -.bi-bag-heart-fill::before { content: "\f704"; } -.bi-bag-heart::before { content: "\f705"; } -.bi-balloon-fill::before { content: "\f706"; } -.bi-balloon-heart-fill::before { content: "\f707"; } -.bi-balloon-heart::before { content: "\f708"; } -.bi-balloon::before { content: "\f709"; } -.bi-box2-fill::before { content: "\f70a"; } -.bi-box2-heart-fill::before { content: "\f70b"; } -.bi-box2-heart::before { content: "\f70c"; } -.bi-box2::before { content: "\f70d"; } -.bi-braces-asterisk::before { content: "\f70e"; } -.bi-calendar-heart-fill::before { content: "\f70f"; } -.bi-calendar-heart::before { content: "\f710"; } -.bi-calendar2-heart-fill::before { content: "\f711"; } -.bi-calendar2-heart::before { content: "\f712"; } -.bi-chat-heart-fill::before { content: "\f713"; } -.bi-chat-heart::before { content: "\f714"; } -.bi-chat-left-heart-fill::before { content: "\f715"; } -.bi-chat-left-heart::before { content: "\f716"; } -.bi-chat-right-heart-fill::before { content: "\f717"; } -.bi-chat-right-heart::before { content: "\f718"; } -.bi-chat-square-heart-fill::before { content: "\f719"; } -.bi-chat-square-heart::before { content: "\f71a"; } -.bi-clipboard-check-fill::before { content: "\f71b"; } -.bi-clipboard-data-fill::before { content: "\f71c"; } -.bi-clipboard-fill::before { content: "\f71d"; } -.bi-clipboard-heart-fill::before { content: "\f71e"; } -.bi-clipboard-heart::before { content: "\f71f"; } -.bi-clipboard-minus-fill::before { content: "\f720"; } -.bi-clipboard-plus-fill::before { content: "\f721"; } -.bi-clipboard-pulse::before { content: "\f722"; } -.bi-clipboard-x-fill::before { content: "\f723"; } -.bi-clipboard2-check-fill::before { content: "\f724"; } -.bi-clipboard2-check::before { content: "\f725"; } -.bi-clipboard2-data-fill::before { content: "\f726"; } -.bi-clipboard2-data::before { content: "\f727"; } -.bi-clipboard2-fill::before { content: "\f728"; } -.bi-clipboard2-heart-fill::before { content: "\f729"; } -.bi-clipboard2-heart::before { content: "\f72a"; } -.bi-clipboard2-minus-fill::before { content: "\f72b"; } -.bi-clipboard2-minus::before { content: "\f72c"; } -.bi-clipboard2-plus-fill::before { content: "\f72d"; } -.bi-clipboard2-plus::before { content: "\f72e"; } -.bi-clipboard2-pulse-fill::before { content: "\f72f"; } -.bi-clipboard2-pulse::before { content: "\f730"; } -.bi-clipboard2-x-fill::before { content: "\f731"; } -.bi-clipboard2-x::before { content: "\f732"; } -.bi-clipboard2::before { content: "\f733"; } -.bi-emoji-kiss-fill::before { content: "\f734"; } -.bi-emoji-kiss::before { content: "\f735"; } -.bi-envelope-heart-fill::before { content: "\f736"; } -.bi-envelope-heart::before { content: "\f737"; } -.bi-envelope-open-heart-fill::before { content: "\f738"; } -.bi-envelope-open-heart::before { content: "\f739"; } -.bi-envelope-paper-fill::before { content: "\f73a"; } -.bi-envelope-paper-heart-fill::before { content: "\f73b"; } -.bi-envelope-paper-heart::before { content: "\f73c"; } -.bi-envelope-paper::before { content: "\f73d"; } -.bi-filetype-aac::before { content: "\f73e"; } -.bi-filetype-ai::before { content: "\f73f"; } -.bi-filetype-bmp::before { content: "\f740"; } -.bi-filetype-cs::before { content: "\f741"; } -.bi-filetype-css::before { content: "\f742"; } -.bi-filetype-csv::before { content: "\f743"; } -.bi-filetype-doc::before { content: "\f744"; } -.bi-filetype-docx::before { content: "\f745"; } -.bi-filetype-exe::before { content: "\f746"; } -.bi-filetype-gif::before { content: "\f747"; } -.bi-filetype-heic::before { content: "\f748"; } -.bi-filetype-html::before { content: "\f749"; } -.bi-filetype-java::before { content: "\f74a"; } -.bi-filetype-jpg::before { content: "\f74b"; } -.bi-filetype-js::before { content: "\f74c"; } -.bi-filetype-jsx::before { content: "\f74d"; } -.bi-filetype-key::before { content: "\f74e"; } -.bi-filetype-m4p::before { content: "\f74f"; } -.bi-filetype-md::before { content: "\f750"; } -.bi-filetype-mdx::before { content: "\f751"; } -.bi-filetype-mov::before { content: "\f752"; } -.bi-filetype-mp3::before { content: "\f753"; } -.bi-filetype-mp4::before { content: "\f754"; } -.bi-filetype-otf::before { content: "\f755"; } -.bi-filetype-pdf::before { content: "\f756"; } -.bi-filetype-php::before { content: "\f757"; } -.bi-filetype-png::before { content: "\f758"; } -.bi-filetype-ppt::before { content: "\f75a"; } -.bi-filetype-psd::before { content: "\f75b"; } -.bi-filetype-py::before { content: "\f75c"; } -.bi-filetype-raw::before { content: "\f75d"; } -.bi-filetype-rb::before { content: "\f75e"; } -.bi-filetype-sass::before { content: "\f75f"; } -.bi-filetype-scss::before { content: "\f760"; } -.bi-filetype-sh::before { content: "\f761"; } -.bi-filetype-svg::before { content: "\f762"; } -.bi-filetype-tiff::before { content: "\f763"; } -.bi-filetype-tsx::before { content: "\f764"; } -.bi-filetype-ttf::before { content: "\f765"; } -.bi-filetype-txt::before { content: "\f766"; } -.bi-filetype-wav::before { content: "\f767"; } -.bi-filetype-woff::before { content: "\f768"; } -.bi-filetype-xls::before { content: "\f76a"; } -.bi-filetype-xml::before { content: "\f76b"; } -.bi-filetype-yml::before { content: "\f76c"; } -.bi-heart-arrow::before { content: "\f76d"; } -.bi-heart-pulse-fill::before { content: "\f76e"; } -.bi-heart-pulse::before { content: "\f76f"; } -.bi-heartbreak-fill::before { content: "\f770"; } -.bi-heartbreak::before { content: "\f771"; } -.bi-hearts::before { content: "\f772"; } -.bi-hospital-fill::before { content: "\f773"; } -.bi-hospital::before { content: "\f774"; } -.bi-house-heart-fill::before { content: "\f775"; } -.bi-house-heart::before { content: "\f776"; } -.bi-incognito::before { content: "\f777"; } -.bi-magnet-fill::before { content: "\f778"; } -.bi-magnet::before { content: "\f779"; } -.bi-person-heart::before { content: "\f77a"; } -.bi-person-hearts::before { content: "\f77b"; } -.bi-phone-flip::before { content: "\f77c"; } -.bi-plugin::before { content: "\f77d"; } -.bi-postage-fill::before { content: "\f77e"; } -.bi-postage-heart-fill::before { content: "\f77f"; } -.bi-postage-heart::before { content: "\f780"; } -.bi-postage::before { content: "\f781"; } -.bi-postcard-fill::before { content: "\f782"; } -.bi-postcard-heart-fill::before { content: "\f783"; } -.bi-postcard-heart::before { content: "\f784"; } -.bi-postcard::before { content: "\f785"; } -.bi-search-heart-fill::before { content: "\f786"; } -.bi-search-heart::before { content: "\f787"; } -.bi-sliders2-vertical::before { content: "\f788"; } -.bi-sliders2::before { content: "\f789"; } -.bi-trash3-fill::before { content: "\f78a"; } -.bi-trash3::before { content: "\f78b"; } -.bi-valentine::before { content: "\f78c"; } -.bi-valentine2::before { content: "\f78d"; } -.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } -.bi-wrench-adjustable-circle::before { content: "\f78f"; } -.bi-wrench-adjustable::before { content: "\f790"; } -.bi-filetype-json::before { content: "\f791"; } -.bi-filetype-pptx::before { content: "\f792"; } -.bi-filetype-xlsx::before { content: "\f793"; } -.bi-1-circle-fill::before { content: "\f796"; } -.bi-1-circle::before { content: "\f797"; } -.bi-1-square-fill::before { content: "\f798"; } -.bi-1-square::before { content: "\f799"; } -.bi-2-circle-fill::before { content: "\f79c"; } -.bi-2-circle::before { content: "\f79d"; } -.bi-2-square-fill::before { content: "\f79e"; } -.bi-2-square::before { content: "\f79f"; } -.bi-3-circle-fill::before { content: "\f7a2"; } -.bi-3-circle::before { content: "\f7a3"; } -.bi-3-square-fill::before { content: "\f7a4"; } -.bi-3-square::before { content: "\f7a5"; } -.bi-4-circle-fill::before { content: "\f7a8"; } -.bi-4-circle::before { content: "\f7a9"; } -.bi-4-square-fill::before { content: "\f7aa"; } -.bi-4-square::before { content: "\f7ab"; } -.bi-5-circle-fill::before { content: "\f7ae"; } -.bi-5-circle::before { content: "\f7af"; } -.bi-5-square-fill::before { content: "\f7b0"; } -.bi-5-square::before { content: "\f7b1"; } -.bi-6-circle-fill::before { content: "\f7b4"; } -.bi-6-circle::before { content: "\f7b5"; } -.bi-6-square-fill::before { content: "\f7b6"; } -.bi-6-square::before { content: "\f7b7"; } -.bi-7-circle-fill::before { content: "\f7ba"; } -.bi-7-circle::before { content: "\f7bb"; } -.bi-7-square-fill::before { content: "\f7bc"; } -.bi-7-square::before { content: "\f7bd"; } -.bi-8-circle-fill::before { content: "\f7c0"; } -.bi-8-circle::before { content: "\f7c1"; } -.bi-8-square-fill::before { content: "\f7c2"; } -.bi-8-square::before { content: "\f7c3"; } -.bi-9-circle-fill::before { content: "\f7c6"; } -.bi-9-circle::before { content: "\f7c7"; } -.bi-9-square-fill::before { content: "\f7c8"; } -.bi-9-square::before { content: "\f7c9"; } -.bi-airplane-engines-fill::before { content: "\f7ca"; } -.bi-airplane-engines::before { content: "\f7cb"; } -.bi-airplane-fill::before { content: "\f7cc"; } -.bi-airplane::before { content: "\f7cd"; } -.bi-alexa::before { content: "\f7ce"; } -.bi-alipay::before { content: "\f7cf"; } -.bi-android::before { content: "\f7d0"; } -.bi-android2::before { content: "\f7d1"; } -.bi-box-fill::before { content: "\f7d2"; } -.bi-box-seam-fill::before { content: "\f7d3"; } -.bi-browser-chrome::before { content: "\f7d4"; } -.bi-browser-edge::before { content: "\f7d5"; } -.bi-browser-firefox::before { content: "\f7d6"; } -.bi-browser-safari::before { content: "\f7d7"; } -.bi-c-circle-fill::before { content: "\f7da"; } -.bi-c-circle::before { content: "\f7db"; } -.bi-c-square-fill::before { content: "\f7dc"; } -.bi-c-square::before { content: "\f7dd"; } -.bi-capsule-pill::before { content: "\f7de"; } -.bi-capsule::before { content: "\f7df"; } -.bi-car-front-fill::before { content: "\f7e0"; } -.bi-car-front::before { content: "\f7e1"; } -.bi-cassette-fill::before { content: "\f7e2"; } -.bi-cassette::before { content: "\f7e3"; } -.bi-cc-circle-fill::before { content: "\f7e6"; } -.bi-cc-circle::before { content: "\f7e7"; } -.bi-cc-square-fill::before { content: "\f7e8"; } -.bi-cc-square::before { content: "\f7e9"; } -.bi-cup-hot-fill::before { content: "\f7ea"; } -.bi-cup-hot::before { content: "\f7eb"; } -.bi-currency-rupee::before { content: "\f7ec"; } -.bi-dropbox::before { content: "\f7ed"; } -.bi-escape::before { content: "\f7ee"; } -.bi-fast-forward-btn-fill::before { content: "\f7ef"; } -.bi-fast-forward-btn::before { content: "\f7f0"; } -.bi-fast-forward-circle-fill::before { content: "\f7f1"; } -.bi-fast-forward-circle::before { content: "\f7f2"; } -.bi-fast-forward-fill::before { content: "\f7f3"; } -.bi-fast-forward::before { content: "\f7f4"; } -.bi-filetype-sql::before { content: "\f7f5"; } -.bi-fire::before { content: "\f7f6"; } -.bi-google-play::before { content: "\f7f7"; } -.bi-h-circle-fill::before { content: "\f7fa"; } -.bi-h-circle::before { content: "\f7fb"; } -.bi-h-square-fill::before { content: "\f7fc"; } -.bi-h-square::before { content: "\f7fd"; } -.bi-indent::before { content: "\f7fe"; } -.bi-lungs-fill::before { content: "\f7ff"; } -.bi-lungs::before { content: "\f800"; } -.bi-microsoft-teams::before { content: "\f801"; } -.bi-p-circle-fill::before { content: "\f804"; } -.bi-p-circle::before { content: "\f805"; } -.bi-p-square-fill::before { content: "\f806"; } -.bi-p-square::before { content: "\f807"; } -.bi-pass-fill::before { content: "\f808"; } -.bi-pass::before { content: "\f809"; } -.bi-prescription::before { content: "\f80a"; } -.bi-prescription2::before { content: "\f80b"; } -.bi-r-circle-fill::before { content: "\f80e"; } -.bi-r-circle::before { content: "\f80f"; } -.bi-r-square-fill::before { content: "\f810"; } -.bi-r-square::before { content: "\f811"; } -.bi-repeat-1::before { content: "\f812"; } -.bi-repeat::before { content: "\f813"; } -.bi-rewind-btn-fill::before { content: "\f814"; } -.bi-rewind-btn::before { content: "\f815"; } -.bi-rewind-circle-fill::before { content: "\f816"; } -.bi-rewind-circle::before { content: "\f817"; } -.bi-rewind-fill::before { content: "\f818"; } -.bi-rewind::before { content: "\f819"; } -.bi-train-freight-front-fill::before { content: "\f81a"; } -.bi-train-freight-front::before { content: "\f81b"; } -.bi-train-front-fill::before { content: "\f81c"; } -.bi-train-front::before { content: "\f81d"; } -.bi-train-lightrail-front-fill::before { content: "\f81e"; } -.bi-train-lightrail-front::before { content: "\f81f"; } -.bi-truck-front-fill::before { content: "\f820"; } -.bi-truck-front::before { content: "\f821"; } -.bi-ubuntu::before { content: "\f822"; } -.bi-unindent::before { content: "\f823"; } -.bi-unity::before { content: "\f824"; } -.bi-universal-access-circle::before { content: "\f825"; } -.bi-universal-access::before { content: "\f826"; } -.bi-virus::before { content: "\f827"; } -.bi-virus2::before { content: "\f828"; } -.bi-wechat::before { content: "\f829"; } -.bi-yelp::before { content: "\f82a"; } -.bi-sign-stop-fill::before { content: "\f82b"; } -.bi-sign-stop-lights-fill::before { content: "\f82c"; } -.bi-sign-stop-lights::before { content: "\f82d"; } -.bi-sign-stop::before { content: "\f82e"; } -.bi-sign-turn-left-fill::before { content: "\f82f"; } -.bi-sign-turn-left::before { content: "\f830"; } -.bi-sign-turn-right-fill::before { content: "\f831"; } -.bi-sign-turn-right::before { content: "\f832"; } -.bi-sign-turn-slight-left-fill::before { content: "\f833"; } -.bi-sign-turn-slight-left::before { content: "\f834"; } -.bi-sign-turn-slight-right-fill::before { content: "\f835"; } -.bi-sign-turn-slight-right::before { content: "\f836"; } -.bi-sign-yield-fill::before { content: "\f837"; } -.bi-sign-yield::before { content: "\f838"; } -.bi-ev-station-fill::before { content: "\f839"; } -.bi-ev-station::before { content: "\f83a"; } -.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } -.bi-fuel-pump-diesel::before { content: "\f83c"; } -.bi-fuel-pump-fill::before { content: "\f83d"; } -.bi-fuel-pump::before { content: "\f83e"; } -.bi-0-circle-fill::before { content: "\f83f"; } -.bi-0-circle::before { content: "\f840"; } -.bi-0-square-fill::before { content: "\f841"; } -.bi-0-square::before { content: "\f842"; } -.bi-rocket-fill::before { content: "\f843"; } -.bi-rocket-takeoff-fill::before { content: "\f844"; } -.bi-rocket-takeoff::before { content: "\f845"; } -.bi-rocket::before { content: "\f846"; } -.bi-stripe::before { content: "\f847"; } -.bi-subscript::before { content: "\f848"; } -.bi-superscript::before { content: "\f849"; } -.bi-trello::before { content: "\f84a"; } -.bi-envelope-at-fill::before { content: "\f84b"; } -.bi-envelope-at::before { content: "\f84c"; } -.bi-regex::before { content: "\f84d"; } -.bi-text-wrap::before { content: "\f84e"; } -.bi-sign-dead-end-fill::before { content: "\f84f"; } -.bi-sign-dead-end::before { content: "\f850"; } -.bi-sign-do-not-enter-fill::before { content: "\f851"; } -.bi-sign-do-not-enter::before { content: "\f852"; } -.bi-sign-intersection-fill::before { content: "\f853"; } -.bi-sign-intersection-side-fill::before { content: "\f854"; } -.bi-sign-intersection-side::before { content: "\f855"; } -.bi-sign-intersection-t-fill::before { content: "\f856"; } -.bi-sign-intersection-t::before { content: "\f857"; } -.bi-sign-intersection-y-fill::before { content: "\f858"; } -.bi-sign-intersection-y::before { content: "\f859"; } -.bi-sign-intersection::before { content: "\f85a"; } -.bi-sign-merge-left-fill::before { content: "\f85b"; } -.bi-sign-merge-left::before { content: "\f85c"; } -.bi-sign-merge-right-fill::before { content: "\f85d"; } -.bi-sign-merge-right::before { content: "\f85e"; } -.bi-sign-no-left-turn-fill::before { content: "\f85f"; } -.bi-sign-no-left-turn::before { content: "\f860"; } -.bi-sign-no-parking-fill::before { content: "\f861"; } -.bi-sign-no-parking::before { content: "\f862"; } -.bi-sign-no-right-turn-fill::before { content: "\f863"; } -.bi-sign-no-right-turn::before { content: "\f864"; } -.bi-sign-railroad-fill::before { content: "\f865"; } -.bi-sign-railroad::before { content: "\f866"; } -.bi-building-add::before { content: "\f867"; } -.bi-building-check::before { content: "\f868"; } -.bi-building-dash::before { content: "\f869"; } -.bi-building-down::before { content: "\f86a"; } -.bi-building-exclamation::before { content: "\f86b"; } -.bi-building-fill-add::before { content: "\f86c"; } -.bi-building-fill-check::before { content: "\f86d"; } -.bi-building-fill-dash::before { content: "\f86e"; } -.bi-building-fill-down::before { content: "\f86f"; } -.bi-building-fill-exclamation::before { content: "\f870"; } -.bi-building-fill-gear::before { content: "\f871"; } -.bi-building-fill-lock::before { content: "\f872"; } -.bi-building-fill-slash::before { content: "\f873"; } -.bi-building-fill-up::before { content: "\f874"; } -.bi-building-fill-x::before { content: "\f875"; } -.bi-building-fill::before { content: "\f876"; } -.bi-building-gear::before { content: "\f877"; } -.bi-building-lock::before { content: "\f878"; } -.bi-building-slash::before { content: "\f879"; } -.bi-building-up::before { content: "\f87a"; } -.bi-building-x::before { content: "\f87b"; } -.bi-buildings-fill::before { content: "\f87c"; } -.bi-buildings::before { content: "\f87d"; } -.bi-bus-front-fill::before { content: "\f87e"; } -.bi-bus-front::before { content: "\f87f"; } -.bi-ev-front-fill::before { content: "\f880"; } -.bi-ev-front::before { content: "\f881"; } -.bi-globe-americas::before { content: "\f882"; } -.bi-globe-asia-australia::before { content: "\f883"; } -.bi-globe-central-south-asia::before { content: "\f884"; } -.bi-globe-europe-africa::before { content: "\f885"; } -.bi-house-add-fill::before { content: "\f886"; } -.bi-house-add::before { content: "\f887"; } -.bi-house-check-fill::before { content: "\f888"; } -.bi-house-check::before { content: "\f889"; } -.bi-house-dash-fill::before { content: "\f88a"; } -.bi-house-dash::before { content: "\f88b"; } -.bi-house-down-fill::before { content: "\f88c"; } -.bi-house-down::before { content: "\f88d"; } -.bi-house-exclamation-fill::before { content: "\f88e"; } -.bi-house-exclamation::before { content: "\f88f"; } -.bi-house-gear-fill::before { content: "\f890"; } -.bi-house-gear::before { content: "\f891"; } -.bi-house-lock-fill::before { content: "\f892"; } -.bi-house-lock::before { content: "\f893"; } -.bi-house-slash-fill::before { content: "\f894"; } -.bi-house-slash::before { content: "\f895"; } -.bi-house-up-fill::before { content: "\f896"; } -.bi-house-up::before { content: "\f897"; } -.bi-house-x-fill::before { content: "\f898"; } -.bi-house-x::before { content: "\f899"; } -.bi-person-add::before { content: "\f89a"; } -.bi-person-down::before { content: "\f89b"; } -.bi-person-exclamation::before { content: "\f89c"; } -.bi-person-fill-add::before { content: "\f89d"; } -.bi-person-fill-check::before { content: "\f89e"; } -.bi-person-fill-dash::before { content: "\f89f"; } -.bi-person-fill-down::before { content: "\f8a0"; } -.bi-person-fill-exclamation::before { content: "\f8a1"; } -.bi-person-fill-gear::before { content: "\f8a2"; } -.bi-person-fill-lock::before { content: "\f8a3"; } -.bi-person-fill-slash::before { content: "\f8a4"; } -.bi-person-fill-up::before { content: "\f8a5"; } -.bi-person-fill-x::before { content: "\f8a6"; } -.bi-person-gear::before { content: "\f8a7"; } -.bi-person-lock::before { content: "\f8a8"; } -.bi-person-slash::before { content: "\f8a9"; } -.bi-person-up::before { content: "\f8aa"; } -.bi-scooter::before { content: "\f8ab"; } -.bi-taxi-front-fill::before { content: "\f8ac"; } -.bi-taxi-front::before { content: "\f8ad"; } -.bi-amd::before { content: "\f8ae"; } -.bi-database-add::before { content: "\f8af"; } -.bi-database-check::before { content: "\f8b0"; } -.bi-database-dash::before { content: "\f8b1"; } -.bi-database-down::before { content: "\f8b2"; } -.bi-database-exclamation::before { content: "\f8b3"; } -.bi-database-fill-add::before { content: "\f8b4"; } -.bi-database-fill-check::before { content: "\f8b5"; } -.bi-database-fill-dash::before { content: "\f8b6"; } -.bi-database-fill-down::before { content: "\f8b7"; } -.bi-database-fill-exclamation::before { content: "\f8b8"; } -.bi-database-fill-gear::before { content: "\f8b9"; } -.bi-database-fill-lock::before { content: "\f8ba"; } -.bi-database-fill-slash::before { content: "\f8bb"; } -.bi-database-fill-up::before { content: "\f8bc"; } -.bi-database-fill-x::before { content: "\f8bd"; } -.bi-database-fill::before { content: "\f8be"; } -.bi-database-gear::before { content: "\f8bf"; } -.bi-database-lock::before { content: "\f8c0"; } -.bi-database-slash::before { content: "\f8c1"; } -.bi-database-up::before { content: "\f8c2"; } -.bi-database-x::before { content: "\f8c3"; } -.bi-database::before { content: "\f8c4"; } -.bi-houses-fill::before { content: "\f8c5"; } -.bi-houses::before { content: "\f8c6"; } -.bi-nvidia::before { content: "\f8c7"; } -.bi-person-vcard-fill::before { content: "\f8c8"; } -.bi-person-vcard::before { content: "\f8c9"; } -.bi-sina-weibo::before { content: "\f8ca"; } -.bi-tencent-qq::before { content: "\f8cb"; } -.bi-wikipedia::before { content: "\f8cc"; } -.bi-alphabet-uppercase::before { content: "\f2a5"; } -.bi-alphabet::before { content: "\f68a"; } -.bi-amazon::before { content: "\f68d"; } -.bi-arrows-collapse-vertical::before { content: "\f690"; } -.bi-arrows-expand-vertical::before { content: "\f695"; } -.bi-arrows-vertical::before { content: "\f698"; } -.bi-arrows::before { content: "\f6a2"; } -.bi-ban-fill::before { content: "\f6a3"; } -.bi-ban::before { content: "\f6b6"; } -.bi-bing::before { content: "\f6c2"; } -.bi-cake::before { content: "\f6e0"; } -.bi-cake2::before { content: "\f6ed"; } -.bi-cookie::before { content: "\f6ee"; } -.bi-copy::before { content: "\f759"; } -.bi-crosshair::before { content: "\f769"; } -.bi-crosshair2::before { content: "\f794"; } -.bi-emoji-astonished-fill::before { content: "\f795"; } -.bi-emoji-astonished::before { content: "\f79a"; } -.bi-emoji-grimace-fill::before { content: "\f79b"; } -.bi-emoji-grimace::before { content: "\f7a0"; } -.bi-emoji-grin-fill::before { content: "\f7a1"; } -.bi-emoji-grin::before { content: "\f7a6"; } -.bi-emoji-surprise-fill::before { content: "\f7a7"; } -.bi-emoji-surprise::before { content: "\f7ac"; } -.bi-emoji-tear-fill::before { content: "\f7ad"; } -.bi-emoji-tear::before { content: "\f7b2"; } -.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } -.bi-envelope-arrow-down::before { content: "\f7b8"; } -.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } -.bi-envelope-arrow-up::before { content: "\f7be"; } -.bi-feather::before { content: "\f7bf"; } -.bi-feather2::before { content: "\f7c4"; } -.bi-floppy-fill::before { content: "\f7c5"; } -.bi-floppy::before { content: "\f7d8"; } -.bi-floppy2-fill::before { content: "\f7d9"; } -.bi-floppy2::before { content: "\f7e4"; } -.bi-gitlab::before { content: "\f7e5"; } -.bi-highlighter::before { content: "\f7f8"; } -.bi-marker-tip::before { content: "\f802"; } -.bi-nvme-fill::before { content: "\f803"; } -.bi-nvme::before { content: "\f80c"; } -.bi-opencollective::before { content: "\f80d"; } -.bi-pci-card-network::before { content: "\f8cd"; } -.bi-pci-card-sound::before { content: "\f8ce"; } -.bi-radar::before { content: "\f8cf"; } -.bi-send-arrow-down-fill::before { content: "\f8d0"; } -.bi-send-arrow-down::before { content: "\f8d1"; } -.bi-send-arrow-up-fill::before { content: "\f8d2"; } -.bi-send-arrow-up::before { content: "\f8d3"; } -.bi-sim-slash-fill::before { content: "\f8d4"; } -.bi-sim-slash::before { content: "\f8d5"; } -.bi-sourceforge::before { content: "\f8d6"; } -.bi-substack::before { content: "\f8d7"; } -.bi-threads-fill::before { content: "\f8d8"; } -.bi-threads::before { content: "\f8d9"; } -.bi-transparency::before { content: "\f8da"; } -.bi-twitter-x::before { content: "\f8db"; } -.bi-type-h4::before { content: "\f8dc"; } -.bi-type-h5::before { content: "\f8dd"; } -.bi-type-h6::before { content: "\f8de"; } -.bi-backpack-fill::before { content: "\f8df"; } -.bi-backpack::before { content: "\f8e0"; } -.bi-backpack2-fill::before { content: "\f8e1"; } -.bi-backpack2::before { content: "\f8e2"; } -.bi-backpack3-fill::before { content: "\f8e3"; } -.bi-backpack3::before { content: "\f8e4"; } -.bi-backpack4-fill::before { content: "\f8e5"; } -.bi-backpack4::before { content: "\f8e6"; } -.bi-brilliance::before { content: "\f8e7"; } -.bi-cake-fill::before { content: "\f8e8"; } -.bi-cake2-fill::before { content: "\f8e9"; } -.bi-duffle-fill::before { content: "\f8ea"; } -.bi-duffle::before { content: "\f8eb"; } -.bi-exposure::before { content: "\f8ec"; } -.bi-gender-neuter::before { content: "\f8ed"; } -.bi-highlights::before { content: "\f8ee"; } -.bi-luggage-fill::before { content: "\f8ef"; } -.bi-luggage::before { content: "\f8f0"; } -.bi-mailbox-flag::before { content: "\f8f1"; } -.bi-mailbox2-flag::before { content: "\f8f2"; } -.bi-noise-reduction::before { content: "\f8f3"; } -.bi-passport-fill::before { content: "\f8f4"; } -.bi-passport::before { content: "\f8f5"; } -.bi-person-arms-up::before { content: "\f8f6"; } -.bi-person-raised-hand::before { content: "\f8f7"; } -.bi-person-standing-dress::before { content: "\f8f8"; } -.bi-person-standing::before { content: "\f8f9"; } -.bi-person-walking::before { content: "\f8fa"; } -.bi-person-wheelchair::before { content: "\f8fb"; } -.bi-shadows::before { content: "\f8fc"; } -.bi-suitcase-fill::before { content: "\f8fd"; } -.bi-suitcase-lg-fill::before { content: "\f8fe"; } -.bi-suitcase-lg::before { content: "\f8ff"; } -.bi-suitcase::before { content: "\f900"; } -.bi-suitcase2-fill::before { content: "\f901"; } -.bi-suitcase2::before { content: "\f902"; } -.bi-vignette::before { content: "\f903"; } -.bi-bluesky::before { content: "\f7f9"; } -.bi-tux::before { content: "\f904"; } -.bi-beaker-fill::before { content: "\f905"; } -.bi-beaker::before { content: "\f906"; } -.bi-flask-fill::before { content: "\f907"; } -.bi-flask-florence-fill::before { content: "\f908"; } -.bi-flask-florence::before { content: "\f909"; } -.bi-flask::before { content: "\f90a"; } -.bi-leaf-fill::before { content: "\f90b"; } -.bi-leaf::before { content: "\f90c"; } -.bi-measuring-cup-fill::before { content: "\f90d"; } -.bi-measuring-cup::before { content: "\f90e"; } -.bi-unlock2-fill::before { content: "\f90f"; } -.bi-unlock2::before { content: "\f910"; } -.bi-battery-low::before { content: "\f911"; } -.bi-anthropic::before { content: "\f912"; } -.bi-apple-music::before { content: "\f913"; } -.bi-claude::before { content: "\f914"; } -.bi-openai::before { content: "\f915"; } -.bi-perplexity::before { content: "\f916"; } -.bi-css::before { content: "\f917"; } -.bi-javascript::before { content: "\f918"; } -.bi-typescript::before { content: "\f919"; } -.bi-fork-knife::before { content: "\f91a"; } -.bi-globe-americas-fill::before { content: "\f91b"; } -.bi-globe-asia-australia-fill::before { content: "\f91c"; } -.bi-globe-central-south-asia-fill::before { content: "\f91d"; } -.bi-globe-europe-africa-fill::before { content: "\f91e"; } diff --git a/_site/site_libs/bootstrap/bootstrap-icons.woff b/_site/site_libs/bootstrap/bootstrap-icons.woff deleted file mode 100644 index a4fa4f0..0000000 Binary files a/_site/site_libs/bootstrap/bootstrap-icons.woff and /dev/null differ diff --git a/_site/site_libs/bootstrap/bootstrap.min.js b/_site/site_libs/bootstrap/bootstrap.min.js deleted file mode 100644 index e8f21f7..0000000 --- a/_site/site_libs/bootstrap/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/_site/site_libs/clipboard/clipboard.min.js b/_site/site_libs/clipboard/clipboard.min.js deleted file mode 100644 index 1103f81..0000000 --- a/_site/site_libs/clipboard/clipboard.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * clipboard.js v2.0.11 - * https://clipboardjs.com/ - * - * Licensed MIT Β© Zeno Rocha - */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); -// @license-end \ No newline at end of file diff --git a/_site/site_libs/quarto-html/axe/axe-check.js b/_site/site_libs/quarto-html/axe/axe-check.js deleted file mode 100644 index 8808085..0000000 --- a/_site/site_libs/quarto-html/axe/axe-check.js +++ /dev/null @@ -1,145 +0,0 @@ -class QuartoAxeReporter { - constructor(axeResult, options) { - this.axeResult = axeResult; - this.options = options; - } - - report() { - throw new Error("report() is an abstract method"); - } -} - -class QuartoAxeJsonReporter extends QuartoAxeReporter { - constructor(axeResult, options) { - super(axeResult, options); - } - - report() { - console.log(JSON.stringify(this.axeResult, null, 2)); - } -} - -class QuartoAxeConsoleReporter extends QuartoAxeReporter { - constructor(axeResult, options) { - super(axeResult, options); - } - - report() { - for (const violation of this.axeResult.violations) { - console.log(violation.description); - for (const node of violation.nodes) { - for (const target of node.target) { - console.log(target); - console.log(document.querySelector(target)); - } - } - } - } -} - -class QuartoAxeDocumentReporter extends QuartoAxeReporter { - constructor(axeResult, options) { - super(axeResult, options); - } - - createViolationElement(violation) { - const violationElement = document.createElement("div"); - - const descriptionElement = document.createElement("div"); - descriptionElement.className = "quarto-axe-violation-description"; - descriptionElement.innerText = `${violation.impact.replace(/^[a-z]/, match => match.toLocaleUpperCase())}: ${violation.description}`; - violationElement.appendChild(descriptionElement); - - const helpElement = document.createElement("div"); - helpElement.className = "quarto-axe-violation-help"; - helpElement.innerText = violation.help; - violationElement.appendChild(helpElement); - - const nodesElement = document.createElement("div"); - nodesElement.className = "quarto-axe-violation-nodes"; - violationElement.appendChild(nodesElement); - const nodeElement = document.createElement("div"); - nodeElement.className = "quarto-axe-violation-selector"; - for (const node of violation.nodes) { - for (const target of node.target) { - const targetElement = document.createElement("span"); - targetElement.className = "quarto-axe-violation-target"; - targetElement.innerText = target; - nodeElement.appendChild(targetElement); - nodeElement.addEventListener("mouseenter", () => { - const element = document.querySelector(target); - if (element) { - element.scrollIntoView({ behavior: "smooth", block: "center" }); - element.classList.add("quarto-axe-hover-highlight"); - setTimeout(() => { - element.style.border = ""; - }, 2000); - } - }); - nodeElement.addEventListener("mouseleave", () => { - const element = document.querySelector(target); - if (element) { - element.classList.remove("quarto-axe-hover-highlight"); - } - }); - nodeElement.addEventListener("click", () => { - console.log(document.querySelector(target)); - }); - nodeElement.appendChild(targetElement); - } - nodesElement.appendChild(nodeElement); - } - return violationElement; - } - - report() { - const violations = this.axeResult.violations; - const reportElement = document.createElement("div"); - reportElement.className = "quarto-axe-report"; - if (violations.length === 0) { - const noViolationsElement = document.createElement("div"); - noViolationsElement.className = "quarto-axe-no-violations"; - noViolationsElement.innerText = "No axe-core violations found."; - reportElement.appendChild(noViolationsElement); - } - violations.forEach((violation) => { - reportElement.appendChild(this.createViolationElement(violation)); - }); - document.querySelector("main").appendChild(reportElement); - } -} - -const reporters = { - json: QuartoAxeJsonReporter, - console: QuartoAxeConsoleReporter, - document: QuartoAxeDocumentReporter, -}; - -class QuartoAxeChecker { - constructor(opts) { - this.options = opts; - } - async init() { - const axe = (await import("https://cdn.skypack.dev/pin/axe-core@v4.10.3-aVOFXWsJaCpVrtv89pCa/mode=imports,min/optimized/axe-core.js")).default; - const result = await axe.run({ - exclude: [ - // https://github.com/microsoft/tabster/issues/288 - // MS has claimed they won't fix this, so we need to add an exclusion to - // all tabster elements - "[data-tabster-dummy]" - ], - preload: { assets: ['cssom'], timeout: 50000 } - }); - const reporter = this.options === true ? new QuartoAxeConsoleReporter(result) : new reporters[this.options.output](result, this.options); - reporter.report(); - } -} - -export async function init() { - const opts = document.querySelector("#quarto-axe-checker-options"); - if (opts) { - const jsonOptions = JSON.parse(atob(opts.textContent)); - const checker = new QuartoAxeChecker(jsonOptions); - await checker.init(); - } -} \ No newline at end of file diff --git a/_site/site_libs/quarto-html/popper.min.js b/_site/site_libs/quarto-html/popper.min.js deleted file mode 100644 index e3726d7..0000000 --- a/_site/site_libs/quarto-html/popper.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @popperjs/core v2.11.7 - MIT License - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); - diff --git a/_site/site_libs/quarto-html/quarto-syntax-highlighting-7b89279ff1a6dce999919e0e67d4d9ec.css b/_site/site_libs/quarto-html/quarto-syntax-highlighting-7b89279ff1a6dce999919e0e67d4d9ec.css deleted file mode 100644 index 7fc5b67..0000000 --- a/_site/site_libs/quarto-html/quarto-syntax-highlighting-7b89279ff1a6dce999919e0e67d4d9ec.css +++ /dev/null @@ -1,236 +0,0 @@ -/* quarto syntax highlight colors */ -:root { - --quarto-hl-ot-color: #003B4F; - --quarto-hl-at-color: #657422; - --quarto-hl-ss-color: #20794D; - --quarto-hl-an-color: #5E5E5E; - --quarto-hl-fu-color: #4758AB; - --quarto-hl-st-color: #20794D; - --quarto-hl-cf-color: #003B4F; - --quarto-hl-op-color: #5E5E5E; - --quarto-hl-er-color: #AD0000; - --quarto-hl-bn-color: #AD0000; - --quarto-hl-al-color: #AD0000; - --quarto-hl-va-color: #111111; - --quarto-hl-bu-color: inherit; - --quarto-hl-ex-color: inherit; - --quarto-hl-pp-color: #AD0000; - --quarto-hl-in-color: #5E5E5E; - --quarto-hl-vs-color: #20794D; - --quarto-hl-wa-color: #5E5E5E; - --quarto-hl-do-color: #5E5E5E; - --quarto-hl-im-color: #00769E; - --quarto-hl-ch-color: #20794D; - --quarto-hl-dt-color: #AD0000; - --quarto-hl-fl-color: #AD0000; - --quarto-hl-co-color: #5E5E5E; - --quarto-hl-cv-color: #5E5E5E; - --quarto-hl-cn-color: #8f5902; - --quarto-hl-sc-color: #5E5E5E; - --quarto-hl-dv-color: #AD0000; - --quarto-hl-kw-color: #003B4F; -} - -/* other quarto variables */ -:root { - --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -/* syntax highlight based on Pandoc's rules */ -pre > code.sourceCode > span { - color: #003B4F; -} - -code.sourceCode > span { - color: #003B4F; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #003B4F; -} - -/* Normal */ -code span { - color: #003B4F; -} - -/* Alert */ -code span.al { - color: #AD0000; - font-style: inherit; -} - -/* Annotation */ -code span.an { - color: #5E5E5E; - font-style: inherit; -} - -/* Attribute */ -code span.at { - color: #657422; - font-style: inherit; -} - -/* BaseN */ -code span.bn { - color: #AD0000; - font-style: inherit; -} - -/* BuiltIn */ -code span.bu { - font-style: inherit; -} - -/* ControlFlow */ -code span.cf { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Char */ -code span.ch { - color: #20794D; - font-style: inherit; -} - -/* Constant */ -code span.cn { - color: #8f5902; - font-style: inherit; -} - -/* Comment */ -code span.co { - color: #5E5E5E; - font-style: inherit; -} - -/* CommentVar */ -code span.cv { - color: #5E5E5E; - font-style: italic; -} - -/* Documentation */ -code span.do { - color: #5E5E5E; - font-style: italic; -} - -/* DataType */ -code span.dt { - color: #AD0000; - font-style: inherit; -} - -/* DecVal */ -code span.dv { - color: #AD0000; - font-style: inherit; -} - -/* Error */ -code span.er { - color: #AD0000; - font-style: inherit; -} - -/* Extension */ -code span.ex { - font-style: inherit; -} - -/* Float */ -code span.fl { - color: #AD0000; - font-style: inherit; -} - -/* Function */ -code span.fu { - color: #4758AB; - font-style: inherit; -} - -/* Import */ -code span.im { - color: #00769E; - font-style: inherit; -} - -/* Information */ -code span.in { - color: #5E5E5E; - font-style: inherit; -} - -/* Keyword */ -code span.kw { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Operator */ -code span.op { - color: #5E5E5E; - font-style: inherit; -} - -/* Other */ -code span.ot { - color: #003B4F; - font-style: inherit; -} - -/* Preprocessor */ -code span.pp { - color: #AD0000; - font-style: inherit; -} - -/* SpecialChar */ -code span.sc { - color: #5E5E5E; - font-style: inherit; -} - -/* SpecialString */ -code span.ss { - color: #20794D; - font-style: inherit; -} - -/* String */ -code span.st { - color: #20794D; - font-style: inherit; -} - -/* Variable */ -code span.va { - color: #111111; - font-style: inherit; -} - -/* VerbatimString */ -code span.vs { - color: #20794D; - font-style: inherit; -} - -/* Warning */ -code span.wa { - color: #5E5E5E; - font-style: italic; -} - -.prevent-inlining { - content: " code.sourceCode > span { - color: #f8f8f2; -} - -code.sourceCode > span { - color: #f8f8f2; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #f8f8f2; -} - -/* Normal */ -code span { - color: #f8f8f2; -} - -/* Alert */ -code span.al { - color: #f07178; -} - -/* Annotation */ -code span.an { - color: #d4d0ab; -} - -/* Attribute */ -code span.at { - color: #00e0e0; -} - -/* BaseN */ -code span.bn { - color: #d4d0ab; -} - -/* BuiltIn */ -code span.bu { - color: #abe338; -} - -/* ControlFlow */ -code span.cf { - font-weight: bold; - color: #ffa07a; -} - -/* Char */ -code span.ch { - color: #abe338; -} - -/* Constant */ -code span.cn { - color: #ffd700; -} - -/* Comment */ -code span.co { - font-style: italic; - color: #f8f8f2; -} - -/* CommentVar */ -code span.cv { - color: #ffd700; -} - -/* Documentation */ -code span.do { - color: #f8f8f2; -} - -/* DataType */ -code span.dt { - color: #ffa07a; -} - -/* DecVal */ -code span.dv { - color: #d4d0ab; -} - -/* Error */ -code span.er { - color: #f07178; - text-decoration: underline; -} - -/* Extension */ -code span.ex { - font-weight: bold; - color: #00e0e0; -} - -/* Float */ -code span.fl { - color: #d4d0ab; -} - -/* Function */ -code span.fu { - color: #ffa07a; -} - -/* Import */ -code span.im { - color: #abe338; -} - -/* Information */ -code span.in { - color: #d4d0ab; -} - -/* Keyword */ -code span.kw { - font-weight: bold; - color: #ffa07a; -} - -/* Operator */ -code span.op { - color: #ffa07a; -} - -/* Other */ -code span.ot { - color: #00e0e0; -} - -/* Preprocessor */ -code span.pp { - color: #dcc6e0; -} - -/* RegionMarker */ -code span.re { - background-color: #f8f8f2; - color: #00e0e0; -} - -/* SpecialChar */ -code span.sc { - color: #abe338; -} - -/* SpecialString */ -code span.ss { - color: #abe338; -} - -/* String */ -code span.st { - color: #abe338; -} - -/* Variable */ -code span.va { - color: #00e0e0; -} - -/* VerbatimString */ -code span.vs { - color: #abe338; -} - -/* Warning */ -code span.wa { - color: #dcc6e0; -} - -.prevent-inlining { - content: " code.sourceCode > span { - color: #f8f8f2; -} - -code.sourceCode > span { - color: #f8f8f2; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #f8f8f2; -} - -/* Normal */ -code span { - color: #f8f8f2; -} - -/* Alert */ -code span.al { - color: #f07178; -} - -/* Annotation */ -code span.an { - color: #d4d0ab; -} - -/* Attribute */ -code span.at { - color: #00e0e0; -} - -/* BaseN */ -code span.bn { - color: #d4d0ab; -} - -/* BuiltIn */ -code span.bu { - color: #abe338; -} - -/* ControlFlow */ -code span.cf { - font-weight: bold; - color: #ffa07a; -} - -/* Char */ -code span.ch { - color: #abe338; -} - -/* Constant */ -code span.cn { - color: #ffd700; -} - -/* Comment */ -code span.co { - font-style: italic; - color: #f8f8f2; -} - -/* CommentVar */ -code span.cv { - color: #ffd700; -} - -/* Documentation */ -code span.do { - color: #f8f8f2; -} - -/* DataType */ -code span.dt { - color: #ffa07a; -} - -/* DecVal */ -code span.dv { - color: #d4d0ab; -} - -/* Error */ -code span.er { - color: #f07178; - text-decoration: underline; -} - -/* Extension */ -code span.ex { - font-weight: bold; - color: #00e0e0; -} - -/* Float */ -code span.fl { - color: #d4d0ab; -} - -/* Function */ -code span.fu { - color: #ffa07a; -} - -/* Import */ -code span.im { - color: #abe338; -} - -/* Information */ -code span.in { - color: #d4d0ab; -} - -/* Keyword */ -code span.kw { - font-weight: bold; - color: #ffa07a; -} - -/* Operator */ -code span.op { - color: #ffa07a; -} - -/* Other */ -code span.ot { - color: #00e0e0; -} - -/* Preprocessor */ -code span.pp { - color: #dcc6e0; -} - -/* RegionMarker */ -code span.re { - background-color: #f8f8f2; - color: #00e0e0; -} - -/* SpecialChar */ -code span.sc { - color: #abe338; -} - -/* SpecialString */ -code span.ss { - color: #abe338; -} - -/* String */ -code span.st { - color: #abe338; -} - -/* Variable */ -code span.va { - color: #00e0e0; -} - -/* VerbatimString */ -code span.vs { - color: #abe338; -} - -/* Warning */ -code span.wa { - color: #dcc6e0; -} - -.prevent-inlining { - content: " code.sourceCode > span { - color: #f8f8f2; -} - -code.sourceCode > span { - color: #f8f8f2; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #f8f8f2; -} - -/* Normal */ -code span { - color: #f8f8f2; -} - -/* Alert */ -code span.al { - color: #f07178; -} - -/* Annotation */ -code span.an { - color: #d4d0ab; -} - -/* Attribute */ -code span.at { - color: #00e0e0; -} - -/* BaseN */ -code span.bn { - color: #d4d0ab; -} - -/* BuiltIn */ -code span.bu { - color: #abe338; -} - -/* ControlFlow */ -code span.cf { - font-weight: bold; - color: #ffa07a; -} - -/* Char */ -code span.ch { - color: #abe338; -} - -/* Constant */ -code span.cn { - color: #ffd700; -} - -/* Comment */ -code span.co { - font-style: italic; - color: #f8f8f2; -} - -/* CommentVar */ -code span.cv { - color: #ffd700; -} - -/* Documentation */ -code span.do { - color: #f8f8f2; -} - -/* DataType */ -code span.dt { - color: #ffa07a; -} - -/* DecVal */ -code span.dv { - color: #d4d0ab; -} - -/* Error */ -code span.er { - color: #f07178; - text-decoration: underline; -} - -/* Extension */ -code span.ex { - font-weight: bold; - color: #00e0e0; -} - -/* Float */ -code span.fl { - color: #d4d0ab; -} - -/* Function */ -code span.fu { - color: #ffa07a; -} - -/* Import */ -code span.im { - color: #abe338; -} - -/* Information */ -code span.in { - color: #d4d0ab; -} - -/* Keyword */ -code span.kw { - font-weight: bold; - color: #ffa07a; -} - -/* Operator */ -code span.op { - color: #ffa07a; -} - -/* Other */ -code span.ot { - color: #00e0e0; -} - -/* Preprocessor */ -code span.pp { - color: #dcc6e0; -} - -/* RegionMarker */ -code span.re { - background-color: #f8f8f2; - color: #00e0e0; -} - -/* SpecialChar */ -code span.sc { - color: #abe338; -} - -/* SpecialString */ -code span.ss { - color: #abe338; -} - -/* String */ -code span.st { - color: #abe338; -} - -/* Variable */ -code span.va { - color: #00e0e0; -} - -/* VerbatimString */ -code span.vs { - color: #abe338; -} - -/* Warning */ -code span.wa { - color: #dcc6e0; -} - -.prevent-inlining { - content: " code.sourceCode > span { - color: #003B4F; -} - -code.sourceCode > span { - color: #003B4F; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #003B4F; -} - -/* Normal */ -code span { - color: #003B4F; -} - -/* Alert */ -code span.al { - color: #AD0000; - font-style: inherit; -} - -/* Annotation */ -code span.an { - color: #5E5E5E; - font-style: inherit; -} - -/* Attribute */ -code span.at { - color: #657422; - font-style: inherit; -} - -/* BaseN */ -code span.bn { - color: #AD0000; - font-style: inherit; -} - -/* BuiltIn */ -code span.bu { - font-style: inherit; -} - -/* ControlFlow */ -code span.cf { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Char */ -code span.ch { - color: #20794D; - font-style: inherit; -} - -/* Constant */ -code span.cn { - color: #8f5902; - font-style: inherit; -} - -/* Comment */ -code span.co { - color: #5E5E5E; - font-style: inherit; -} - -/* CommentVar */ -code span.cv { - color: #5E5E5E; - font-style: italic; -} - -/* Documentation */ -code span.do { - color: #5E5E5E; - font-style: italic; -} - -/* DataType */ -code span.dt { - color: #AD0000; - font-style: inherit; -} - -/* DecVal */ -code span.dv { - color: #AD0000; - font-style: inherit; -} - -/* Error */ -code span.er { - color: #AD0000; - font-style: inherit; -} - -/* Extension */ -code span.ex { - font-style: inherit; -} - -/* Float */ -code span.fl { - color: #AD0000; - font-style: inherit; -} - -/* Function */ -code span.fu { - color: #4758AB; - font-style: inherit; -} - -/* Import */ -code span.im { - color: #00769E; - font-style: inherit; -} - -/* Information */ -code span.in { - color: #5E5E5E; - font-style: inherit; -} - -/* Keyword */ -code span.kw { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Operator */ -code span.op { - color: #5E5E5E; - font-style: inherit; -} - -/* Other */ -code span.ot { - color: #003B4F; - font-style: inherit; -} - -/* Preprocessor */ -code span.pp { - color: #AD0000; - font-style: inherit; -} - -/* SpecialChar */ -code span.sc { - color: #5E5E5E; - font-style: inherit; -} - -/* SpecialString */ -code span.ss { - color: #20794D; - font-style: inherit; -} - -/* String */ -code span.st { - color: #20794D; - font-style: inherit; -} - -/* Variable */ -code span.va { - color: #111111; - font-style: inherit; -} - -/* VerbatimString */ -code span.vs { - color: #20794D; - font-style: inherit; -} - -/* Warning */ -code span.wa { - color: #5E5E5E; - font-style: italic; -} - -.prevent-inlining { - content: " code.sourceCode > span { - color: #003B4F; -} - -code.sourceCode > span { - color: #003B4F; -} - -div.sourceCode, -div.sourceCode pre.sourceCode { - color: #003B4F; -} - -/* Normal */ -code span { - color: #003B4F; -} - -/* Alert */ -code span.al { - color: #AD0000; - font-style: inherit; -} - -/* Annotation */ -code span.an { - color: #5E5E5E; - font-style: inherit; -} - -/* Attribute */ -code span.at { - color: #657422; - font-style: inherit; -} - -/* BaseN */ -code span.bn { - color: #AD0000; - font-style: inherit; -} - -/* BuiltIn */ -code span.bu { - font-style: inherit; -} - -/* ControlFlow */ -code span.cf { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Char */ -code span.ch { - color: #20794D; - font-style: inherit; -} - -/* Constant */ -code span.cn { - color: #8f5902; - font-style: inherit; -} - -/* Comment */ -code span.co { - color: #5E5E5E; - font-style: inherit; -} - -/* CommentVar */ -code span.cv { - color: #5E5E5E; - font-style: italic; -} - -/* Documentation */ -code span.do { - color: #5E5E5E; - font-style: italic; -} - -/* DataType */ -code span.dt { - color: #AD0000; - font-style: inherit; -} - -/* DecVal */ -code span.dv { - color: #AD0000; - font-style: inherit; -} - -/* Error */ -code span.er { - color: #AD0000; - font-style: inherit; -} - -/* Extension */ -code span.ex { - font-style: inherit; -} - -/* Float */ -code span.fl { - color: #AD0000; - font-style: inherit; -} - -/* Function */ -code span.fu { - color: #4758AB; - font-style: inherit; -} - -/* Import */ -code span.im { - color: #00769E; - font-style: inherit; -} - -/* Information */ -code span.in { - color: #5E5E5E; - font-style: inherit; -} - -/* Keyword */ -code span.kw { - color: #003B4F; - font-weight: bold; - font-style: inherit; -} - -/* Operator */ -code span.op { - color: #5E5E5E; - font-style: inherit; -} - -/* Other */ -code span.ot { - color: #003B4F; - font-style: inherit; -} - -/* Preprocessor */ -code span.pp { - color: #AD0000; - font-style: inherit; -} - -/* SpecialChar */ -code span.sc { - color: #5E5E5E; - font-style: inherit; -} - -/* SpecialString */ -code span.ss { - color: #20794D; - font-style: inherit; -} - -/* String */ -code span.st { - color: #20794D; - font-style: inherit; -} - -/* Variable */ -code span.va { - color: #111111; - font-style: inherit; -} - -/* VerbatimString */ -code span.vs { - color: #20794D; - font-style: inherit; -} - -/* Warning */ -code span.wa { - color: #5E5E5E; - font-style: italic; -} - -.prevent-inlining { - content: " { - // Find any conflicting margin elements and add margins to the - // top to prevent overlap - const marginChildren = window.document.querySelectorAll( - ".column-margin.column-container > *, .margin-caption, .aside" - ); - - let lastBottom = 0; - for (const marginChild of marginChildren) { - if (marginChild.offsetParent !== null) { - // clear the top margin so we recompute it - marginChild.style.marginTop = null; - const top = marginChild.getBoundingClientRect().top + window.scrollY; - if (top < lastBottom) { - const marginChildStyle = window.getComputedStyle(marginChild); - const marginBottom = parseFloat(marginChildStyle["marginBottom"]); - const margin = lastBottom - top + marginBottom; - marginChild.style.marginTop = `${margin}px`; - } - const styles = window.getComputedStyle(marginChild); - const marginTop = parseFloat(styles["marginTop"]); - lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; - } - } -}; - -window.document.addEventListener("DOMContentLoaded", function (_event) { - // Recompute the position of margin elements anytime the body size changes - if (window.ResizeObserver) { - const resizeObserver = new window.ResizeObserver( - throttle(() => { - layoutMarginEls(); - if ( - window.document.body.getBoundingClientRect().width < 990 && - isReaderMode() - ) { - quartoToggleReader(); - } - }, 50) - ); - resizeObserver.observe(window.document.body); - } - - const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); - const sidebarEl = window.document.getElementById("quarto-sidebar"); - const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); - const marginSidebarEl = window.document.getElementById( - "quarto-margin-sidebar" - ); - // function to determine whether the element has a previous sibling that is active - const prevSiblingIsActiveLink = (el) => { - const sibling = el.previousElementSibling; - if (sibling && sibling.tagName === "A") { - return sibling.classList.contains("active"); - } else { - return false; - } - }; - - // dispatch for htmlwidgets - // they use slideenter event to trigger resize - function fireSlideEnter() { - const event = window.document.createEvent("Event"); - event.initEvent("slideenter", true, true); - window.document.dispatchEvent(event); - } - - const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); - tabs.forEach((tab) => { - tab.addEventListener("shown.bs.tab", fireSlideEnter); - }); - - // dispatch for shiny - // they use BS shown and hidden events to trigger rendering - function distpatchShinyEvents(previous, current) { - if (window.jQuery) { - if (previous) { - window.jQuery(previous).trigger("hidden"); - } - if (current) { - window.jQuery(current).trigger("shown"); - } - } - } - - // tabby.js listener: Trigger event for htmlwidget and shiny - document.addEventListener( - "tabby", - function (event) { - fireSlideEnter(); - distpatchShinyEvents(event.detail.previousTab, event.detail.tab); - }, - false - ); - - // Track scrolling and mark TOC links as active - // get table of contents and sidebar (bail if we don't have at least one) - const tocLinks = tocEl - ? [...tocEl.querySelectorAll("a[data-scroll-target]")] - : []; - const makeActive = (link) => tocLinks[link].classList.add("active"); - const removeActive = (link) => tocLinks[link].classList.remove("active"); - const removeAllActive = () => - [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); - - // activate the anchor for a section associated with this TOC entry - tocLinks.forEach((link) => { - link.addEventListener("click", () => { - if (link.href.indexOf("#") !== -1) { - const anchor = link.href.split("#")[1]; - const heading = window.document.querySelector( - `[data-anchor-id="${anchor}"]` - ); - if (heading) { - // Add the class - heading.classList.add("reveal-anchorjs-link"); - - // function to show the anchor - const handleMouseout = () => { - heading.classList.remove("reveal-anchorjs-link"); - heading.removeEventListener("mouseout", handleMouseout); - }; - - // add a function to clear the anchor when the user mouses out of it - heading.addEventListener("mouseout", handleMouseout); - } - } - }); - }); - - const sections = tocLinks.map((link) => { - const target = link.getAttribute("data-scroll-target"); - if (target.startsWith("#")) { - return window.document.getElementById(decodeURI(`${target.slice(1)}`)); - } else { - return window.document.querySelector(decodeURI(`${target}`)); - } - }); - - const sectionMargin = 200; - let currentActive = 0; - // track whether we've initialized state the first time - let init = false; - - const updateActiveLink = () => { - // The index from bottom to top (e.g. reversed list) - let sectionIndex = -1; - if ( - window.innerHeight + window.pageYOffset >= - window.document.body.offsetHeight - ) { - // This is the no-scroll case where last section should be the active one - sectionIndex = 0; - } else { - // This finds the last section visible on screen that should be made active - sectionIndex = [...sections].reverse().findIndex((section) => { - if (section) { - return window.pageYOffset >= section.offsetTop - sectionMargin; - } else { - return false; - } - }); - } - if (sectionIndex > -1) { - const current = sections.length - sectionIndex - 1; - if (current !== currentActive) { - removeAllActive(); - currentActive = current; - makeActive(current); - if (init) { - window.dispatchEvent(sectionChanged); - } - init = true; - } - } - }; - - const inHiddenRegion = (top, bottom, hiddenRegions) => { - for (const region of hiddenRegions) { - if (top <= region.bottom && bottom >= region.top) { - return true; - } - } - return false; - }; - - const categorySelector = "header.quarto-title-block .quarto-category"; - const activateCategories = (href) => { - // Find any categories - // Surround them with a link pointing back to: - // #category=Authoring - try { - const categoryEls = window.document.querySelectorAll(categorySelector); - for (const categoryEl of categoryEls) { - const categoryText = categoryEl.textContent; - if (categoryText) { - const link = `${href}#category=${encodeURIComponent(categoryText)}`; - const linkEl = window.document.createElement("a"); - linkEl.setAttribute("href", link); - for (const child of categoryEl.childNodes) { - linkEl.append(child); - } - categoryEl.appendChild(linkEl); - } - } - } catch { - // Ignore errors - } - }; - function hasTitleCategories() { - return window.document.querySelector(categorySelector) !== null; - } - - function offsetRelativeUrl(url) { - const offset = getMeta("quarto:offset"); - return offset ? offset + url : url; - } - - function offsetAbsoluteUrl(url) { - const offset = getMeta("quarto:offset"); - const baseUrl = new URL(offset, window.location); - - const projRelativeUrl = url.replace(baseUrl, ""); - if (projRelativeUrl.startsWith("/")) { - return projRelativeUrl; - } else { - return "/" + projRelativeUrl; - } - } - - // read a meta tag value - function getMeta(metaName) { - const metas = window.document.getElementsByTagName("meta"); - for (let i = 0; i < metas.length; i++) { - if (metas[i].getAttribute("name") === metaName) { - return metas[i].getAttribute("content"); - } - } - return ""; - } - - async function findAndActivateCategories() { - // Categories search with listing only use path without query - const currentPagePath = offsetAbsoluteUrl( - window.location.origin + window.location.pathname - ); - const response = await fetch(offsetRelativeUrl("listings.json")); - if (response.status == 200) { - return response.json().then(function (listingPaths) { - const listingHrefs = []; - for (const listingPath of listingPaths) { - const pathWithoutLeadingSlash = listingPath.listing.substring(1); - for (const item of listingPath.items) { - const encodedItem = encodeURI(item); - if ( - encodedItem === currentPagePath || - encodedItem === currentPagePath + "index.html" - ) { - // Resolve this path against the offset to be sure - // we already are using the correct path to the listing - // (this adjusts the listing urls to be rooted against - // whatever root the page is actually running against) - const relative = offsetRelativeUrl(pathWithoutLeadingSlash); - const baseUrl = window.location; - const resolvedPath = new URL(relative, baseUrl); - listingHrefs.push(resolvedPath.pathname); - break; - } - } - } - - // Look up the tree for a nearby linting and use that if we find one - const nearestListing = findNearestParentListing( - offsetAbsoluteUrl(window.location.pathname), - listingHrefs - ); - if (nearestListing) { - activateCategories(nearestListing); - } else { - // See if the referrer is a listing page for this item - const referredRelativePath = offsetAbsoluteUrl(document.referrer); - const referrerListing = listingHrefs.find((listingHref) => { - const isListingReferrer = - listingHref === referredRelativePath || - listingHref === referredRelativePath + "index.html"; - return isListingReferrer; - }); - - if (referrerListing) { - // Try to use the referrer if possible - activateCategories(referrerListing); - } else if (listingHrefs.length > 0) { - // Otherwise, just fall back to the first listing - activateCategories(listingHrefs[0]); - } - } - }); - } - } - if (hasTitleCategories()) { - findAndActivateCategories(); - } - - const findNearestParentListing = (href, listingHrefs) => { - if (!href || !listingHrefs) { - return undefined; - } - // Look up the tree for a nearby linting and use that if we find one - const relativeParts = href.substring(1).split("/"); - while (relativeParts.length > 0) { - const path = relativeParts.join("/"); - for (const listingHref of listingHrefs) { - if (listingHref.startsWith(path)) { - return listingHref; - } - } - relativeParts.pop(); - } - - return undefined; - }; - - const manageSidebarVisiblity = (el, placeholderDescriptor) => { - let isVisible = true; - let elRect; - - return (hiddenRegions) => { - if (el === null) { - return; - } - - // Find the last element of the TOC - const lastChildEl = el.lastElementChild; - - if (lastChildEl) { - // Converts the sidebar to a menu - const convertToMenu = () => { - for (const child of el.children) { - child.style.opacity = 0; - child.style.overflow = "hidden"; - child.style.pointerEvents = "none"; - } - - nexttick(() => { - const toggleContainer = window.document.createElement("div"); - toggleContainer.style.width = "100%"; - toggleContainer.classList.add("zindex-over-content"); - toggleContainer.classList.add("quarto-sidebar-toggle"); - toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom - toggleContainer.id = placeholderDescriptor.id; - toggleContainer.style.position = "fixed"; - - const toggleIcon = window.document.createElement("i"); - toggleIcon.classList.add("quarto-sidebar-toggle-icon"); - toggleIcon.classList.add("bi"); - toggleIcon.classList.add("bi-caret-down-fill"); - - const toggleTitle = window.document.createElement("div"); - const titleEl = window.document.body.querySelector( - placeholderDescriptor.titleSelector - ); - if (titleEl) { - toggleTitle.append( - titleEl.textContent || titleEl.innerText, - toggleIcon - ); - } - toggleTitle.classList.add("zindex-over-content"); - toggleTitle.classList.add("quarto-sidebar-toggle-title"); - toggleContainer.append(toggleTitle); - - const toggleContents = window.document.createElement("div"); - toggleContents.classList = el.classList; - toggleContents.classList.add("zindex-over-content"); - toggleContents.classList.add("quarto-sidebar-toggle-contents"); - for (const child of el.children) { - if (child.id === "toc-title") { - continue; - } - - const clone = child.cloneNode(true); - clone.style.opacity = 1; - clone.style.pointerEvents = null; - clone.style.display = null; - toggleContents.append(clone); - } - toggleContents.style.height = "0px"; - const positionToggle = () => { - // position the element (top left of parent, same width as parent) - if (!elRect) { - elRect = el.getBoundingClientRect(); - } - toggleContainer.style.left = `${elRect.left}px`; - toggleContainer.style.top = `${elRect.top}px`; - toggleContainer.style.width = `${elRect.width}px`; - }; - positionToggle(); - - toggleContainer.append(toggleContents); - el.parentElement.prepend(toggleContainer); - - // Process clicks - let tocShowing = false; - // Allow the caller to control whether this is dismissed - // when it is clicked (e.g. sidebar navigation supports - // opening and closing the nav tree, so don't dismiss on click) - const clickEl = placeholderDescriptor.dismissOnClick - ? toggleContainer - : toggleTitle; - - const closeToggle = () => { - if (tocShowing) { - toggleContainer.classList.remove("expanded"); - toggleContents.style.height = "0px"; - tocShowing = false; - } - }; - - // Get rid of any expanded toggle if the user scrolls - window.document.addEventListener( - "scroll", - throttle(() => { - closeToggle(); - }, 50) - ); - - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - positionToggle(); - }, 50) - ); - - window.addEventListener("quarto-hrChanged", () => { - elRect = undefined; - }); - - // Process the click - clickEl.onclick = () => { - if (!tocShowing) { - toggleContainer.classList.add("expanded"); - toggleContents.style.height = null; - tocShowing = true; - } else { - closeToggle(); - } - }; - }); - }; - - // Converts a sidebar from a menu back to a sidebar - const convertToSidebar = () => { - for (const child of el.children) { - child.style.opacity = 1; - child.style.overflow = null; - child.style.pointerEvents = null; - } - - const placeholderEl = window.document.getElementById( - placeholderDescriptor.id - ); - if (placeholderEl) { - placeholderEl.remove(); - } - - el.classList.remove("rollup"); - }; - - if (isReaderMode()) { - convertToMenu(); - isVisible = false; - } else { - // Find the top and bottom o the element that is being managed - const elTop = el.offsetTop; - const elBottom = - elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; - - if (!isVisible) { - // If the element is current not visible reveal if there are - // no conflicts with overlay regions - if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { - convertToSidebar(); - isVisible = true; - } - } else { - // If the element is visible, hide it if it conflicts with overlay regions - // and insert a placeholder toggle (or if we're in reader mode) - if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { - convertToMenu(); - isVisible = false; - } - } - } - } - }; - }; - - const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); - for (const tabEl of tabEls) { - const id = tabEl.getAttribute("data-bs-target"); - if (id) { - const columnEl = document.querySelector( - `${id} .column-margin, .tabset-margin-content` - ); - if (columnEl) - tabEl.addEventListener("shown.bs.tab", function (event) { - const el = event.srcElement; - if (el) { - const visibleCls = `${el.id}-margin-content`; - // walk up until we find a parent tabset - let panelTabsetEl = el.parentElement; - while (panelTabsetEl) { - if (panelTabsetEl.classList.contains("panel-tabset")) { - break; - } - panelTabsetEl = panelTabsetEl.parentElement; - } - - if (panelTabsetEl) { - const prevSib = panelTabsetEl.previousElementSibling; - if ( - prevSib && - prevSib.classList.contains("tabset-margin-container") - ) { - const childNodes = prevSib.querySelectorAll( - ".tabset-margin-content" - ); - for (const childEl of childNodes) { - if (childEl.classList.contains(visibleCls)) { - childEl.classList.remove("collapse"); - } else { - childEl.classList.add("collapse"); - } - } - } - } - } - - layoutMarginEls(); - }); - } - } - - // Manage the visibility of the toc and the sidebar - const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { - id: "quarto-toc-toggle", - titleSelector: "#toc-title", - dismissOnClick: true, - }); - const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { - id: "quarto-sidebarnav-toggle", - titleSelector: ".title", - dismissOnClick: false, - }); - let tocLeftScrollVisibility; - if (leftTocEl) { - tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { - id: "quarto-lefttoc-toggle", - titleSelector: "#toc-title", - dismissOnClick: true, - }); - } - - // Find the first element that uses formatting in special columns - const conflictingEls = window.document.body.querySelectorAll( - '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' - ); - - // Filter all the possibly conflicting elements into ones - // the do conflict on the left or ride side - const arrConflictingEls = Array.from(conflictingEls); - const leftSideConflictEls = arrConflictingEls.filter((el) => { - if (el.tagName === "ASIDE") { - return false; - } - return Array.from(el.classList).find((className) => { - return ( - className !== "column-body" && - className.startsWith("column-") && - !className.endsWith("right") && - !className.endsWith("container") && - className !== "column-margin" - ); - }); - }); - const rightSideConflictEls = arrConflictingEls.filter((el) => { - if (el.tagName === "ASIDE") { - return true; - } - - const hasMarginCaption = Array.from(el.classList).find((className) => { - return className == "margin-caption"; - }); - if (hasMarginCaption) { - return true; - } - - return Array.from(el.classList).find((className) => { - return ( - className !== "column-body" && - !className.endsWith("container") && - className.startsWith("column-") && - !className.endsWith("left") - ); - }); - }); - - const kOverlapPaddingSize = 10; - function toRegions(els) { - return els.map((el) => { - const boundRect = el.getBoundingClientRect(); - const top = - boundRect.top + - document.documentElement.scrollTop - - kOverlapPaddingSize; - return { - top, - bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, - }; - }); - } - - let hasObserved = false; - const visibleItemObserver = (els) => { - let visibleElements = [...els]; - const intersectionObserver = new IntersectionObserver( - (entries, _observer) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - if (visibleElements.indexOf(entry.target) === -1) { - visibleElements.push(entry.target); - } - } else { - visibleElements = visibleElements.filter((visibleEntry) => { - return visibleEntry !== entry; - }); - } - }); - - if (!hasObserved) { - hideOverlappedSidebars(); - } - hasObserved = true; - }, - {} - ); - els.forEach((el) => { - intersectionObserver.observe(el); - }); - - return { - getVisibleEntries: () => { - return visibleElements; - }, - }; - }; - - const rightElementObserver = visibleItemObserver(rightSideConflictEls); - const leftElementObserver = visibleItemObserver(leftSideConflictEls); - - const hideOverlappedSidebars = () => { - marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); - sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); - if (tocLeftScrollVisibility) { - tocLeftScrollVisibility( - toRegions(leftElementObserver.getVisibleEntries()) - ); - } - }; - - window.quartoToggleReader = () => { - // Applies a slow class (or removes it) - // to update the transition speed - const slowTransition = (slow) => { - const manageTransition = (id, slow) => { - const el = document.getElementById(id); - if (el) { - if (slow) { - el.classList.add("slow"); - } else { - el.classList.remove("slow"); - } - } - }; - - manageTransition("TOC", slow); - manageTransition("quarto-sidebar", slow); - }; - const readerMode = !isReaderMode(); - setReaderModeValue(readerMode); - - // If we're entering reader mode, slow the transition - if (readerMode) { - slowTransition(readerMode); - } - highlightReaderToggle(readerMode); - hideOverlappedSidebars(); - - // If we're exiting reader mode, restore the non-slow transition - if (!readerMode) { - slowTransition(!readerMode); - } - }; - - const highlightReaderToggle = (readerMode) => { - const els = document.querySelectorAll(".quarto-reader-toggle"); - if (els) { - els.forEach((el) => { - if (readerMode) { - el.classList.add("reader"); - } else { - el.classList.remove("reader"); - } - }); - } - }; - - const setReaderModeValue = (val) => { - if (window.location.protocol !== "file:") { - window.localStorage.setItem("quarto-reader-mode", val); - } else { - localReaderMode = val; - } - }; - - const isReaderMode = () => { - if (window.location.protocol !== "file:") { - return window.localStorage.getItem("quarto-reader-mode") === "true"; - } else { - return localReaderMode; - } - }; - let localReaderMode = null; - - const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); - const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; - - // Walk the TOC and collapse/expand nodes - // Nodes are expanded if: - // - they are top level - // - they have children that are 'active' links - // - they are directly below an link that is 'active' - const walk = (el, depth) => { - // Tick depth when we enter a UL - if (el.tagName === "UL") { - depth = depth + 1; - } - - // It this is active link - let isActiveNode = false; - if (el.tagName === "A" && el.classList.contains("active")) { - isActiveNode = true; - } - - // See if there is an active child to this element - let hasActiveChild = false; - for (const child of el.children) { - hasActiveChild = walk(child, depth) || hasActiveChild; - } - - // Process the collapse state if this is an UL - if (el.tagName === "UL") { - if (tocOpenDepth === -1 && depth > 1) { - // toc-expand: false - el.classList.add("collapse"); - } else if ( - depth <= tocOpenDepth || - hasActiveChild || - prevSiblingIsActiveLink(el) - ) { - el.classList.remove("collapse"); - } else { - el.classList.add("collapse"); - } - - // untick depth when we leave a UL - depth = depth - 1; - } - return hasActiveChild || isActiveNode; - }; - - // walk the TOC and expand / collapse any items that should be shown - if (tocEl) { - updateActiveLink(); - walk(tocEl, 0); - } - - // Throttle the scroll event and walk peridiocally - window.document.addEventListener( - "scroll", - throttle(() => { - if (tocEl) { - updateActiveLink(); - walk(tocEl, 0); - } - if (!isReaderMode()) { - hideOverlappedSidebars(); - } - }, 5) - ); - window.addEventListener( - "resize", - throttle(() => { - if (tocEl) { - updateActiveLink(); - walk(tocEl, 0); - } - if (!isReaderMode()) { - hideOverlappedSidebars(); - } - }, 10) - ); - hideOverlappedSidebars(); - highlightReaderToggle(isReaderMode()); -}); - -tabsets.init(); -axe.init(); - -function throttle(func, wait) { - let waiting = false; - return function () { - if (!waiting) { - func.apply(this, arguments); - waiting = true; - setTimeout(function () { - waiting = false; - }, wait); - } - }; -} - -function nexttick(func) { - return setTimeout(func, 0); -} diff --git a/_site/site_libs/quarto-html/tabsets/tabsets.js b/_site/site_libs/quarto-html/tabsets/tabsets.js deleted file mode 100644 index 51345d0..0000000 --- a/_site/site_libs/quarto-html/tabsets/tabsets.js +++ /dev/null @@ -1,95 +0,0 @@ -// grouped tabsets - -export function init() { - window.addEventListener("pageshow", (_event) => { - function getTabSettings() { - const data = localStorage.getItem("quarto-persistent-tabsets-data"); - if (!data) { - localStorage.setItem("quarto-persistent-tabsets-data", "{}"); - return {}; - } - if (data) { - return JSON.parse(data); - } - } - - function setTabSettings(data) { - localStorage.setItem( - "quarto-persistent-tabsets-data", - JSON.stringify(data) - ); - } - - function setTabState(groupName, groupValue) { - const data = getTabSettings(); - data[groupName] = groupValue; - setTabSettings(data); - } - - function toggleTab(tab, active) { - const tabPanelId = tab.getAttribute("aria-controls"); - const tabPanel = document.getElementById(tabPanelId); - if (active) { - tab.classList.add("active"); - tabPanel.classList.add("active"); - } else { - tab.classList.remove("active"); - tabPanel.classList.remove("active"); - } - } - - function toggleAll(selectedGroup, selectorsToSync) { - for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { - const active = selectedGroup === thisGroup; - for (const tab of tabs) { - toggleTab(tab, active); - } - } - } - - function findSelectorsToSyncByLanguage() { - const result = {}; - const tabs = Array.from( - document.querySelectorAll(`div[data-group] a[id^='tabset-']`) - ); - for (const item of tabs) { - const div = item.parentElement.parentElement.parentElement; - const group = div.getAttribute("data-group"); - if (!result[group]) { - result[group] = {}; - } - const selectorsToSync = result[group]; - const value = item.innerHTML; - if (!selectorsToSync[value]) { - selectorsToSync[value] = []; - } - selectorsToSync[value].push(item); - } - return result; - } - - function setupSelectorSync() { - const selectorsToSync = findSelectorsToSyncByLanguage(); - Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { - Object.entries(tabSetsByValue).forEach(([value, items]) => { - items.forEach((item) => { - item.addEventListener("click", (_event) => { - setTabState(group, value); - toggleAll(value, selectorsToSync[group]); - }); - }); - }); - }); - return selectorsToSync; - } - - const selectorsToSync = setupSelectorSync(); - for (const [group, selectedName] of Object.entries(getTabSettings())) { - const selectors = selectorsToSync[group]; - // it's possible that stale state gives us empty selections, so we explicitly check here. - if (selectors) { - toggleAll(selectedName, selectors); - } - } - }); -} diff --git a/_site/site_libs/quarto-html/tippy.css b/_site/site_libs/quarto-html/tippy.css deleted file mode 100644 index e6ae635..0000000 --- a/_site/site_libs/quarto-html/tippy.css +++ /dev/null @@ -1 +0,0 @@ -.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/_site/site_libs/quarto-html/tippy.umd.min.js b/_site/site_libs/quarto-html/tippy.umd.min.js deleted file mode 100644 index ca292be..0000000 --- a/_site/site_libs/quarto-html/tippy.umd.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); - diff --git a/_site/site_libs/quarto-nav/quarto-nav.js b/_site/site_libs/quarto-nav/quarto-nav.js deleted file mode 100644 index 38cc430..0000000 --- a/_site/site_libs/quarto-nav/quarto-nav.js +++ /dev/null @@ -1,325 +0,0 @@ -const headroomChanged = new CustomEvent("quarto-hrChanged", { - detail: {}, - bubbles: true, - cancelable: false, - composed: false, -}); - -const announceDismiss = () => { - const annEl = window.document.getElementById("quarto-announcement"); - if (annEl) { - annEl.remove(); - - const annId = annEl.getAttribute("data-announcement-id"); - window.localStorage.setItem(`quarto-announce-${annId}`, "true"); - } -}; - -const announceRegister = () => { - const annEl = window.document.getElementById("quarto-announcement"); - if (annEl) { - const annId = annEl.getAttribute("data-announcement-id"); - const isDismissed = - window.localStorage.getItem(`quarto-announce-${annId}`) || false; - if (isDismissed) { - announceDismiss(); - return; - } else { - annEl.classList.remove("hidden"); - } - - const actionEl = annEl.querySelector(".quarto-announcement-action"); - if (actionEl) { - actionEl.addEventListener("click", function (e) { - e.preventDefault(); - // Hide the bar immediately - announceDismiss(); - }); - } - } -}; - -window.document.addEventListener("DOMContentLoaded", function () { - let init = false; - - announceRegister(); - - // Manage the back to top button, if one is present. - let lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; - const scrollDownBuffer = 5; - const scrollUpBuffer = 35; - const btn = document.getElementById("quarto-back-to-top"); - const hideBackToTop = () => { - btn.style.display = "none"; - }; - const showBackToTop = () => { - btn.style.display = "inline-block"; - }; - if (btn) { - window.document.addEventListener( - "scroll", - function () { - const currentScrollTop = - window.pageYOffset || document.documentElement.scrollTop; - - // Shows and hides the button 'intelligently' as the user scrolls - if (currentScrollTop - scrollDownBuffer > lastScrollTop) { - hideBackToTop(); - lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; - } else if (currentScrollTop < lastScrollTop - scrollUpBuffer) { - showBackToTop(); - lastScrollTop = currentScrollTop <= 0 ? 0 : currentScrollTop; - } - - // Show the button at the bottom, hides it at the top - if (currentScrollTop <= 0) { - hideBackToTop(); - } else if ( - window.innerHeight + currentScrollTop >= - document.body.offsetHeight - ) { - showBackToTop(); - } - }, - false - ); - } - - function throttle(func, wait) { - var timeout; - return function () { - const context = this; - const args = arguments; - const later = function () { - clearTimeout(timeout); - timeout = null; - func.apply(context, args); - }; - - if (!timeout) { - timeout = setTimeout(later, wait); - } - }; - } - - function headerOffset() { - // Set an offset if there is are fixed top navbar - const headerEl = window.document.querySelector("header.fixed-top"); - if (headerEl) { - return headerEl.clientHeight; - } else { - return 0; - } - } - - function footerOffset() { - const footerEl = window.document.querySelector("footer.footer"); - if (footerEl) { - return footerEl.clientHeight; - } else { - return 0; - } - } - - function dashboardOffset() { - const dashboardNavEl = window.document.getElementById( - "quarto-dashboard-header" - ); - if (dashboardNavEl !== null) { - return dashboardNavEl.clientHeight; - } else { - return 0; - } - } - - function updateDocumentOffsetWithoutAnimation() { - updateDocumentOffset(false); - } - - function updateDocumentOffset(animated) { - // set body offset - const topOffset = headerOffset(); - const bodyOffset = topOffset + footerOffset() + dashboardOffset(); - const bodyEl = window.document.body; - bodyEl.setAttribute("data-bs-offset", topOffset); - bodyEl.style.paddingTop = topOffset + "px"; - - // deal with sidebar offsets - const sidebars = window.document.querySelectorAll( - ".sidebar, .headroom-target" - ); - sidebars.forEach((sidebar) => { - if (!animated) { - sidebar.classList.add("notransition"); - // Remove the no transition class after the animation has time to complete - setTimeout(function () { - sidebar.classList.remove("notransition"); - }, 201); - } - - if (window.Headroom && sidebar.classList.contains("sidebar-unpinned")) { - sidebar.style.top = "0"; - sidebar.style.maxHeight = "100vh"; - } else { - sidebar.style.top = topOffset + "px"; - sidebar.style.maxHeight = "calc(100vh - " + topOffset + "px)"; - } - }); - - // allow space for footer - const mainContainer = window.document.querySelector(".quarto-container"); - if (mainContainer) { - mainContainer.style.minHeight = "calc(100vh - " + bodyOffset + "px)"; - } - - // link offset - let linkStyle = window.document.querySelector("#quarto-target-style"); - if (!linkStyle) { - linkStyle = window.document.createElement("style"); - linkStyle.setAttribute("id", "quarto-target-style"); - window.document.head.appendChild(linkStyle); - } - while (linkStyle.firstChild) { - linkStyle.removeChild(linkStyle.firstChild); - } - if (topOffset > 0) { - linkStyle.appendChild( - window.document.createTextNode(` - section:target::before { - content: ""; - display: block; - height: ${topOffset}px; - margin: -${topOffset}px 0 0; - }`) - ); - } - if (init) { - window.dispatchEvent(headroomChanged); - } - init = true; - } - - // initialize headroom - var header = window.document.querySelector("#quarto-header"); - if (header && window.Headroom) { - const headroom = new window.Headroom(header, { - tolerance: 5, - onPin: function () { - const sidebars = window.document.querySelectorAll( - ".sidebar, .headroom-target" - ); - sidebars.forEach((sidebar) => { - sidebar.classList.remove("sidebar-unpinned"); - }); - updateDocumentOffset(); - }, - onUnpin: function () { - const sidebars = window.document.querySelectorAll( - ".sidebar, .headroom-target" - ); - sidebars.forEach((sidebar) => { - sidebar.classList.add("sidebar-unpinned"); - }); - updateDocumentOffset(); - }, - }); - headroom.init(); - - let frozen = false; - window.quartoToggleHeadroom = function () { - if (frozen) { - headroom.unfreeze(); - frozen = false; - } else { - headroom.freeze(); - frozen = true; - } - }; - } - - window.addEventListener( - "hashchange", - function (e) { - if ( - getComputedStyle(document.documentElement).scrollBehavior !== "smooth" - ) { - window.scrollTo(0, window.pageYOffset - headerOffset()); - } - }, - false - ); - - // Observe size changed for the header - const headerEl = window.document.querySelector("header.fixed-top"); - if (headerEl && window.ResizeObserver) { - const observer = new window.ResizeObserver(() => { - setTimeout(updateDocumentOffsetWithoutAnimation, 0); - }); - observer.observe(headerEl, { - attributes: true, - childList: true, - characterData: true, - }); - } else { - window.addEventListener( - "resize", - throttle(updateDocumentOffsetWithoutAnimation, 50) - ); - } - setTimeout(updateDocumentOffsetWithoutAnimation, 250); - - // fixup index.html links if we aren't on the filesystem - if (window.location.protocol !== "file:") { - const links = window.document.querySelectorAll("a"); - for (let i = 0; i < links.length; i++) { - if (links[i].href) { - links[i].dataset.originalHref = links[i].href; - links[i].href = links[i].href.replace(/\/index\.html/, "/"); - } - } - - // Fixup any sharing links that require urls - // Append url to any sharing urls - const sharingLinks = window.document.querySelectorAll( - "a.sidebar-tools-main-item, a.quarto-navigation-tool, a.quarto-navbar-tools, a.quarto-navbar-tools-item" - ); - for (let i = 0; i < sharingLinks.length; i++) { - const sharingLink = sharingLinks[i]; - const href = sharingLink.getAttribute("href"); - if (href) { - sharingLink.setAttribute( - "href", - href.replace("|url|", window.location.href) - ); - } - } - - // Scroll the active navigation item into view, if necessary - const navSidebar = window.document.querySelector("nav#quarto-sidebar"); - if (navSidebar) { - // Find the active item - const activeItem = navSidebar.querySelector("li.sidebar-item a.active"); - if (activeItem) { - // Wait for the scroll height and height to resolve by observing size changes on the - // nav element that is scrollable - const resizeObserver = new ResizeObserver((_entries) => { - // The bottom of the element - const elBottom = activeItem.offsetTop; - const viewBottom = navSidebar.scrollTop + navSidebar.clientHeight; - - // The element height and scroll height are the same, then we are still loading - if (viewBottom !== navSidebar.scrollHeight) { - // Determine if the item isn't visible and scroll to it - if (elBottom >= viewBottom) { - navSidebar.scrollTop = elBottom; - } - - // stop observing now since we've completed the scroll - resizeObserver.unobserve(navSidebar); - } - }); - resizeObserver.observe(navSidebar); - } - } - } -}); diff --git a/_site/site_libs/quarto-search/autocomplete.umd.js b/_site/site_libs/quarto-search/autocomplete.umd.js deleted file mode 100644 index 6090a55..0000000 --- a/_site/site_libs/quarto-search/autocomplete.umd.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! @algolia/autocomplete-js 1.19.1 | MIT License | Β© Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-js"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,u,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(c)throw o}}return a}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function N(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r=3||2===n&&r>=4||1===n&&r>=10);function i(t,n,r){if(o&&void 0!==r){var i=r[0].__autocomplete_algoliaCredentials,u={"X-Algolia-Application-Id":i.appId,"X-Algolia-API-Key":i.apiKey};e.apply(void 0,[t].concat(D(n),[{headers:u}]))}else e.apply(void 0,[t].concat(D(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setAuthenticatedUserToken:function(t){e("setAuthenticatedUserToken",t)},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDsAfterSearch",B(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("clickedObjectIDs",B(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDsAfterSearch",B(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&i("convertedObjectIDs",B(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=k(t,A);return[].concat(D(e),D(q(N(N({},r),{},{objectIDs:(null==n?void 0:n.map((function(e){return e.objectID})))||r.objectIDs})).map((function(e){return{items:n,payload:e}}))))}),[]).forEach((function(e){var t=e.items;return i("viewedObjectIDs",[e.payload],t)}))},viewedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function L(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function F(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function M(e){return function(e){if(Array.isArray(e))return H(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return H(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return H(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&z({onItemsChange:o,items:n,insights:c,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function o(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:W(W({},a?{clickAnalytics:!0}:{}),e?{userToken:X(e)}:{}),insights:c}})}l("addAlgoliaAgent","insights-plugin"),o(),l("onUserTokenChange",(function(e){o(e)})),l("getUserToken",null,(function(e,t){o(t)})),n((function(e){var t=e.item,n=e.state,r=e.event,o=e.source;F(t)&&i({state:n,event:r,insights:c,item:t,insightsEvents:[W({eventName:"Item Selected"},j({item:t,items:o.getItems().filter(F)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,o=e.event;F(t)&&u({state:r,event:o,insights:c,item:t,insightsEvents:[W({eventName:"Item Active"},j({item:t,items:n.getItems().filter(F)}))]})}))},onStateChange:function(e){var t=e.state;m({state:t})},__autocomplete_pluginOptions:e}}function J(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;return[].concat(M(t),["autocomplete-internal"],M(null!==(e=n.algoliaInsightsPlugin)&&void 0!==e&&e.__automaticInsights?["autocomplete-automatic"]:[]))}function X(e){return"number"==typeof e?e.toString():e}function Y(e,t){var n=t;return{then:function(t,r){return Y(e.then(ee(t,n,e),ee(r,n,e)),n)},catch:function(t){return Y(e.catch(ee(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),Y(e.finally(ee(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Z(e){return Y(e,{isCanceled:!1,onCancelList:[]})}function ee(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}var te,ne=!0;function re(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var o=(null===t?-1:t)+e;return o<=-1||o>=n?null===r?null:0:o}function oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ie(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw i}}}}function ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0?t.wait(Math.max.apply(Math,o)):void 0};function fe(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,o=0,i=0;!1===r;){var u=t.collections[o];if(u===n){r=!0;break}i+=u.items.length,o++}return t.activeItemId-i}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function pe(e,t,n){return[e,null==n?void 0:n.sourceId,t].filter(Boolean).join("-").replace(/\s/g,"")}var me=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function ve(e){return e.nativeEvent||e}function de(e){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},de(e)}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function be(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==de(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==de(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===de(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ge(e,t,n){var r,o=t.initialState;return{getState:function(){return o},dispatch:function(r,i){var u=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:d(),plugins:o,initialState:Ae({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),o.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(Pe(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:_,onResolve:_};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=ie(ie({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return m(e)})).then((function(e){return e.map((function(e){return Ae(Ae({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Ae({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Ce(e){return Ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ce(e)}function ke(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Je,Xe,Ye,Ze=null,et=(Je=-1,Xe=-1,Ye=void 0,function(e){var t=++Je;return Promise.resolve(e).then((function(e){return Ye&&t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function lt(e){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lt(e)}var ct=["props","refresh","store"],st=["inputElement","formElement","panelElement"],ft=["inputElement"],pt=["inputElement","maxLength"],mt=["source"],vt=["item","source"];function dt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function yt(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function ht(e){var t=e.props,n=e.refresh,r=e.store,o=gt(e,ct);return{getEnvironmentProps:function(e){var n=e.inputElement,o=e.formElement,i=e.panelElement;function u(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[o,i].some((function(t){return n=t,r=e.target,n===r||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return yt({onTouchStart:u,onMouseDown:u,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},gt(e,st))},getRootProps:function(e){return yt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return pe(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":pe(t.id,"label")},e)},getFormProps:function(e){e.inputElement;var i=gt(e,ft),u=function(i){var u;t.onSubmit(yt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("submit",null),null===(u=e.inputElement)||void 0===u||u.blur()};return yt({action:"",noValidate:!0,role:"search",onSubmit:function(e){e.preventDefault();var n=se(t.plugins,r.pendingRequests);void 0!==n?n.then((function(){return u(e)})):u(e)},onReset:function(i){var u;i.preventDefault(),t.onReset(yt({event:i,refresh:n,state:r.getState()},o)),r.dispatch("reset",null),null===(u=e.inputElement)||void 0===u||u.focus()}},i)},getLabelProps:function(e){return yt({htmlFor:pe(t.id,"input"),id:pe(t.id,"label")},e)},getInputProps:function(e){var i;function u(e){(t.openOnFocus||Boolean(r.getState().query))&&tt(yt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},o)),r.dispatch("focus",null)}var a=e||{};a.inputElement;var l=a.maxLength,c=void 0===l?512:l,s=gt(a,pt),f=fe(r.getState()),p=function(e){return Boolean(e&&e.match(me))}((null===(i=t.environment.navigator)||void 0===i?void 0:i.userAgent)||""),m=t.enterKeyHint||(null!=f&&f.itemUrl&&!p?"go":"search");return yt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?pe(t.id,"item-".concat(r.getState().activeItemId),null==f?void 0:f.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.filter((function(e){return e.items.length>0})).map((function(e){var n=e.source;return pe(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":pe(t.id,"label"),value:r.getState().completion||r.getState().query,id:pe(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){var i=e.currentTarget.value;t.ignoreCompositionEvents&&ve(e).isComposing?o.setQuery(i):tt(yt({event:e,props:t,query:i.slice(0,c),refresh:n,store:r},o))},onCompositionEnd:function(e){tt(yt({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},o))},onKeyDown:function(e){ve(e).isComposing||function(e){var t=e.event,n=e.props,r=e.refresh,o=e.store,i=at(e,rt);if("ArrowUp"===t.key||"ArrowDown"===t.key){var u=function(){var e=fe(o.getState()),t=n.environment.document.getElementById(pe(n.id,"item-".concat(o.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},a=function(){var e=fe(o.getState());if(null!==o.getState().activeItemId&&e){var n=e.item,u=e.itemInputValue,a=e.itemUrl,l=e.source;l.onActive(it({event:t,item:n,itemInputValue:u,itemUrl:a,refresh:r,source:l,state:o.getState()},i))}};t.preventDefault(),!1===o.getState().isOpen&&(n.openOnFocus||Boolean(o.getState().query))?tt(it({event:t,props:n,query:o.getState().query,refresh:r,store:o},i)).then((function(){o.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),a(),setTimeout(u,0)})):(o.dispatch(t.key,{}),a(),u())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length}))){var l=se(n.plugins,o.pendingRequests);return void(void 0!==l?l.then(o.pendingRequests.cancelAll):n.debug||o.pendingRequests.cancelAll())}t.preventDefault();var c=fe(o.getState()),s=c.item,f=c.itemInputValue,p=c.itemUrl,m=c.source;if(t.metaKey||t.ctrlKey)void 0!==p&&(m.onSelect(it({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:m,state:o.getState()},i)),n.navigator.navigateNewTab({itemUrl:p,item:s,state:o.getState()}));else if(t.shiftKey)void 0!==p&&(m.onSelect(it({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:m,state:o.getState()},i)),n.navigator.navigateNewWindow({itemUrl:p,item:s,state:o.getState()}));else if(t.altKey);else{if(void 0!==p)return m.onSelect(it({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:m,state:o.getState()},i)),void n.navigator.navigate({itemUrl:p,item:s,state:o.getState()});tt(it({event:t,nextState:{isOpen:!1},props:n,query:f,refresh:r,store:o},i)).then((function(){m.onSelect(it({event:t,item:s,itemInputValue:f,itemUrl:p,refresh:r,source:m,state:o.getState()},i))}))}}}(yt({event:e,props:t,refresh:n,store:r},o))},onFocus:u,onBlur:_,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||u(n)}},s)},getPanelProps:function(e){return yt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,o=gt(n,mt);return yt({role:"listbox","aria-labelledby":pe(t.id,"label"),id:pe(t.id,"list",r)},o)},getItemProps:function(e){var i=e.item,u=e.source,a=gt(e,vt);return yt({id:pe(t.id,"item-".concat(i.__autocomplete_id),u),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=fe(r.getState());if(null!==r.getState().activeItemId&&t){var u=t.item,a=t.itemInputValue,l=t.itemUrl,c=t.source;c.onActive(yt({event:e,item:u,itemInputValue:a,itemUrl:l,refresh:n,source:c,state:r.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var a=u.getItemInputValue({item:i,state:r.getState()}),l=u.getItemUrl({item:i,state:r.getState()});(l?Promise.resolve():tt(yt({event:e,nextState:{isOpen:!1},props:t,query:a,refresh:n,store:r},o))).then((function(){u.onSelect(yt({event:e,item:i,itemInputValue:a,itemUrl:l,refresh:n,source:u,state:r.getState()},o))}))}},a)}}}function _t(e){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_t(e)}function Ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function St(e){for(var t=1;t=5&&((o||!e&&5===r)&&(u.push(r,0,o,n),r=6),e&&(u.push(r,e,0,n),r=6)),o=""},l=0;l"===t?(r=1,o=""):o=t+o[0]:i?t===i?i="":o+=t:'"'===t||"'"===t?i=t:">"===t?(a(),r=1):r&&("="===t?(r=5,n=o,o=""):"/"===t&&(r<5||">"===e[l][c+1])?(a(),3===r&&(u=u[0]),r=u,(u=u[0]).push(2,0,r),r=0):" "===t||"\t"===t||"\n"===t||"\r"===t?(a(),r=2):o+=t),3===r&&"!--"===o&&(r=4,u=u[0])}return a(),u}(e)),t),arguments,[])).length>1?t:t[0]}var Ft=function(e){var t=e.environment,n=t.document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","aa-ClearIcon"),n.setAttribute("viewBox","0 0 24 24"),n.setAttribute("width","18"),n.setAttribute("height","18"),n.setAttribute("fill","currentColor");var r=t.document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttribute("d","M5.293 6.707l5.293 5.293-5.293 5.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0l5.293-5.293 5.293 5.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-5.293-5.293 5.293-5.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5.293 5.293-5.293-5.293c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414z"),n.appendChild(r),n};function Ut(e,t){if("string"==typeof t){var n=e.document.querySelector(t);return"The element ".concat(JSON.stringify(t)," is not in the document."),n}return t}function Mt(){for(var e=arguments.length,t=new Array(e),n=0;n2&&(u.children=arguments.length>3?on.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(i in e.defaultProps)void 0===u[i]&&(u[i]=e.defaultProps[i]);return gn(e,u,r,o,null)}function gn(e,t,n,r,o){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++an:o};return null==o&&null!=un.vnode&&un.vnode(i),i}function hn(e){return e.children}function _n(e,t){this.props=e,this.context=t}function On(e,t){if(null==t)return e.__?On(e.__,e.__.__k.indexOf(e)+1):null;for(var n;tt&&ln.sort(fn));Pn.__r=0}function wn(e,t,n,r,o,i,u,a,l,c){var s,f,p,m,v,d,y,b=r&&r.__k||mn,g=b.length;for(n.__k=[],s=0;s0?gn(m.type,m.props,m.key,m.ref?m.ref:null,m.__v):m)){if(m.__=n,m.__b=n.__b+1,null===(p=b[s])||p&&m.key==p.key&&m.type===p.type)b[s]=void 0;else for(f=0;f=0;t--)if((n=e.__k[t])&&(r=En(n)))return r;return null}function Dn(e,t,n){"-"===t[0]?e.setProperty(t,null==n?"":n):e[t]=null==n?"":"number"!=typeof n||vn.test(t)?n:n+"px"}function Cn(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Dn(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||Dn(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?xn:kn,i):e.removeEventListener(t,i?xn:kn,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==t&&"height"!==t&&"href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null==n||!1===n&&"-"!==t[4]?e.removeAttribute(t):e.setAttribute(t,n))}}function kn(e){return this.l[e.type+!1](un.event?un.event(e):e)}function xn(e){return this.l[e.type+!0](un.event?un.event(e):e)}function Nn(e,t,n,r,o,i,u,a,l){var c,s,f,p,m,v,d,y,b,g,h,_,O,S,j,P=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(l=n.__h,a=t.__e=n.__e,t.__h=null,i=[a]),(c=un.__b)&&c(t);try{e:if("function"==typeof P){if(y=t.props,b=(c=P.contextType)&&r[c.__c],g=c?b?b.props.value:c.__:r,n.__c?d=(s=t.__c=n.__c).__=s.__E:("prototype"in P&&P.prototype.render?t.__c=s=new P(y,g):(t.__c=s=new _n(y,g),s.constructor=P,s.render=Ln),b&&b.sub(s),s.props=y,s.state||(s.state={}),s.context=g,s.__n=r,f=s.__d=!0,s.__h=[],s._sb=[]),null==s.__s&&(s.__s=s.state),null!=P.getDerivedStateFromProps&&(s.__s==s.state&&(s.__s=dn({},s.__s)),dn(s.__s,P.getDerivedStateFromProps(y,s.__s))),p=s.props,m=s.state,s.__v=t,f)null==P.getDerivedStateFromProps&&null!=s.componentWillMount&&s.componentWillMount(),null!=s.componentDidMount&&s.__h.push(s.componentDidMount);else{if(null==P.getDerivedStateFromProps&&y!==p&&null!=s.componentWillReceiveProps&&s.componentWillReceiveProps(y,g),!s.__e&&null!=s.shouldComponentUpdate&&!1===s.shouldComponentUpdate(y,s.__s,g)||t.__v===n.__v){for(t.__v!==n.__v&&(s.props=y,s.state=s.__s,s.__d=!1),s.__e=!1,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),h=0;h0&&void 0!==arguments[0]?arguments[0]:[];return{get:function(){return e},add:function(t){var n=e[e.length-1];(null==n?void 0:n.isHighlighted)===t.isHighlighted?e[e.length-1]={value:n.value+t.value,isHighlighted:n.isHighlighted}:e.push(t)}}}(n?[{value:n,isHighlighted:!1}]:[]);return t.forEach((function(e){var t=e.split(Un);r.add({value:t[0],isHighlighted:!0}),""!==t[1]&&r.add({value:t[1],isHighlighted:!1})})),r.get()}function Hn(e){return function(e){if(Array.isArray(e))return Vn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Vn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Vn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Vn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",""":'"',"'":"'"},Kn=new RegExp(/\w/i),$n=/&(amp|quot|lt|gt|#39);/g,zn=RegExp($n.source);function Gn(e,t){var n,r,o,i=e[t],u=(null===(n=e[t+1])||void 0===n?void 0:n.isHighlighted)||!0,a=(null===(r=e[t-1])||void 0===r?void 0:r.isHighlighted)||!0;return Kn.test((o=i.value)&&zn.test(o)?o.replace($n,(function(e){return Qn[e]})):o)||a!==u?i.isHighlighted:a}function Jn(e){return Jn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Jn(e)}function Xn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Yn(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function vr(e){return function(e){if(Array.isArray(e))return dr(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return dr(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return dr(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function dr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0;if(!_.value.core.openOnFocus&&!t.query)return n;var r=Boolean(y.current||_.value.renderer.renderNoResults);return!n&&r||n},__autocomplete_metadata:{userAgents:wr,options:e}}))})),j=f(n({collections:[],completion:null,context:{},isOpen:!1,query:"",activeItemId:null,status:"idle"},_.value.core.initialState)),P={getEnvironmentProps:_.value.renderer.getEnvironmentProps,getFormProps:_.value.renderer.getFormProps,getInputProps:_.value.renderer.getInputProps,getItemProps:_.value.renderer.getItemProps,getLabelProps:_.value.renderer.getLabelProps,getListProps:_.value.renderer.getListProps,getPanelProps:_.value.renderer.getPanelProps,getRootProps:_.value.renderer.getRootProps},w={setActiveItemId:S.value.setActiveItemId,setQuery:S.value.setQuery,setCollections:S.value.setCollections,setIsOpen:S.value.setIsOpen,setStatus:S.value.setStatus,setContext:S.value.setContext,refresh:S.value.refresh,navigator:S.value.navigator},I=m((function(){return Lt.bind(_.value.renderer.renderer.createElement)})),A=m((function(){return rn({autocomplete:S.value,autocompleteScopeApi:w,classNames:_.value.renderer.classNames,environment:_.value.core.environment,isDetached:O.value,placeholder:_.value.core.placeholder,propGetters:P,setIsModalOpen:k,state:j.current,translations:_.value.renderer.translations})}));function E(){Jt(A.value.panel,{style:O.value?{}:Pr({panelPlacement:_.value.renderer.panelPlacement,container:A.value.root,form:A.value.form,environment:_.value.core.environment})})}function D(e){j.current=e;var t={autocomplete:S.value,autocompleteScopeApi:w,classNames:_.value.renderer.classNames,components:_.value.renderer.components,container:_.value.renderer.container,html:I.value,dom:A.value,panelContainer:O.value?A.value.detachedContainer:_.value.renderer.panelContainer,propGetters:P,state:j.current,renderer:_.value.renderer.renderer},r=!b(e)&&!y.current&&_.value.renderer.renderNoResults||_.value.renderer.render;!function(e){var t=e.autocomplete,r=e.autocompleteScopeApi,o=e.dom,i=e.propGetters,u=e.state;Xt(o.root,i.getRootProps(n({state:u,props:t.getRootProps({})},r))),Xt(o.input,i.getInputProps(n({state:u,props:t.getInputProps({inputElement:o.input}),inputElement:o.input},r))),Jt(o.label,{hidden:"stalled"===u.status}),Jt(o.loadingIndicator,{hidden:"stalled"!==u.status}),Jt(o.clearButton,{hidden:!u.query}),Jt(o.detachedSearchButtonQuery,{textContent:u.query}),Jt(o.detachedSearchButtonPlaceholder,{hidden:Boolean(u.query)})}(t),function(e,t){var r=t.autocomplete,o=t.autocompleteScopeApi,u=t.classNames,a=t.html,l=t.dom,c=t.panelContainer,s=t.propGetters,f=t.state,p=t.components,m=t.renderer;if(f.isOpen){c.contains(l.panel)||"loading"===f.status||c.appendChild(l.panel),l.panel.classList.toggle("aa-Panel--stalled","stalled"===f.status);var v=f.collections.filter((function(e){var t=e.source,n=e.items;return t.templates.noResults||n.length>0})).map((function(e,t){var l=e.source,c=e.items;return m.createElement("section",{key:t,className:u.source,"data-autocomplete-source-id":l.sourceId},l.templates.header&&m.createElement("div",{className:u.sourceHeader},l.templates.header({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})),l.templates.noResults&&0===c.length?m.createElement("div",{className:u.sourceNoResults},l.templates.noResults({components:p,createElement:m.createElement,Fragment:m.Fragment,source:l,state:f,html:a})):m.createElement("ul",i({className:u.list},s.getListProps(n({state:f,props:r.getListProps({source:l})},o))),c.map((function(e){var t=r.getItemProps({item:e,source:l});return m.createElement("li",i({key:t.id,className:u.item},s.getItemProps(n({state:f,props:t},o))),l.templates.item({components:p,createElement:m.createElement,Fragment:m.Fragment,item:e,state:f,html:a}))}))),l.templates.footer&&m.createElement("div",{className:u.sourceFooter},l.templates.footer({components:p,createElement:m.createElement,Fragment:m.Fragment,items:c,source:l,state:f,html:a})))})),d=m.createElement(m.Fragment,null,m.createElement("div",{className:u.panelLayout},v),m.createElement("div",{className:"aa-GradientBottom"})),y=v.reduce((function(e,t){return e[t.props["data-autocomplete-source-id"]]=t,e}),{});e(n(n({children:d,state:f,sections:v,elements:y},m),{},{components:p,html:a},o),l.panel)}else c.contains(l.panel)&&c.removeChild(l.panel)}(r,t)}function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};l();var t=_.value.renderer,n=t.components,r=u(t,Ir);g.current=Vt(r,_.value.core,{components:Wt(n,(function(e){return!e.value.hasOwnProperty("__autocomplete_componentName")})),initialState:j.current},e),v(),c(),S.value.refresh().then((function(){D(j.current)}))}function k(e){e!==_.value.core.environment.document.body.contains(A.value.detachedOverlay)&&(e?(_.value.core.environment.document.body.appendChild(A.value.detachedOverlay),_.value.core.environment.document.body.classList.add("aa-Detached"),A.value.input.focus()):(_.value.core.environment.document.body.removeChild(A.value.detachedOverlay),_.value.core.environment.document.body.classList.remove("aa-Detached")))}return a((function(){var e=S.value.getEnvironmentProps({formElement:A.value.form,panelElement:A.value.panel,inputElement:A.value.input});return Jt(_.value.core.environment,e),function(){Jt(_.value.core.environment,Object.keys(e).reduce((function(e,t){return n(n({},e),{},o({},t,void 0))}),{}))}})),a((function(){var e=O.value?_.value.core.environment.document.body:_.value.renderer.panelContainer,t=O.value?A.value.detachedOverlay:A.value.panel;return O.value&&j.current.isOpen&&k(!0),D(j.current),function(){e.contains(t)&&(e.removeChild(t),e.classList.remove("aa-Detached"))}})),a((function(){var e=_.value.renderer.container;return e.appendChild(A.value.root),function(){e.removeChild(A.value.root)}})),a((function(){var e=p((function(e){D(e.state)}),0);return h.current=function(t){var n=t.state,r=t.prevState;(O.value&&r.isOpen!==n.isOpen&&k(n.isOpen),O.value||!n.isOpen||r.isOpen||E(),n.query!==r.query)&&_.value.core.environment.document.querySelectorAll(".aa-Panel--scrollable").forEach((function(e){0!==e.scrollTop&&(e.scrollTop=0)}));e({state:n})},function(){h.current=void 0}})),a((function(){var e=p((function(){var e=O.value;O.value=_.value.core.environment.matchMedia(_.value.renderer.detachedMediaQuery).matches,e!==O.value?C({}):requestAnimationFrame(E)}),20);return _.value.core.environment.addEventListener("resize",e),function(){_.value.core.environment.removeEventListener("resize",e)}})),a((function(){if(!O.value)return function(){};function e(e){A.value.detachedContainer.classList.toggle("aa-DetachedContainer--modal",e)}function t(t){e(t.matches)}var n=_.value.core.environment.matchMedia(getComputedStyle(_.value.core.environment.document.documentElement).getPropertyValue("--aa-detached-modal-media-query"));e(n.matches);var r=Boolean(n.addEventListener);return r?n.addEventListener("change",t):n.addListener(t),function(){r?n.removeEventListener("change",t):n.removeListener(t)}})),a((function(){return requestAnimationFrame(E),function(){}})),n(n({},w),{},{update:C,destroy:function(){l()}})},e.getAlgoliaFacets=function(e){var t=Ar({transformResponse:function(e){return e.facetHits}}),r=e.queries.map((function(e){return n(n({},e),{},{type:"facet"})}));return t(n(n({},e),{},{queries:r}))},e.getAlgoliaResults=Er,Object.defineProperty(e,"__esModule",{value:!0})})); - diff --git a/_site/site_libs/quarto-search/fuse.min.js b/_site/site_libs/quarto-search/fuse.min.js deleted file mode 100644 index adc2835..0000000 --- a/_site/site_libs/quarto-search/fuse.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io) - * - * Copyright (c) 2022 Kiro Risk (http://kiro.me) - * All Rights Reserved. Apache Software License 2.0 - * - * http://www.apache.org/licenses/LICENSE-2.0 - */ -var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(C).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}var $=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?I.getFn:n,o=t.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o;r(this,e),this.norm=E(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,g(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();g(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?I.getFn:r,o=n.fieldNormWeight,c=void 0===o?I.fieldNormWeight:o,a=new $({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(_)),a.setSources(t),a.create(),a}function R(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?I.distance:s,h=t.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}function N(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}var P=32;function W(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?I.location:o,a=i.threshold,s=void 0===a?I.threshold:a,u=i.distance,h=void 0===u?I.distance:u,l=i.includeMatches,f=void 0===l?I.includeMatches:l,d=i.findAllMatches,v=void 0===d?I.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?I.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?I.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?I.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:W(e),startIndex:t})},x=this.pattern.length;if(x>P){for(var w=0,L=x%P,S=x-L;w3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?I.location:i,c=r.distance,a=void 0===c?I.distance:c,s=r.threshold,u=void 0===s?I.threshold:s,h=r.findAllMatches,l=void 0===h?I.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?I.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?I.includeMatches:v,y=r.ignoreLocation,p=void 0===y?I.ignoreLocation:y;if(t.length>P)throw new Error(w(P));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,L=b,S=d>1||g,_=S?Array(M):[];(m=e.indexOf(t,L))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),L=m+k,S)for(var j=0;j=z;q-=1){var B=q-1,J=n[e.charAt(B)];if(S&&(_[B]=+!!J),K[q]=(K[q+1]<<1|1)&J,F&&(K[q]|=(A[q+1]|A[q])<<1|1|A[q+1]),K[q]&$&&(C=R(t,{errors:F,currentLocation:B,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(L=B)<=b)break;z=Math.max(1,2*b-L)}}if(R(t,{errors:F+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;A=K}var U={isMatch:L>=0,score:Math.max(.001,C)};if(S){var V=N(_,d);V.length?g&&(U.indices=V):U.isMatch=!1}return U}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:l}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(f(d),f(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),z=function(){function e(t){r(this,e),this.pattern=t}return o(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return D(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return D(e,this.singleRegex)}}]),e}();function D(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),n}(z),q=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),n}(z),B=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),n}(z),J=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),n}(z),U=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),n}(z),V=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),n}(z),G=function(e){a(n,e);var t=l(n);function n(e){var i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?I.location:c,s=o.threshold,u=void 0===s?I.threshold:s,h=o.distance,l=void 0===h?I.distance:h,f=o.includeMatches,d=void 0===f?I.includeMatches:f,v=o.findAllMatches,g=void 0===v?I.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?I.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?I.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?I.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new T(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(z),H=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(z),Q=[K,H,B,J,V,U,q,G],X=Q.length,Y=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Y).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?I.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?I.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?I.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?I.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?I.findAllMatches:f,v=n.location,g=void 0===v?I.location:v,y=n.threshold,p=void 0===y?I.threshold:y,m=n.distance,k=void 0===m?I.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=Z(this.pattern,this.options)}return o(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function ve(e,t){t.score=e.score}function ge(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?I.includeMatches:r,o=n.includeScore,c=void 0===o?I.includeScore:o,a=[];return i&&a.push(de),c&&a.push(ve),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ye=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},I),i),this.options.useExtendedSearch,this._keyStore=new S(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof $))throw new Error("Incorrect 'index' type");this._myIndex=t||F(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){k(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return fe(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),ge(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=re(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n,i=function e(n){var i=Object.keys(n),o=ue(n);if(!o&&i.length>1&&!se(n))return e(le(n));if(he(n)){var c=o?n[ce]:i[0],a=o?n[ae]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return r&&(s.searcher=re(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return se(e)||(e=le(e)),i(e)}(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?I.getFn:n,i=t.fieldNormWeight,o=void 0===i?I.fieldNormWeight:i,c=e.keys,a=e.records,s=new $({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ye.config=I,function(){ne.push.apply(ne,arguments)}(te),ye},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/_site/site_libs/quarto-search/quarto-search.js b/_site/site_libs/quarto-search/quarto-search.js deleted file mode 100644 index d788a95..0000000 --- a/_site/site_libs/quarto-search/quarto-search.js +++ /dev/null @@ -1,1290 +0,0 @@ -const kQueryArg = "q"; -const kResultsArg = "show-results"; - -// If items don't provide a URL, then both the navigator and the onSelect -// function aren't called (and therefore, the default implementation is used) -// -// We're using this sentinel URL to signal to those handlers that this -// item is a more item (along with the type) and can be handled appropriately -const kItemTypeMoreHref = "0767FDFD-0422-4E5A-BC8A-3BE11E5BBA05"; - -window.document.addEventListener("DOMContentLoaded", function (_event) { - // Ensure that search is available on this page. If it isn't, - // should return early and not do anything - var searchEl = window.document.getElementById("quarto-search"); - if (!searchEl) return; - - const { autocomplete } = window["@algolia/autocomplete-js"]; - - let quartoSearchOptions = {}; - let language = {}; - const searchOptionEl = window.document.getElementById( - "quarto-search-options" - ); - if (searchOptionEl) { - const jsonStr = searchOptionEl.textContent; - quartoSearchOptions = JSON.parse(jsonStr); - language = quartoSearchOptions.language; - } - - // note the search mode - if (quartoSearchOptions.type === "overlay") { - searchEl.classList.add("type-overlay"); - } else { - searchEl.classList.add("type-textbox"); - } - - // Used to determine highlighting behavior for this page - // A `q` query param is expected when the user follows a search - // to this page - const currentUrl = new URL(window.location); - const query = currentUrl.searchParams.get(kQueryArg); - const showSearchResults = currentUrl.searchParams.get(kResultsArg); - const mainEl = window.document.querySelector("main"); - - // highlight matches on the page - if (query && mainEl) { - // perform any highlighting - highlight(escapeRegExp(query), mainEl); - - // fix up the URL to remove the q query param - const replacementUrl = new URL(window.location); - replacementUrl.searchParams.delete(kQueryArg); - window.history.replaceState({}, "", replacementUrl); - } - - // function to clear highlighting on the page when the search query changes - // (e.g. if the user edits the query or clears it) - let highlighting = true; - const resetHighlighting = (searchTerm) => { - if (mainEl && highlighting && query && searchTerm !== query) { - clearHighlight(query, mainEl); - highlighting = false; - } - }; - - // Clear search highlighting when the user scrolls sufficiently - const resetFn = () => { - resetHighlighting(""); - window.removeEventListener("quarto-hrChanged", resetFn); - window.removeEventListener("quarto-sectionChanged", resetFn); - }; - - // Register this event after the initial scrolling and settling of events - // on the page - window.addEventListener("quarto-hrChanged", resetFn); - window.addEventListener("quarto-sectionChanged", resetFn); - - // Responsively switch to overlay mode if the search is present on the navbar - // Note that switching the sidebar to overlay mode requires more coordinate (not just - // the media query since we generate different HTML for sidebar overlays than we do - // for sidebar input UI) - const detachedMediaQuery = - quartoSearchOptions.type === "overlay" ? "all" : "(max-width: 991px)"; - - // If configured, include the analytics client to send insights - const plugins = configurePlugins(quartoSearchOptions); - - let lastState = null; - const { setIsOpen, setQuery, setCollections } = autocomplete({ - container: searchEl, - detachedMediaQuery: detachedMediaQuery, - defaultActiveItemId: 0, - panelContainer: "#quarto-search-results", - panelPlacement: quartoSearchOptions["panel-placement"], - debug: false, - openOnFocus: true, - plugins, - classNames: { - form: "d-flex", - }, - placeholder: language["search-text-placeholder"], - translations: { - clearButtonTitle: language["search-clear-button-title"], - detachedCancelButtonText: language["search-detached-cancel-button-title"], - submitButtonTitle: language["search-submit-button-title"], - }, - initialState: { - query, - }, - getItemUrl({ item }) { - return item.href; - }, - onStateChange({ state }) { - // If this is a file URL, note that - - // Perhaps reset highlighting - resetHighlighting(state.query); - - // If the panel just opened, ensure the panel is positioned properly - if (state.isOpen) { - if (lastState && !lastState.isOpen) { - setTimeout(() => { - positionPanel(quartoSearchOptions["panel-placement"]); - }, 150); - } - } - - // Perhaps show the copy link - showCopyLink(state.query, quartoSearchOptions); - - lastState = state; - }, - reshape({ sources, state }) { - return sources.map((source) => { - try { - const items = source.getItems(); - - // Validate the items - validateItems(items); - - // group the items by document - const groupedItems = new Map(); - items.forEach((item) => { - const hrefParts = item.href.split("#"); - const baseHref = hrefParts[0]; - const isDocumentItem = hrefParts.length === 1; - - const items = groupedItems.get(baseHref); - if (!items) { - groupedItems.set(baseHref, [item]); - } else { - // If the href for this item matches the document - // exactly, place this item first as it is the item that represents - // the document itself - if (isDocumentItem) { - items.unshift(item); - } else { - items.push(item); - } - groupedItems.set(baseHref, items); - } - }); - - const reshapedItems = []; - let count = 1; - for (const [_key, value] of groupedItems) { - const firstItem = value[0]; - reshapedItems.push({ - ...firstItem, - type: kItemTypeDoc, - }); - - const collapseMatches = quartoSearchOptions["collapse-after"]; - const collapseCount = - typeof collapseMatches === "number" ? collapseMatches : 1; - - if (value.length > 1) { - const target = `search-more-${count}`; - const isExpanded = - state.context.expanded && - state.context.expanded.includes(target); - - const remainingCount = value.length - collapseCount; - - for (let i = 1; i < value.length; i++) { - if (collapseMatches && i === collapseCount) { - reshapedItems.push({ - target, - title: isExpanded - ? language["search-hide-matches-text"] - : remainingCount === 1 - ? `${remainingCount} ${language["search-more-match-text"]}` - : `${remainingCount} ${language["search-more-matches-text"]}`, - type: kItemTypeMore, - href: kItemTypeMoreHref, - }); - } - - if (isExpanded || !collapseMatches || i < collapseCount) { - reshapedItems.push({ - ...value[i], - type: kItemTypeItem, - target, - }); - } - } - } - count += 1; - } - - return { - ...source, - getItems() { - return reshapedItems; - }, - }; - } catch (error) { - // Some form of error occurred - return { - ...source, - getItems() { - return [ - { - title: error.name || "An Error Occurred While Searching", - text: - error.message || - "An unknown error occurred while attempting to perform the requested search.", - type: kItemTypeError, - }, - ]; - }, - }; - } - }); - }, - navigator: { - navigate({ itemUrl }) { - if (itemUrl !== offsetURL(kItemTypeMoreHref)) { - window.location.assign(itemUrl); - } - }, - navigateNewTab({ itemUrl }) { - if (itemUrl !== offsetURL(kItemTypeMoreHref)) { - const windowReference = window.open(itemUrl, "_blank", "noopener"); - if (windowReference) { - windowReference.focus(); - } - } - }, - navigateNewWindow({ itemUrl }) { - if (itemUrl !== offsetURL(kItemTypeMoreHref)) { - window.open(itemUrl, "_blank", "noopener"); - } - }, - }, - getSources({ state, setContext, setActiveItemId, refresh }) { - return [ - { - sourceId: "documents", - getItemUrl({ item }) { - if (item.href) { - return offsetURL(item.href); - } else { - return undefined; - } - }, - onSelect({ - item, - state, - setContext, - setIsOpen, - setActiveItemId, - refresh, - }) { - if (item.type === kItemTypeMore) { - toggleExpanded(item, state, setContext, setActiveItemId, refresh); - - // Toggle more - setIsOpen(true); - } - }, - getItems({ query }) { - if (query === null || query === "") { - return []; - } - - const limit = quartoSearchOptions.limit; - if (quartoSearchOptions.algolia) { - return algoliaSearch(query, limit, quartoSearchOptions.algolia); - } else { - // Fuse search options - const fuseSearchOptions = { - isCaseSensitive: false, - shouldSort: true, - minMatchCharLength: 2, - limit: limit, - }; - - return readSearchData().then(function (fuse) { - return fuseSearch(query, fuse, fuseSearchOptions); - }); - } - }, - templates: { - noResults({ createElement }) { - const hasQuery = lastState.query; - - return createElement( - "div", - { - class: `quarto-search-no-results${ - hasQuery ? "" : " no-query" - }`, - }, - language["search-no-results-text"] - ); - }, - header({ items, createElement }) { - // count the documents - const count = items.filter((item) => { - return item.type === kItemTypeDoc; - }).length; - - if (count > 0) { - return createElement( - "div", - { class: "search-result-header" }, - `${count} ${language["search-matching-documents-text"]}` - ); - } else { - return createElement( - "div", - { class: "search-result-header-no-results" }, - `` - ); - } - }, - footer({ _items, createElement }) { - if ( - quartoSearchOptions.algolia && - quartoSearchOptions.algolia["show-logo"] - ) { - const libDir = quartoSearchOptions.algolia["libDir"]; - const logo = createElement("img", { - src: offsetURL( - `${libDir}/quarto-search/search-by-algolia.svg` - ), - class: "algolia-search-logo", - }); - return createElement( - "a", - { href: "http://www.algolia.com/" }, - logo - ); - } - }, - - item({ item, createElement }) { - return renderItem( - item, - createElement, - state, - setActiveItemId, - setContext, - refresh, - quartoSearchOptions - ); - }, - }, - }, - ]; - }, - }); - - window.quartoOpenSearch = () => { - setIsOpen(false); - setIsOpen(true); - focusSearchInput(); - }; - - document.addEventListener("keyup", (event) => { - const { key } = event; - const kbds = quartoSearchOptions["keyboard-shortcut"]; - const focusedEl = document.activeElement; - - const isFormElFocused = [ - "input", - "select", - "textarea", - "button", - "option", - ].find((tag) => { - return focusedEl.tagName.toLowerCase() === tag; - }); - - if ( - kbds && - kbds.includes(key) && - !isFormElFocused && - !document.activeElement.isContentEditable - ) { - event.preventDefault(); - window.quartoOpenSearch(); - } - }); - - // Remove the labeleledby attribute since it is pointing - // to a non-existent label - if (quartoSearchOptions.type === "overlay") { - const inputEl = window.document.querySelector( - "#quarto-search .aa-Autocomplete" - ); - if (inputEl) { - inputEl.removeAttribute("aria-labelledby"); - } - } - - function throttle(func, wait) { - let waiting = false; - return function () { - if (!waiting) { - func.apply(this, arguments); - waiting = true; - setTimeout(function () { - waiting = false; - }, wait); - } - }; - } - - // If the main document scrolls dismiss the search results - // (otherwise, since they're floating in the document they can scroll with the document) - window.document.body.onscroll = throttle(() => { - // Only do this if we're not detached - // Bug #7117 - // This will happen when the keyboard is shown on ios (resulting in a scroll) - // which then closed the search UI - if (!window.matchMedia(detachedMediaQuery).matches) { - setIsOpen(false); - } - }, 50); - - if (showSearchResults) { - setIsOpen(true); - focusSearchInput(); - } -}); - -function configurePlugins(quartoSearchOptions) { - const autocompletePlugins = []; - const algoliaOptions = quartoSearchOptions.algolia; - if ( - algoliaOptions && - algoliaOptions["analytics-events"] && - algoliaOptions["search-only-api-key"] && - algoliaOptions["application-id"] - ) { - const apiKey = algoliaOptions["search-only-api-key"]; - const appId = algoliaOptions["application-id"]; - - // Aloglia insights may not be loaded because they require cookie consent - // Use deferred loading so events will start being recorded when/if consent - // is granted. - const algoliaInsightsDeferredPlugin = deferredLoadPlugin(() => { - if ( - window.aa && - window["@algolia/autocomplete-plugin-algolia-insights"] - ) { - window.aa("init", { - appId, - apiKey, - useCookie: true, - }); - - const { createAlgoliaInsightsPlugin } = - window["@algolia/autocomplete-plugin-algolia-insights"]; - // Register the insights client - const algoliaInsightsPlugin = createAlgoliaInsightsPlugin({ - insightsClient: window.aa, - onItemsChange({ insights, insightsEvents }) { - const events = insightsEvents.flatMap((event) => { - // This API limits the number of items per event to 20 - const chunkSize = 20; - const itemChunks = []; - const eventItems = event.items; - for (let i = 0; i < eventItems.length; i += chunkSize) { - itemChunks.push(eventItems.slice(i, i + chunkSize)); - } - // Split the items into multiple events that can be sent - const events = itemChunks.map((items) => { - return { - ...event, - items, - }; - }); - return events; - }); - - for (const event of events) { - insights.viewedObjectIDs(event); - } - }, - }); - return algoliaInsightsPlugin; - } - }); - - // Add the plugin - autocompletePlugins.push(algoliaInsightsDeferredPlugin); - return autocompletePlugins; - } -} - -// For plugins that may not load immediately, create a wrapper -// plugin and forward events and plugin data once the plugin -// is initialized. This is useful for cases like cookie consent -// which may prevent the analytics insights event plugin from initializing -// immediately. -function deferredLoadPlugin(createPlugin) { - let plugin = undefined; - let subscribeObj = undefined; - const wrappedPlugin = () => { - if (!plugin && subscribeObj) { - plugin = createPlugin(); - if (plugin && plugin.subscribe) { - plugin.subscribe(subscribeObj); - } - } - return plugin; - }; - - return { - subscribe: (obj) => { - subscribeObj = obj; - }, - onStateChange: (obj) => { - const plugin = wrappedPlugin(); - if (plugin && plugin.onStateChange) { - plugin.onStateChange(obj); - } - }, - onSubmit: (obj) => { - const plugin = wrappedPlugin(); - if (plugin && plugin.onSubmit) { - plugin.onSubmit(obj); - } - }, - onReset: (obj) => { - const plugin = wrappedPlugin(); - if (plugin && plugin.onReset) { - plugin.onReset(obj); - } - }, - getSources: (obj) => { - const plugin = wrappedPlugin(); - if (plugin && plugin.getSources) { - return plugin.getSources(obj); - } else { - return Promise.resolve([]); - } - }, - data: (obj) => { - const plugin = wrappedPlugin(); - if (plugin && plugin.data) { - plugin.data(obj); - } - }, - }; -} - -function validateItems(items) { - // Validate the first item - if (items.length > 0) { - const item = items[0]; - const missingFields = []; - if (item.href == undefined) { - missingFields.push("href"); - } - if (!item.title == undefined) { - missingFields.push("title"); - } - if (!item.text == undefined) { - missingFields.push("text"); - } - - if (missingFields.length === 1) { - throw { - name: `Error: Search index is missing the ${missingFields[0]} field.`, - message: `The items being returned for this search do not include all the required fields. Please ensure that your index items include the ${missingFields[0]} field or use index-fields in your _quarto.yml file to specify the field names.`, - }; - } else if (missingFields.length > 1) { - const missingFieldList = missingFields - .map((field) => { - return `${field}`; - }) - .join(", "); - - throw { - name: `Error: Search index is missing the following fields: ${missingFieldList}.`, - message: `The items being returned for this search do not include all the required fields. Please ensure that your index items includes the following fields: ${missingFieldList}, or use index-fields in your _quarto.yml file to specify the field names.`, - }; - } - } -} - -let lastQuery = null; -function showCopyLink(query, options) { - const language = options.language; - lastQuery = query; - // Insert share icon - const inputSuffixEl = window.document.body.querySelector( - ".aa-Form .aa-InputWrapperSuffix" - ); - - if (inputSuffixEl) { - let copyButtonEl = window.document.body.querySelector( - ".aa-Form .aa-InputWrapperSuffix .aa-CopyButton" - ); - - if (copyButtonEl === null) { - copyButtonEl = window.document.createElement("button"); - copyButtonEl.setAttribute("class", "aa-CopyButton"); - copyButtonEl.setAttribute("type", "button"); - copyButtonEl.setAttribute("title", language["search-copy-link-title"]); - copyButtonEl.onmousedown = (e) => { - e.preventDefault(); - e.stopPropagation(); - }; - - const linkIcon = "bi-clipboard"; - const checkIcon = "bi-check2"; - - const shareIconEl = window.document.createElement("i"); - shareIconEl.setAttribute("class", `bi ${linkIcon}`); - copyButtonEl.appendChild(shareIconEl); - inputSuffixEl.prepend(copyButtonEl); - - const clipboard = new window.ClipboardJS(".aa-CopyButton", { - text: function (_trigger) { - const copyUrl = new URL(window.location); - copyUrl.searchParams.set(kQueryArg, lastQuery); - copyUrl.searchParams.set(kResultsArg, "1"); - return copyUrl.toString(); - }, - }); - clipboard.on("success", function (e) { - // Focus the input - - // button target - const button = e.trigger; - const icon = button.querySelector("i.bi"); - - // flash "checked" - icon.classList.add(checkIcon); - icon.classList.remove(linkIcon); - setTimeout(function () { - icon.classList.remove(checkIcon); - icon.classList.add(linkIcon); - }, 1000); - }); - } - - // If there is a query, show the link icon - if (copyButtonEl) { - if (lastQuery && options["copy-button"]) { - copyButtonEl.style.display = "flex"; - } else { - copyButtonEl.style.display = "none"; - } - } - } -} - -/* Search Index Handling */ -// create the index -var fuseIndex = undefined; -var shownWarning = false; - -// fuse index options -const kFuseIndexOptions = { - keys: [ - { name: "title", weight: 20 }, - { name: "section", weight: 20 }, - { name: "text", weight: 10 }, - ], - ignoreLocation: true, - threshold: 0.1, -}; - -async function readSearchData() { - // Initialize the search index on demand - if (fuseIndex === undefined) { - if (window.location.protocol === "file:" && !shownWarning) { - window.alert( - "Search requires JavaScript features disabled when running in file://... URLs. In order to use search, please run this document in a web server." - ); - shownWarning = true; - return; - } - const fuse = new window.Fuse([], kFuseIndexOptions); - - // fetch the main search.json - const response = await fetch(offsetURL("search.json")); - if (response.status == 200) { - return response.json().then(function (searchDocs) { - searchDocs.forEach(function (searchDoc) { - fuse.add(searchDoc); - }); - fuseIndex = fuse; - return fuseIndex; - }); - } else { - return Promise.reject( - new Error( - "Unexpected status from search index request: " + response.status - ) - ); - } - } - - return fuseIndex; -} - -function inputElement() { - return window.document.body.querySelector(".aa-Form .aa-Input"); -} - -function focusSearchInput() { - setTimeout(() => { - const inputEl = inputElement(); - if (inputEl) { - inputEl.focus(); - } - }, 50); -} - -/* Panels */ -const kItemTypeDoc = "document"; -const kItemTypeMore = "document-more"; -const kItemTypeItem = "document-item"; -const kItemTypeError = "error"; - -function renderItem( - item, - createElement, - state, - setActiveItemId, - setContext, - refresh, - quartoSearchOptions -) { - switch (item.type) { - case kItemTypeDoc: - return createDocumentCard( - createElement, - "file-richtext", - item.title, - item.section, - item.text, - item.href, - item.crumbs, - quartoSearchOptions - ); - case kItemTypeMore: - return createMoreCard( - createElement, - item, - state, - setActiveItemId, - setContext, - refresh - ); - case kItemTypeItem: - return createSectionCard( - createElement, - item.section, - item.text, - item.href - ); - case kItemTypeError: - return createErrorCard(createElement, item.title, item.text); - default: - return undefined; - } -} - -function createDocumentCard( - createElement, - icon, - title, - section, - text, - href, - crumbs, - quartoSearchOptions -) { - const iconEl = createElement("i", { - class: `bi bi-${icon} search-result-icon`, - }); - const titleEl = createElement("p", { class: "search-result-title" }, title); - const titleContents = [iconEl, titleEl]; - const showParent = quartoSearchOptions["show-item-context"]; - if (crumbs && showParent) { - let crumbsOut = undefined; - const crumbClz = ["search-result-crumbs"]; - if (showParent === "root") { - crumbsOut = crumbs.length > 1 ? crumbs[0] : undefined; - } else if (showParent === "parent") { - crumbsOut = crumbs.length > 1 ? crumbs[crumbs.length - 2] : undefined; - } else { - crumbsOut = crumbs.length > 1 ? crumbs.join(" > ") : undefined; - crumbClz.push("search-result-crumbs-wrap"); - } - - const crumbEl = createElement( - "p", - { class: crumbClz.join(" ") }, - crumbsOut - ); - titleContents.push(crumbEl); - } - - const titleContainerEl = createElement( - "div", - { class: "search-result-title-container" }, - titleContents - ); - - const textEls = []; - if (section) { - const sectionEl = createElement( - "p", - { class: "search-result-section" }, - section - ); - textEls.push(sectionEl); - } - const descEl = createElement("p", { - class: "search-result-text", - dangerouslySetInnerHTML: { - __html: text, - }, - }); - textEls.push(descEl); - - const textContainerEl = createElement( - "div", - { class: "search-result-text-container" }, - textEls - ); - - const containerEl = createElement( - "div", - { - class: "search-result-container", - }, - [titleContainerEl, textContainerEl] - ); - - const linkEl = createElement( - "a", - { - href: offsetURL(href), - class: "search-result-link", - }, - containerEl - ); - - const classes = ["search-result-doc", "search-item"]; - if (!section) { - classes.push("document-selectable"); - } - - return createElement( - "div", - { - class: classes.join(" "), - }, - linkEl - ); -} - -function createMoreCard( - createElement, - item, - state, - setActiveItemId, - setContext, - refresh -) { - const moreCardEl = createElement( - "div", - { - class: "search-result-more search-item", - onClick: (e) => { - // Handle expanding the sections by adding the expanded - // section to the list of expanded sections - toggleExpanded(item, state, setContext, setActiveItemId, refresh); - e.stopPropagation(); - }, - }, - item.title - ); - - return moreCardEl; -} - -function toggleExpanded(item, state, setContext, setActiveItemId, refresh) { - const expanded = state.context.expanded || []; - if (expanded.includes(item.target)) { - setContext({ - expanded: expanded.filter((target) => target !== item.target), - }); - } else { - setContext({ expanded: [...expanded, item.target] }); - } - - refresh(); - setActiveItemId(item.__autocomplete_id); -} - -function createSectionCard(createElement, section, text, href) { - const sectionEl = createSection(createElement, section, text, href); - return createElement( - "div", - { - class: "search-result-doc-section search-item", - }, - sectionEl - ); -} - -function createSection(createElement, title, text, href) { - const descEl = createElement("p", { - class: "search-result-text", - dangerouslySetInnerHTML: { - __html: text, - }, - }); - - const titleEl = createElement("p", { class: "search-result-section" }, title); - const linkEl = createElement( - "a", - { - href: offsetURL(href), - class: "search-result-link", - }, - [titleEl, descEl] - ); - return linkEl; -} - -function createErrorCard(createElement, title, text) { - const descEl = createElement("p", { - class: "search-error-text", - dangerouslySetInnerHTML: { - __html: text, - }, - }); - - const titleEl = createElement("p", { - class: "search-error-title", - dangerouslySetInnerHTML: { - __html: ` ${title}`, - }, - }); - const errorEl = createElement("div", { class: "search-error" }, [ - titleEl, - descEl, - ]); - return errorEl; -} - -function positionPanel(pos) { - const panelEl = window.document.querySelector( - "#quarto-search-results .aa-Panel" - ); - const inputEl = window.document.querySelector( - "#quarto-search .aa-Autocomplete" - ); - - if (panelEl && inputEl) { - panelEl.style.top = `${Math.round(panelEl.offsetTop)}px`; - if (pos === "start") { - panelEl.style.left = `${Math.round(inputEl.left)}px`; - } else { - panelEl.style.right = `${Math.round(inputEl.offsetRight)}px`; - } - } -} - -/* Highlighting */ -// highlighting functions -function highlightMatch(query, text) { - if (text) { - const start = text.toLowerCase().indexOf(query.toLowerCase()); - if (start !== -1) { - const startMark = ""; - const endMark = ""; - - const end = start + query.length; - text = - text.slice(0, start) + - startMark + - text.slice(start, end) + - endMark + - text.slice(end); - const startInfo = clipStart(text, start); - const endInfo = clipEnd( - text, - startInfo.position + startMark.length + endMark.length - ); - text = - startInfo.prefix + - text.slice(startInfo.position, endInfo.position) + - endInfo.suffix; - - return text; - } else { - return text; - } - } else { - return text; - } -} - -function clipStart(text, pos) { - const clipStart = pos - 50; - if (clipStart < 0) { - // This will just return the start of the string - return { - position: 0, - prefix: "", - }; - } else { - // We're clipping before the start of the string, walk backwards to the first space. - const spacePos = findSpace(text, pos, -1); - return { - position: spacePos.position, - prefix: "", - }; - } -} - -function clipEnd(text, pos) { - const clipEnd = pos + 200; - if (clipEnd > text.length) { - return { - position: text.length, - suffix: "", - }; - } else { - const spacePos = findSpace(text, clipEnd, 1); - return { - position: spacePos.position, - suffix: spacePos.clipped ? "…" : "", - }; - } -} - -function findSpace(text, start, step) { - let stepPos = start; - while (stepPos > -1 && stepPos < text.length) { - const char = text[stepPos]; - if (char === " " || char === "," || char === ":") { - return { - position: step === 1 ? stepPos : stepPos - step, - clipped: stepPos > 1 && stepPos < text.length, - }; - } - stepPos = stepPos + step; - } - - return { - position: stepPos - step, - clipped: false, - }; -} - -// removes highlighting as implemented by the mark tag -function clearHighlight(searchterm, el) { - const childNodes = el.childNodes; - for (let i = childNodes.length - 1; i >= 0; i--) { - const node = childNodes[i]; - if (node.nodeType === Node.ELEMENT_NODE) { - if ( - node.tagName === "MARK" && - node.innerText.toLowerCase() === searchterm.toLowerCase() - ) { - el.replaceChild(document.createTextNode(node.innerText), node); - } else { - clearHighlight(searchterm, node); - } - } - } -} - -function escapeRegExp(string) { - return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -} - -// highlight matches -function highlight(term, el) { - const termRegex = new RegExp(term, "ig"); - const childNodes = el.childNodes; - - // walk back to front avoid mutating elements in front of us - for (let i = childNodes.length - 1; i >= 0; i--) { - const node = childNodes[i]; - - if (node.nodeType === Node.TEXT_NODE) { - // Search text nodes for text to highlight - const text = node.nodeValue; - - let startIndex = 0; - let matchIndex = text.search(termRegex); - if (matchIndex > -1) { - const markFragment = document.createDocumentFragment(); - while (matchIndex > -1) { - const prefix = text.slice(startIndex, matchIndex); - markFragment.appendChild(document.createTextNode(prefix)); - - const mark = document.createElement("mark"); - mark.appendChild( - document.createTextNode( - text.slice(matchIndex, matchIndex + term.length) - ) - ); - markFragment.appendChild(mark); - - startIndex = matchIndex + term.length; - matchIndex = text.slice(startIndex).search(new RegExp(term, "ig")); - if (matchIndex > -1) { - matchIndex = startIndex + matchIndex; - } - } - if (startIndex < text.length) { - markFragment.appendChild( - document.createTextNode(text.slice(startIndex, text.length)) - ); - } - - el.replaceChild(markFragment, node); - } - } else if (node.nodeType === Node.ELEMENT_NODE) { - // recurse through elements - highlight(term, node); - } - } -} - -/* Link Handling */ -// get the offset from this page for a given site root relative url -function offsetURL(url) { - var offset = getMeta("quarto:offset"); - return offset ? offset + url : url; -} - -// read a meta tag value -function getMeta(metaName) { - var metas = window.document.getElementsByTagName("meta"); - for (let i = 0; i < metas.length; i++) { - if (metas[i].getAttribute("name") === metaName) { - return metas[i].getAttribute("content"); - } - } - return ""; -} - -function algoliaSearch(query, limit, algoliaOptions) { - const { getAlgoliaResults } = window["@algolia/autocomplete-preset-algolia"]; - - const applicationId = algoliaOptions["application-id"]; - const searchOnlyApiKey = algoliaOptions["search-only-api-key"]; - const indexName = algoliaOptions["index-name"]; - const indexFields = algoliaOptions["index-fields"]; - const searchClient = window.algoliasearch(applicationId, searchOnlyApiKey); - const searchParams = algoliaOptions["params"]; - const searchAnalytics = !!algoliaOptions["analytics-events"]; - - return getAlgoliaResults({ - searchClient, - queries: [ - { - indexName: indexName, - query, - params: { - hitsPerPage: limit, - clickAnalytics: searchAnalytics, - ...searchParams, - }, - }, - ], - transformResponse: (response) => { - if (!indexFields) { - return response.hits.map((hit) => { - return hit.map((item) => { - return { - ...item, - text: highlightMatch(query, item.text), - }; - }); - }); - } else { - const remappedHits = response.hits.map((hit) => { - return hit.map((item) => { - const newItem = { ...item }; - ["href", "section", "title", "text", "crumbs"].forEach( - (keyName) => { - const mappedName = indexFields[keyName]; - if ( - mappedName && - item[mappedName] !== undefined && - mappedName !== keyName - ) { - newItem[keyName] = item[mappedName]; - delete newItem[mappedName]; - } - } - ); - newItem.text = highlightMatch(query, newItem.text); - return newItem; - }); - }); - return remappedHits; - } - }, - }); -} - -let subSearchTerm = undefined; -let subSearchFuse = undefined; -const kFuseMaxWait = 125; - -async function fuseSearch(query, fuse, fuseOptions) { - let index = fuse; - // Fuse.js using the Bitap algorithm for text matching which runs in - // O(nm) time (no matter the structure of the text). In our case this - // means that long search terms mixed with large index gets very slow - // - // This injects a subIndex that will be used once the terms get long enough - // Usually making this subindex is cheap since there will typically be - // a subset of results matching the existing query - if (subSearchFuse !== undefined && query.startsWith(subSearchTerm)) { - // Use the existing subSearchFuse - index = subSearchFuse; - } else if (subSearchFuse !== undefined) { - // The term changed, discard the existing fuse - subSearchFuse = undefined; - subSearchTerm = undefined; - } - - // Search using the active fuse - const then = performance.now(); - const resultsRaw = await index.search(query, fuseOptions); - const now = performance.now(); - - const results = resultsRaw.map((result) => { - const addParam = (url, name, value) => { - const anchorParts = url.split("#"); - const baseUrl = anchorParts[0]; - const sep = baseUrl.search("\\?") > 0 ? "&" : "?"; - anchorParts[0] = baseUrl + sep + name + "=" + value; - return anchorParts.join("#"); - }; - - return { - title: result.item.title, - section: result.item.section, - href: addParam(result.item.href, kQueryArg, query), - text: highlightMatch(query, result.item.text), - crumbs: result.item.crumbs, - }; - }); - - // If we don't have a subfuse and the query is long enough, go ahead - // and create a subfuse to use for subsequent queries - if ( - now - then > kFuseMaxWait && - subSearchFuse === undefined && - resultsRaw.length < fuseOptions.limit - ) { - subSearchTerm = query; - subSearchFuse = new window.Fuse([], kFuseIndexOptions); - resultsRaw.forEach((rr) => { - subSearchFuse.add(rr.item); - }); - } - return results; -} diff --git a/_site/sitemap.xml b/_site/sitemap.xml deleted file mode 100644 index f7069a5..0000000 --- a/_site/sitemap.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - https://us-ghg-center.github.io/ghgc-docs/workflow.html - 2025-10-13T20:00:42.092Z - - - https://us-ghg-center.github.io/ghgc-docs/utility.html - 2025-10-13T20:00:42.091Z - - - https://us-ghg-center.github.io/ghgc-docs/index.html - 2025-10-28T15:17:26.068Z - - - https://us-ghg-center.github.io/ghgc-docs/datausage.html - 2025-10-13T20:00:41.852Z - - - https://us-ghg-center.github.io/ghgc-docs/AWS/AWS_SSO_Setup_Guide.html - 2025-11-03T17:12:20.726Z - - - https://us-ghg-center.github.io/ghgc-docs/AWS/aws-s3-commands-guide.html - 2025-10-14T21:30:28.209Z - - - https://us-ghg-center.github.io/ghgc-docs/AWS/aws-mfa-setup.html - 2025-10-20T20:46:39.255Z - - - https://us-ghg-center.github.io/ghgc-docs/aws.html - 2025-10-20T20:46:39.352Z - - - https://us-ghg-center.github.io/ghgc-docs/index2.html - 2025-10-16T17:44:29.155Z - - - https://us-ghg-center.github.io/ghgc-docs/git-github-comprehensive-guide.html - 2025-10-20T20:46:39.352Z - - - https://us-ghg-center.github.io/ghgc-docs/GitHub/veda-preview.html - 2025-10-16T16:33:07.045Z - - - https://us-ghg-center.github.io/ghgc-docs/Jupyterhub/setup-disaster-repo.html - 2025-10-16T17:06:40.654Z - - - https://us-ghg-center.github.io/ghgc-docs/Jupyterhub/jupyterhub-training-guide.html - 2025-10-20T22:17:08.579Z - - - https://us-ghg-center.github.io/ghgc-docs/GitHub/setup.html - 2025-10-16T19:24:59.132Z - - - https://us-ghg-center.github.io/ghgc-docs/GitHub/commands.html - 2025-10-16T19:24:56.754Z - - - https://us-ghg-center.github.io/ghgc-docs/GitHub/resources.html - 2025-10-16T19:19:35.862Z - - - https://us-ghg-center.github.io/ghgc-docs/Jupyterhub/simple_disaster_template.html - 2025-10-31T15:00:31.105Z - - - https://us-ghg-center.github.io/ghgc-docs/Jupyterhub/convert_to_geotiff.html - 2025-10-17T19:05:36.860Z - - - https://us-ghg-center.github.io/ghgc-docs/data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.html - 2025-10-13T20:00:41.798Z - - - https://us-ghg-center.github.io/ghgc-docs/data_workflow2/test.html - 2025-10-20T18:14:06.514Z - - - https://us-ghg-center.github.io/ghgc-docs/data_workflow2/NRT_directory_structure.html - 2025-10-28T15:17:26.067Z - - - https://us-ghg-center.github.io/ghgc-docs/data_workflow2/NRT_data_download.html - 2025-10-28T15:17:26.066Z - - - https://us-ghg-center.github.io/ghgc-docs/workflow2.html - 2025-10-28T15:17:26.069Z - - - https://us-ghg-center.github.io/ghgc-docs/jupyterhub.html - 2025-10-28T15:17:26.069Z - - - https://us-ghg-center.github.io/ghgc-docs/quarto-guide.html - 2025-10-20T22:29:29.102Z - - - https://us-ghg-center.github.io/ghgc-docs/Presentations/aws-grafana-tutorial.html - 2025-10-28T16:03:54.415Z - - - https://us-ghg-center.github.io/ghgc-docs/Presentations/disasters-powerpoint-template.html - 2025-10-28T16:00:57.872Z - - - https://us-ghg-center.github.io/ghgc-docs/Presentations/disasters-training-1.html - 2025-10-28T15:17:26.050Z - - - https://us-ghg-center.github.io/ghgc-docs/Presentations/jupyterhub-data-conversions-tutorial.html - 2025-11-03T13:50:57.347Z - - - https://us-ghg-center.github.io/ghgc-docs/AWS/AWS_SSO_Remote_Server.html - 2025-11-03T17:10:50.646Z - - - https://us-ghg-center.github.io/ghgc-docs/Presentations/stac-airflow-tutorial.html - 2025-11-10T23:00:42.855Z - - - https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/Texas_Flood_2025.html - 2025-11-13T16:18:40.012Z - - - https://us-ghg-center.github.io/ghgc-docs/user_data_notebooks/New_Mexico_Fire_2025.html - 2025-11-13T16:18:19.140Z - - diff --git a/_site/styles.css b/_site/styles.css deleted file mode 100644 index 38ebfe0..0000000 --- a/_site/styles.css +++ /dev/null @@ -1,45 +0,0 @@ -.sidebar-item { - margin: 10px; -} - - -/* Adjust height of the cell output in user notebooks*/ -.cell-output { - max-height: 500px; - overflow-y: auto; - overflow-x: auto; - background-color:#fefdfe; -} - - -/* Make sure logo sits above tools */ -.sidebar-logo-link { - display: block; - width: 100%; - margin-bottom: 10px; /* space between logo and tools */ -} - -/* Make tools stack below logo */ -.sidebar-tools-main { - display: block; - margin-top: 10px; /* optional extra spacing */ - text-align: center; /* center the icons under the logo */ -} - -/* Adjust logo size & centering */ -.sidebar-logo { - max-height: 200px !important; - width: auto !important; - display: block; - margin: 0 auto; -} - - - -/* .sidebar-item-text::before { - content: '>' -} */ - -.content { - padding: 0 48px 0 12px; -} diff --git a/_site/user_data_notebooks/New_Mexico_Fire_2025.html b/_site/user_data_notebooks/New_Mexico_Fire_2025.html deleted file mode 100644 index 74db906..0000000 --- a/_site/user_data_notebooks/New_Mexico_Fire_2025.html +++ /dev/null @@ -1,18948 +0,0 @@ - - - - - - - - - - - - -Analyzing the Effects of June 2025 New Mexico Wildfires – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Analyzing the Effects of June 2025 New Mexico Wildfires

-
- -
-
- NASA monitors wildfire activity and its impact on the landscape -
-
- - -
- -
-
Author
-
-

Ethan Kerr

-
-
- -
-
Published
-
-

November 11, 2025

-
-
- - -
- - - -
- - -

-πŸš€ Launch in Disasters-Hub JupyterHub (requires access) -

-

-To obtain credentials to VEDA Hub, follow this link for more information. -

-
-Disclaimer: it is highly recommended to run a tutorial within NASA VEDA JupyterHub, which already includes functions for processing and visualizing data specific to VEDA stories. Running the tutorial outside of the VEDA JupyterHub may lead to errors, specifically related to EarthData authentication. Additionally, it is recommended to use the Pangeo workspace within the VEDA JupyterHub, since certain packages relevant to this tutorial are already installed. -
-

-If you do not have a VEDA Jupyterhub Account you can launch this notebook on your local environment using MyBinder by clicking the icon below. -

-


Binder

-
-

Table of Contents

- -

NASA provided satellite imagery at the request of federal and state emergency management officials in response to the Trout Fire near Silver City, New Mexico, in late June 2025. Satellite images assist in search and rescue, evacuation planning, and understanding the scope and development of the fire as it was ongoing.

-

The Trout Fire was caused by a lightning strike, burned over 47,000 acres, prompted evacuations, and destroyed two homes.

-

In this notebook, we will explore Sentinel-2, Normalized Burn Ratio Difference (dNBR), and Opera Disturbance Alert datasets, and how they were used in this Disasters article to monitor the effects of wildfires.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for collections pertaining to the NM wildfire event
  2. -
  3. Pass the STAC item into raster API collection endpoint
  4. -
  5. We’ll visualize tiles for each of the times/dates of interest using folium
  6. -
  7. We will repeat this process for three different satellite products to show the data capabilities available.
  8. -
-
-
-

Terminology

-

Navigating data via the Disasters API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes - item: One granule in the dataset, e.g. one monthly file of methane inverse fluxes - asset: A variable available within the granule, e.g. microbial, fossil, or pyrogenic methane fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-
%pip install requests folium pystac_client branca matplotlib --quiet
-
-::: {#728bcdf2-f81c-4122-8808-cd46782153fa .cell execution_count=50}
-``` {.python .cell-code}
-#for querying
-import requests
-from pystac_client import Client
-#for mapping
-import folium
-import folium.plugins
-from folium.plugins import DualMap
-from folium import Map, TileLayer
-from branca.element import Template, MacroElement
-import branca.colormap as cm
-import matplotlib.cm as mpl_cm
-

:::

-
-
-

About the Data: Sentinel-2 True Color/Color IR

-

The True Color RGB composite provides a product of how the surface would look to the naked eye from space. The RGB is created using the red, green, and blue channels of the respective instrument.

-

The Color Infrared composite is created using the near-infrared, red, and green channels, allowing for the ability to see areas impacted by the fires. The near-infrared gives the ability to see through thin clouds. Healthy vegetation is shown as red, water is in blue.

-

These data will allow us to view the burn scar caused by the fire and compare it to the pre-fire landscape.

-
-
-

Query the STAC API for Sentinel-2

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://dev.openveda.cloud/api/stac"
-RASTER_API_URL = "https://dev.openveda.cloud/api/raster"
-
-# Declare collection of interest - sentinel-2 daily data
-collection_name = "sentinel-2-all-vars-daily"
-
-
-
# Fetch the collection from the STAC API
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-# Print the properties of the collection to the console
-collection
-
- - - -
-
- <CollectionClient id=sentinel-2-all-vars-daily> -
- -
-
-
-

By looking at the documentation for the Sentinel-2 imagery for this event we can see the range of dates that are of interest for this event.

-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']
-)
-items = search.item_collection()
-# Print how many items we found in our search
-print(f"# items found: {len(items)}")
-
-
# items found: 10
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items = search.item_collection()
-items[0]
-
- - - -
-
- <Item id=sentinel-2-2025-06-29> -
- -
-
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"][:10]: item for item in items}
-
-

Now we will look for the possible prodcuts to choose from under assets and make a variable to store the name.

-
-
asset_name = "colorIR" #or "trueColor"
-
-
-
-

Fetch Imagery from Raster API for Sentinel-2

-

There are several dates in dates for this event, but by trial-and-error we can find pre-fire and post-fire images over the Trout Fire.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2025-06-09", "2025-06-29"]
-
-
-
# Extract collection name and item ID for the first date
-observation_date_1 = items_dict[dates[0]]
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-# Select relevant asset (microbial CH4 emissions)
-object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': 0.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'uint8',
-  'histogram': {'max': 255.0,
-   'min': 31.0,
-   'count': 11,
-   'buckets': [1167,
-    2047,
-    1637,
-    1983,
-    26820,
-    174344,
-    172968,
-    101871,
-    30539,
-    17116]},
-  'statistics': {'mean': 174.80425718012714,
-   'stddev': 27.317252333798095,
-   'maximum': 255,
-   'minimum': 31,
-   'valid_percent': 87.95561863327674}},
- {'scale': 1.0,
-  'nodata': 0.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'uint8',
-  'histogram': {'max': 255.0,
-   'min': 30.0,
-   'count': 11,
-   'buckets': [2540,
-    6060,
-    54441,
-    96029,
-    140881,
-    130869,
-    73605,
-    13715,
-    2127,
-    10225]},
-  'statistics': {'mean': 137.3293169359764,
-   'stddev': 33.809314113255354,
-   'maximum': 255,
-   'minimum': 30,
-   'valid_percent': 87.95561863327674}},
- {'scale': 1.0,
-  'nodata': 0.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'uint8',
-  'histogram': {'max': 255.0,
-   'min': 30.0,
-   'count': 11,
-   'buckets': [2777,
-    11381,
-    131473,
-    208710,
-    147941,
-    13304,
-    2085,
-    1347,
-    1396,
-    10078]},
-  'statistics': {'mean': 112.29378576868265,
-   'stddev': 28.289548883427734,
-   'maximum': 255,
-   'minimum': 30,
-   'valid_percent': 87.95561863327674}}]
-
-
-
-
observation_date_1
-
- - - -
-
- <Item id=sentinel-2-2025-06-09> -
- -
-
-
-
-
# Make a GET request to retrieve information for your first date/time
-tile_pre = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={asset_name}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile_pre
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-09/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-108.87342891912581,
-  32.37731504449202,
-  -106.97869343172056,
-  33.46711546874811],
- 'center': [-107.92606117542319, 32.92221525662006, 0]}
-
-
-
-
# Repeat the above for your second date/time
-observation_date_2 = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-
-# Make a GET request to retrieve information for your second date/time
-tile_post = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={asset_name}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile_post
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://dev.openveda.cloud/api/raster/collections/sentinel-2-all-vars-daily/items/sentinel-2-2025-06-29/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=colorIR'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-108.87342828381848,
-  32.37738839044249,
-  -106.97877645825533,
-  33.46711546874811],
- 'center': [-107.9261023710369, 32.922251929595305, 0]}
-
-
-

We will then use the tile URL prepared above to create a simple visualization for both time steps using folium. In the visualization you can zoom in and out of the map’s focus area and compare the burn scar to the pre-fire image side-by-side.

-
-
-

Generate Map for Sentinel-2

-

We will use the folium package to generate visualizations. folium allows the user to zoom in to see the high-resolution detail of the imagery. The following code block will plot both of our data onto a dual map and fit a title.

-
-
# Set initial zoom and map for Trout Fire
-m = folium.plugins.DualMap(location=(32.97, -108.15), zoom_start=11)
-
-# June 9 2025
-map_layer_pre = TileLayer(
-    tiles=tile_pre["tiles"][0],
-    attr="VEDA",
-    opacity=0.8,
-)
-map_layer_pre.add_to(m.m1)
-
-# June 29 2025
-map_layer_post = TileLayer(
-    tiles=tile_post["tiles"][0],
-    attr="VEDA",
-    opacity=0.8,
-)
-map_layer_post.add_to(m.m2)
-
-# Properly styled title overlay for DualMap
-title_html = f'''
-<div style="
-position: fixed; 
-top: 75px; left: 0; width: 100%;
-text-align: center;
-font-size: 20px;
-font-weight: bold;
-background-color: rgba(255, 255, 255, 0.7);
-padding: 5px;
-z-index: 9999;
-">
-Sentinel-2 Imagery Pre Fire ({dates[0]}) and Post Fire ({dates[1]})
-</div>
-'''
-
-m.get_root().html.add_child(folium.Element(title_html))
-m
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Following the same process, we will review visualizing imagery from two more STAC collections. First, we will explore dNBR.

-
-
-

About the Data: Normalized Burn Ratio Difference (dNBR)

-

NBR is defined mathematically as (NIR – SWIR)/(NIR + SWIR) where NIR is near-infrared and SWIR is short-wave infrared. dNBR is computed by the difference between the pre-fire NBR and the post-fire NBR. NBR is commonly used as a proxy to indicate areas which have charred vegetation. Darker areas (more negative values) in the NBR image more strongly represent the presence of burned vegetation. Since the dNBR considers the condition of the scene before the fire occurred, the resulting value has been used as a proxy for burn severity. Higher dNBR values represent a proxy for greater burn severity. Negative dNBR values may represent a re-greening of or growth of vegetation in between pre and post imagery.

-

More information on dNBR can be found here: https://un-spider.org/advisory-support/recommended-practices/recommended-practice-burn-severity/in-detail/normalized-burn-ratio.

-

dNBR data may be computed while the fire is in progress. This is intentionally done to prioritize rapid data availability for proactive disaster response but means data can change over the course of the fire.

-

dNBR is produced by NASA’s Observational Products for End-Users from Remote Sensing Analysis (OPERA) program, which generates surface products derived from satellite data. Therefore, dNBR data will be found in an opera collection.

-
-
-

Query the STAC API for dNBR

-
-
# Fetch STAC collection
-collection_name_opera_subdaily = "opera-all-vars-subdaily"
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name_opera_subdaily)
-# Print the properties of the collection to the console
-collection
-
- - - -
-
- <CollectionClient id=opera-all-vars-subdaily> -
- -
-
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name_opera_subdaily,
-    datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']
-)
-items = search.item_collection()
-# Print how many items we found in our search
-print(f"# items found: {len(items)}")
-
-
# items found: 2
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items = search.item_collection()
-items[0]
-
- - - -
-
- <Item id=opera-2025-06-22T17:45:00> -
- -
-
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"][:10]: item for item in items}
-
-
-
asset_name = "dnbr"
-
-
-
-

Fetch Imagery from Raster API for dNBR

-

I will choose one of the two dates in dates to visualize.

-
-
# Specify date that you would like to visualize, using the format of items_dict.keys()
-date = "2025-06-21"
-
-

This time, we will look at the rescale values of dNBR to adjust our colormap. dNBR ranges from values of -1 to 1, with more positive values indicating more severe burns.

-
-
# Extract collection name and item ID for the first date
-observation_date = items_dict[date]
-collection_id = observation_date.collection_id
-item_id = observation_date.id
-# Select relevant asset (microbial CH4 emissions)
-object = observation_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 0.9816958355058067,
-   'min': -0.1365383543458513,
-   'count': 11,
-   'buckets': [8923, 258816, 109761, 30963, 7436, 1582, 328, 53, 50, 19]},
-  'statistics': {'mean': 0.08097275888625194,
-   'stddev': 0.0855684493119729,
-   'maximum': 0.9816958355058067,
-   'minimum': -0.1365383543458513,
-   'valid_percent': 99.24179101642272}}]
-
-
-
-
#Generate an appropriate color bar range.
-rescale_values = {
-    "max": raster_bands[0]['statistics']['maximum'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 0.9816958355058067, 'min': -0.1365383543458513}
-
-
-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "inferno"
-
-
-
# Make a GET request to retrieve information for your first date/time
-observation_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-subdaily/items/opera-2025-06-21T18:05:00/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=dnbr&color_formula=gamma+r+1.05&colormap_name=inferno&rescale=-0.1365383543458513%2C0.9816958355058067'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-108.23813471556193,
-  32.87367428279499,
-  -108.01506342300563,
-  33.04157419951851],
- 'center': [-108.12659906928377, 32.95762424115675, 0]}
-
-
-
-
-

Generate Map for dNBR

-

We will use the folium package once again, but this time we also add code to generate a colorbar.

-
-
# --- Create the DualMap ---
-m = Map(
-    tiles="OpenStreetMap",
-    location=[
-        32.97,
-        -108.15,
-    ],
-    zoom_start=12,
-)
-
-map_layer = TileLayer(
-    tiles=observation_tile["tiles"][0],
-    attr="VEDA",
-    opacity=0.6,
-)
-
-map_layer.add_to(m)
-
-# --- Add title ---
-title_html = f'''
-<div style="
-position: fixed; 
-top: 75px; left: 0; width: 100%;
-text-align: center;
-font-size: 20px;
-font-weight: bold;
-background-color: rgba(255, 255, 255, 0.7);
-padding: 5px;
-z-index: 9999;
-">
-Burn Severity Map (dNBR) on {date}
-</div>
-'''
-m.get_root().html.add_child(folium.Element(title_html))
-
-# Get the matplotlib colormap (same as your API color_map)
-mpl_colormap = mpl_cm.get_cmap(color_map.lower())
-
-# Create a Branca LinearColormap using the same range
-colormap = cm.LinearColormap(
-    colors=[mpl_colormap(i) for i in range(mpl_colormap.N)],
-    vmin=rescale_values['min'],
-    vmax=rescale_values['max']
-)
-colormap.caption = "dNBR"
-
-# --- Use to_step() to get stable HTML ---
-colormap_step = colormap.to_step(n=50)
-colorbar_html = colormap_step._repr_html_()
-
-# --- Wrap and fix position (bottom-left) ---
-fixed_colorbar = f'''
-<div style="
-position: fixed;
-bottom: 30px;
-left: 30px;
-width: 220px;
-z-index: 9999;
-">
-{colorbar_html}
-</div>
-'''
-m.get_root().html.add_child(folium.Element(fixed_colorbar))
-
-m
-
-
/tmp/ipykernel_84/1287173695.py:37: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.
-  mpl_colormap = mpl_cm.get_cmap(color_map.lower())
-
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

About the Data: VEG-ANOM-MAX

-

Finally, we will explore changes in vegetation cover.

-

VEG-ANOM-MAX is derived from OPERA Disturbance Alert - Harmonized Landsat Sentinel-2 data. It measures the difference between historical and current year observed vegetation cover at the date of maximum decrease (vegetation loss of 0-100%). This layer can be used to threshold vegetation disturbance per a given sensitivity (e.g. disturbance of >=20% vegetation cover loss). The sum of the historical percent vegetation and the anomaly value will be the vegetation cover estimate for the current year.

-

The process for visualization will exactly follow prior examples.

-
-
-

Query the STAC API for Max Vegetation Anomoly

-
-
# Fetch the collection from the STAC API
-collection_name_opera_daily = "opera-all-vars-daily"
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name_opera_daily)
-# Print the properties of the collection to the console
-collection
-
- - - -
-
- <CollectionClient id=opera-all-vars-daily> -
- -
-
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name_opera_daily,
-    datetime=['2025-06-09T00:00:00Z','2025-06-29T00:00:00Z']
-)
-items = search.item_collection()
-# Print how many items we found in our search
-print(f"# items found: {len(items)}")
-
-
# items found: 4
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items = search.item_collection()
-items[0]
-
- - - -
-
- <Item id=opera-2025-06-28> -
- -
-
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"][:10]: item for item in items}
-
-

I will use the colormap under VEG-ANOM-MAX.

-
-
asset_name = "VEG-ANOM-MAX"
-
-
-
-

Fetch Imagery from Raster API for Max Vegetation Anomoly

-
-
date = "2025-06-24"
-
-
-
# Extract collection name and item ID for the first date
-observation_date= items_dict[date]
-collection_id = observation_date.collection_id
-item_id = observation_date.id
-# Select relevant asset (microbial CH4 emissions)
-object = observation_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': 0.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'uint8',
-  'histogram': {'max': 255.0,
-   'min': 10.0,
-   'count': 11,
-   'buckets': [3681, 653, 63, 3, 0, 0, 0, 0, 0, 55864]},
-  'statistics': {'mean': 238.1747477764503,
-   'stddev': 60.02815956239316,
-   'maximum': 255,
-   'minimum': 10,
-   'valid_percent': 5.792476624015748}}]
-
-
-
-
#Generate an appropriate color bar range.
-rescale_values = {
-    "max": raster_bands[0]['statistics']['maximum'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 255, 'min': 10}
-
-
-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "magma"
-
-

For this situation, I am hard-coding the maximum rescale to 100, because the values above 100 (255) are erroneous (no data) values.

-
-
# Make a GET request to retrieve information for your first date/time
-observation_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},100"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-daily/items/opera-2025-06-24/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=VEG-ANOM-MAX&color_formula=gamma+r+1.05&colormap_name=magma&rescale=10%2C100'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-108.97616786143968,
-  31.475062809632632,
-  -107.00321128236091,
-  33.46381942656848],
- 'center': [-107.9896895719003, 32.469441118100555, 0]}
-
-
-
-
params = {
-    "assets": "VEG-ANOM-MAX",
-    "rescale": "0,100",
-    "colormap_name": "ylorrd"
-}
-
-
-
tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_name_opera_daily}/items/{'opera-2025-06-24'}/WebMercatorQuad/tilejson.json?",
-    params=params,
-).json()
-tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://dev.openveda.cloud/api/raster/collections/opera-all-vars-daily/items/opera-2025-06-24/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=VEG-ANOM-MAX&rescale=0%2C100&colormap_name=ylorrd'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-108.97616786143968,
-  31.475062809632632,
-  -107.00321128236091,
-  33.46381942656848],
- 'center': [-107.9896895719003, 32.469441118100555, 0]}
-
-
-
-
-

Generate Map for Max Vegetation Anomoly

-

We will use the folium package once again with the same format at the dNBR visualization.

-
-
m = Map(
-    tiles="OpenStreetMap",
-    location=[
-        32.97,
-        -108.15,
-    ],
-    zoom_start=12,
-)
-
-map_layer = TileLayer(
-    tiles=observation_tile["tiles"][0],
-    attr="VEDA",
-    opacity=0.6,
-)
-
-map_layer.add_to(m)
-
-# --- Add title ---
-title_html = f'''
-<div style="
-position: fixed; 
-top: 75px; left: 0; width: 100%;
-text-align: center;
-font-size: 20px;
-font-weight: bold;
-background-color: rgba(255, 255, 255, 0.7);
-padding: 5px;
-z-index: 9999;
-">
-Maximum Loss of Vegetation {date}
-</div>
-'''
-m.get_root().html.add_child(folium.Element(title_html))
-
-# Get the matplotlib colormap (same as your API color_map)
-mpl_colormap = mpl_cm.get_cmap(color_map.lower())
-
-# Create a Branca LinearColormap using the same range
-colormap = cm.LinearColormap(
-    colors=[mpl_colormap(i) for i in range(mpl_colormap.N)],
-    vmin=rescale_values['min'],
-    vmax=rescale_values['max']
-)
-colormap.caption = "Vegetation Loss (%)"
-
-# --- Use to_step() to get stable HTML ---
-colormap_step = colormap.to_step(n=50)
-colorbar_html = colormap_step._repr_html_()
-
-# --- Wrap and fix position (bottom-left) ---
-fixed_colorbar = f'''
-<div style="
-position: fixed;
-bottom: 30px;
-left: 30px;
-width: 220px;
-z-index: 9999;
-">
-{colorbar_html}
-</div>
-'''
-m.get_root().html.add_child(folium.Element(fixed_colorbar))
-
-m
-
-
/tmp/ipykernel_84/2684050226.py:36: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed in 3.11. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap()`` or ``pyplot.get_cmap()`` instead.
-  mpl_colormap = mpl_cm.get_cmap(color_map.lower())
-
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Some of the areas with the most significant vegetation loss line up with the areas of peak dNBR. This is one of the utilties of these data: you can draw connections between different datasets.

-
-
-

Summary

-

In this case study we have successfully visualized how NASA monitors wildfires with several satellite products observing the June 2025 Trout Fire in New Mexico. We demonstrated how to query the STAC collections and raster API to gather satellite imagery of a disaster. Using three satellite products, we could see areas that were ongoing signifcant burning (dNBR), areas that lost significant vegetation (VEG-ANOM-MAX), and what the burn scar looked like (Sentinel-2 color IR and true color). Using the various products, we can analyze how the fire was evolving and how it impacted the area, and how things like the areas of burning related to the lost vegetation spatially.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/Texas_Flood_2025.html b/_site/user_data_notebooks/Texas_Flood_2025.html deleted file mode 100644 index ba81790..0000000 --- a/_site/user_data_notebooks/Texas_Flood_2025.html +++ /dev/null @@ -1,113388 +0,0 @@ - - - - - - - - - - - - - -The Texas Flooding of July 4, 2025 – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

The Texas Flooding of July 4, 2025

-
- -
-
- Analysis of the river flooding that occured along the Guadalupe River in Texas on July 4, 2025 using Sentinel-2 True Color and NDVI to visualize it. -
-
- - -
- -
-
Authors
-
-

Aaron Serre (UAH)

-

Kyle Lesinger (editor)

-
-
- -
-
Published
-
-

November 12, 2025

-
-
- - -
- - - -
- - -
-

Run This Notebook

-

-πŸš€ Launch in Disasters-Hub JupyterHub (requires access) -

-

-To obtain credentials to VEDA Hub, follow this link for more information. -

-
-Disclaimer: it is highly recommended to run a tutorial within NASA VEDA JupyterHub, which already includes functions for processing and visualizing data specific to VEDA stories. Running the tutorial outside of the VEDA JupyterHub may lead to errors, specifically related to EarthData authentication. Additionally, it is recommended to use the Pangeo workspace within the VEDA JupyterHub, since certain packages relevant to this tutorial are already installed. -
-

-If you do not have a VEDA Jupyterhub Account you can launch this notebook on your local environment using MyBinder by clicking the icon below. -

-


Binder

-
-

Table of Contents

- -
-
-
-

Approach

-

Identify available dates and temporal frequency of observations for a given collection - Sentinel-2 NDVI and True Color

-

Pass the STAC item into raster API collections endpoint

-

We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap

-
-
-

About the Data

-

Using NASA’s Sentinel-2 satelite provides a great way to to use high resolution data to analyze imagery through different methods. In this notebook, we will retrieve Truecolor and NDVI products from Sentinenel-2 to analyze the tragic Texas floods along the Guadalupe River on July 4, 2025.

-

True Color: This composite uses the Red, Green, and Blue bands (B4, B3, B2) to create a natural-looking image, primarily used for general mapping and visual inspection of the surface.

-

NDVI: This is a mathematical index calculated from the Near-Infrared and Red bands, used to quantify and monitor the greenness, health, and density of vegetation.

-
-

Terminology

-

SpatialTemporal Asset Catalog (STAC): This is a specification that standardizes metadata for geospatial assets such as satelite imagery so that they can be used for use.

-

Application Programming Interface (API): Protocals that is used to communicate between softwares and makes a request (for tiles in out case).

-

Collection: A set of STAC definied for a specific item (such as Sentinel-2-vars-daily in our case)

-

Tiles: A square fragment of a satellite image. Together they make an image, but we call up once specific one for this example since th area we are looking at is small.

-
-
-

Install the Required Libraires

-
-
#Import the following libraries:
-
-import requests
-from folium import Map, TileLayer
-import folium.plugins
-import folium
-from pystac_client import Client
-
-
-
-

Querying the STAC API

-
-
#Define the STAC and RASTER URL's and define the product
-STAC_API_URL = "https://dev.openveda.cloud/api/stac" 
-RASTER_API_URL = "https://dev.openveda.cloud/api/raster"
-collection_name = "sentinel-2-all-vars-daily"
-
-#For True Color:
-asset='trueColor'
-
-# Fetch the collection from the STAC API 
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - -
-
- <CollectionClient id=sentinel-2-all-vars-daily> -
- -
-
-
-
-
#For NDVI:
-# Using the NDVI asset with Magma colormap
-ASSET_NAME = "ndviChange"
-COLORMAP = "magma"
-RESCALE_VALUES = {"min": -1, "max": 1} 
-
-catalog = Client.open(STAC_API_URL)
-
-# Search for items (using the original wide search)
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2025-01-01T00:00:00Z', '2025-07-31T00:00:00Z']
-)
-items_dict = search.item_collection()
-
-
-item_post_id = items_dict[0].id
-print(f"Found {len(items_dict)} items. Using Post-Event Item ID: {item_post_id}")
-
-
Found 31 items. Using Post-Event Item ID: sentinel-2-2025-07-17
-
-
-

Now, we will extract the dates to find the correct date for the before/after of the Guadalupe River

-
-
collection.extra_fields["renders"][asset]
-items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2025-01-01T00:00:00Z','2025-07-31T00:00:00Z']
-)
-# Take a look at the items we found
-print(f"# items in date range: {len(search.item_collection())}")
-for item in search.item_collection():
-    print(item)
-
-[item for item in search.item_collection() if item.properties['datetime'] > '2025-01-08T00:00:00Z']
-
-items_dict = search.item_collection()
-items_dict
-
-
Found 45 items
-# items in date range: 31
-<Item id=sentinel-2-2025-07-17>
-<Item id=sentinel-2-2025-07-10>
-<Item id=sentinel-2-2025-07-08>
-<Item id=sentinel-2-2025-06-29>
-<Item id=sentinel-2-2025-06-28>
-<Item id=sentinel-2-2025-06-21>
-<Item id=sentinel-2-2025-06-20>
-<Item id=sentinel-2-2025-06-19>
-<Item id=sentinel-2-2025-06-18>
-<Item id=sentinel-2-2025-06-17>
-<Item id=sentinel-2-2025-06-14>
-<Item id=sentinel-2-2025-06-11>
-<Item id=sentinel-2-2025-06-09>
-<Item id=sentinel-2-2025-06-08>
-<Item id=sentinel-2-2025-04-09>
-<Item id=sentinel-2-2025-04-08>
-<Item id=sentinel-2-2025-04-07>
-<Item id=sentinel-2-2025-03-31>
-<Item id=sentinel-2-2025-03-22>
-<Item id=sentinel-2-2025-03-19>
-<Item id=sentinel-2-2025-03-18>
-<Item id=sentinel-2-2025-03-17>
-<Item id=sentinel-2-2025-03-13>
-<Item id=sentinel-2-2025-03-12>
-<Item id=sentinel-2-2025-03-10>
-<Item id=sentinel-2-2025-02-25>
-<Item id=sentinel-2-2025-02-23>
-<Item id=sentinel-2-2025-02-20>
-<Item id=sentinel-2-2025-02-17>
-<Item id=sentinel-2-2025-02-10>
-<Item id=sentinel-2-2025-01-12>
-
-
- - - -
-
- <pystac.item_collection.ItemCollection object at 0x7f9520a182f0> -
- -
-
-
-
-
-

Requesting Tiles

-

Here, we will request the tiles. Since we have retrieved the datetime items from the catalog, we will now identify the index 9 (June 17, 2025 - Before) and index 0 (July 17, 2025 - After). These are the dates before and after the event with a tile that covers the Guadalupe River.

-
-
#For True Color:
-
-
-#Before Flood
-dashboard_render_pre = collection.extra_fields["renders"][asset]
-assets_pre = dashboard_render_pre["assets"][0]
-((vmin_pre, vmax_pre),) = dashboard_render_pre["rescale"]
-bidx_pre = dashboard_render_pre.get("bidx", [1,2,3])
-
-response_pre = requests.get(
-    f"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}"
-    f"/items/{items_dict[9].id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={assets_pre}"
-    f"&bidx={bidx_pre[0]}&bidx={bidx_pre[1]}&bidx={bidx_pre[2]}"
-    f"&rescale={vmin_pre},{vmax_pre}"
-    f"&resampling=bilinear"
-)
-response_pre.raise_for_status()
-tiles_pre = response_pre.json()
-
-
-#After Flood
-dashboard_render_post = collection.extra_fields["renders"][asset]
-assets_post = dashboard_render_post["assets"][0]
-((vmin_post, vmax_post),) = dashboard_render_post["rescale"]
-bidx_post = dashboard_render_post.get("bidx", [1,2,3])
-
-response_post = requests.get(
-    f"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}"
-    f"/items/{items_dict[0].id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={assets_post}"
-    f"&bidx={bidx_post[0]}&bidx={bidx_post[1]}&bidx={bidx_post[2]}"
-    f"&rescale={vmin_post},{vmax_post}"
-    f"&resampling=bilinear"
-)
-response_post.raise_for_status()
-tiles_post = response_post.json()
-
-
-#NDVI:
-
-response_ndvi = requests.get(
-    f"{RASTER_API_URL.rstrip('/')}/collections/{collection_name}"
-    f"/items/{item_post_id}/WebMercatorQuad/tilejson.json?"
-    f"&assets={ASSET_NAME}"
-    f"&colormap_name={COLORMAP}"
-    f"&rescale={RESCALE_VALUES['min']},{RESCALE_VALUES['max']}"
-    f"&resampling=bilinear"
-)
-response_ndvi.raise_for_status()
-tiles_ndvi = response_ndvi.json()
-
-
-
-

Create Maps Using Folium

-

Now we are ready to plot the tiles on a map, using the follium package at Camp Mystic, one of the locations greatly affected by the flooding

-
-
#True Color Side by side
-
-m = folium.plugins.DualMap(
-    location=(30.005230182687843, -99.37260735373766), 
-    
-    zoom_start=16,
-    tiles="cartodbdarkmatter"
-)
-
-# LEFT MAP 
-TileLayer(
-    tiles=tiles_pre["tiles"][0],
-    attr="VEDA | Sentinel-2 | True Color",
-    overlay=True,
-
-).add_to(m.m1)
-
-# RIGHT MAP: 
-TileLayer(
-    tiles=tiles_post["tiles"][0],
-    attr="VEDA | Sentinel-2 | True Color",
-    overlay=True,
-).add_to(m.m2)
-
-
-
-folium.LayerControl().add_to(m.m1)
-folium.LayerControl().add_to(m.m2)
-
-
-m
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

If you look along the river, you can see that there is more dirt and sediment deposited along the river bank where the flooding occured the greatest.

-
-
#NDVI Map
-
-CENTER_LAT, CENTER_LON = 30.005230182687843, -99.37260735373766
-ZOOM_LEVEL = 16
-
-# Initialize a standard folium.Map
-m = Map(
-    location=(CENTER_LAT, CENTER_LON),
-    zoom_start=ZOOM_LEVEL,
-    tiles="cartodbdarkmatter"
-)
-
-# Add the Post-Event NDVI Layer
-TileLayer(
-    tiles=tiles_ndvi["tiles"][0],
-    attr=f"VEDA | Sentinel-2 | {ASSET_NAME.upper()} ({COLORMAP})",
-    name=f"Post-Event NDVI: {item_post_id}",
-    overlay=True,
-).add_to(m)
-
-folium.LayerControl().add_to(m)
-
-# Display the map
-m
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Here, purple represents damaged vegetation. You can see the dark purples right along the river. However, you can also see a light purple shading along the banks of the some of the creeks that feed off of the Guadalupe River. This is the damage that was done to the vegetation as a result of the flooding.

-
-
-
-

Summary

-

We have successfully visualized how NASA’s Sentinel-2 can view the 2025 Texas flooding using satelite data from Sentinel-2 in this notebook. We have installed the proper libraries, query the STAC API, request tiles to be used, and map the tiles using the follium package. Products such as NDVI and True Color help us observe and analyze disasters to better understand their impacts.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html b/_site/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html deleted file mode 100644 index c63a8df..0000000 --- a/_site/user_data_notebooks/casagfed-carbonflux-monthgrid-v3_User_Notebook.html +++ /dev/null @@ -1,9409 +0,0 @@ - - - - - - - - - - -CASA-GFED3 Land Carbon Flux – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

CASA-GFED3 Land Carbon Flux

-
- -
-
- Global, monthly 0.5 degree resolution Net Primary Production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL) derived from the (CASA-GFED3) model, version 3 -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- - - -
- - - -
- - -
-

Run this notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below.

-

Launch in the US GHG Center JupyterHub (requires access)

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for a given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Land-Atmosphere Carbon Flux data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. -
  7. After the visualization, perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

CASA-GFED3

-

This dataset presents a variety of carbon flux parameters derived from the Carnegie-Ames-Stanford-Approach – Global Fire Emissions Database version 3 (CASA-GFED3) model. The model’s input data includes air temperature, precipitation, incident solar radiation, a soil classification map, and a number of satellite derived products. All model calculations are driven by analyzed meteorological data from NASA’s Modern-Era Retrospective analysis for Research and Application, Version 2 (MERRA-2). The resulting product provides monthly, global data at 0.5 degree resolution from January 2003 through December 2017. It includes the following carbon flux variables expressed in units of kilograms of carbon per square meter per month (kg Carbon mΒ²/mon) from the following sources: net primary production (NPP), net ecosystem exchange (NEE), heterotrophic respiration (Rh), wildfire emissions (FIRE), and fuel wood burning emissions (FUEL). This product and earlier versions of MERRA-driven CASA-GFED carbon fluxes have been used in a number of atmospheric COβ‚‚ transport studies, and through the support of NASA’s Carbon Monitoring System (CMS), it helps characterize, quantify, understand and predict the evolution of global carbon sources and sinks.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes - item: One granule in the dataset, e.g. one monthly file of methane inverse fluxes - asset: A variable available within the granule, e.g. microbial, fossil, or pyrogenic methane fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Installing the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests, folium, rasterstats, pystac_client, pandas, matplotlib

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the CASA-GFED Land-Atmosphere Carbon Flux dataset is casagfed-carbonflux-monthgrid-v3.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Name of the collection for CASA GFED Land-Atmosphere Carbon Flux monthly emissions. 
-collection_name = "casagfed-carbonflux-monthgrid-v3"
-
-
-
catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-collection
-
- - - - -
-
-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 180 items
-
-
-
-
search = catalog.search(
-    collections=collection_name,
-    datetime=['2010-01-01T00:00:00Z','2010-12-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-   
-
-
<Item id=casagfed-carbonflux-monthgrid-v3-201012>
-<Item id=casagfed-carbonflux-monthgrid-v3-201011>
-<Item id=casagfed-carbonflux-monthgrid-v3-201010>
-<Item id=casagfed-carbonflux-monthgrid-v3-201009>
-<Item id=casagfed-carbonflux-monthgrid-v3-201008>
-<Item id=casagfed-carbonflux-monthgrid-v3-201007>
-<Item id=casagfed-carbonflux-monthgrid-v3-201006>
-<Item id=casagfed-carbonflux-monthgrid-v3-201005>
-<Item id=casagfed-carbonflux-monthgrid-v3-201004>
-<Item id=casagfed-carbonflux-monthgrid-v3-201003>
-<Item id=casagfed-carbonflux-monthgrid-v3-201002>
-<Item id=casagfed-carbonflux-monthgrid-v3-201001>
-
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2003 to December 2017. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is monthly.

-
-
# Examine the first item in the collection
-items[0]
-
- - - - -
-
-
-
# Restructure the items into a dictionary where keys are derived from the datetime items; we can then query more easily by date/time, e.g. "2003-07"
-items_dict = {item.properties["start_datetime"][:7]: item for item in collection.get_items()}
-
-
-
#  Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# 'npp' = net primary production
-asset_name = "npp"
-
-
-
-

Creating Maps using Folium

-

We will explore differences in the land atmosphere Carbon flux Net Primary Productivity between two different dates/times. We’ll then visualize the outputs on a map using folium.

-
-

Fetch Imagery Using the Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify which two date/times you would like to visualize, using the format of items_dict.keys()
-dates = ["2010-01","2003-01"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id = first_date.collection_id
-item_id = first_date.id
-# Select relevant asset (NPP)
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands 
-
-
[{'scale': 1.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 0.23026999831199646,
-   'min': 0.0,
-   'count': 11.0,
-   'buckets': [244259.0,
-    3221.0,
-    2076.0,
-    2056.0,
-    3230.0,
-    3103.0,
-    996.0,
-    195.0,
-    53.0,
-    11.0]},
-  'statistics': {'mean': 0.00534185953438282,
-   'stddev': 0.022541318088769913,
-   'maximum': 0.23026999831199646,
-   'minimum': 0.0,
-   'valid_percent': 0.0003858024691358025}}]
-
-
-
-
# Use mean, scaled stddev, and minimum to generate an appropriate color bar range.
-rescale_values = {
-    #"max": raster_bands[0]['statistics']['mean'] + 4*raster_bands[0]['statistics']['stddev'],
-    "max": raster_bands[0]['statistics']['maximum'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 0.23026999831199646, 'min': 0.0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a color for displaying the data
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "viridis"
-
-
-
# Make a GET request to retrieve information for your first date/time
-date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/casagfed-carbonflux-monthgrid-v3/items/casagfed-carbonflux-monthgrid-v3-201001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=npp&color_formula=gamma+r+1.05&colormap_name=viridis&rescale=0.0%2C0.23026999831199646'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile, because we dates tiles 1 and 2 to have the same colorbar range for best visual comparison.
-second_date = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-
-
-date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-date_2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/casagfed-carbonflux-monthgrid-v3/items/casagfed-carbonflux-monthgrid-v3-200301/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=npp&color_formula=gamma+r+1.05&colormap_name=viridis&rescale=0.0%2C0.23026999831199646'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Generate Map

-

First, we’ll define the Area of Interest (AOI) as a GEOJSON. This will be visualized as a filled polygon on the map.

-
-
# The AOI is currently set to the Amazon rainforest in South America
-aoi = {
-    "type": "Feature",
-    "properties": {},
-    "geometry": {
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-74.0, -3.0],   # Southwest Bounding Coordinate
-                [-74.0, 5.0],    # Southeast Bounding Coordinate
-                [-60.0, 5.0],    # Northeast Bounding Coordinate
-                [-60.0, -3.0],   # Northwest Bounding Coordinate
-                [-74.0, -3.0]    # Closing the polygon at the Southwest Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(0, -66), zoom_start=5)
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_1 = TileLayer(
-    tiles=date_1_tile["tiles"][0],
-    attr="GHG",
-    opacity=0.8,
-    name=f"{dates[0]} NPP",
-    overlay= True,
-    legendEnabled = True
-)
-# Add the first layer to the Dual Map
-# This will appear on the left side, specified by 'm1'
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_2 = TileLayer(
-    tiles=date_2_tile["tiles"][0],
-    attr="GHG",
-    opacity=0.8,
-    name=f"{dates[1]} NPP",
-    overlay= True,
-    legendEnabled = True
-)
-# Add the second layer to the Dual Map
-# This will appear on the right side, specified by 'm2'
-map_layer_2.add_to(map_.m2)
-
-
-# Add data markers to both sides of map
-folium.Marker((0, -66), tooltip="Amazon Rainforest").add_to(map_)
-# Add AOI to both sides of map
-folium.GeoJson(aoi, name="Amazon Rainforest, South America",
-        style_function=lambda feature: {
-        "fillColor": "none",
-    }).add_to(map_)
-# Add controls to turn different elements on/off, for both sides of map
-folium.LayerControl(collapsed=False).add_to(map_)
-
-
-# Add a colorbar
-# For this, use one of our custom 'ghgc_utils' functions to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map, rescale_values, label='NPP (kg Carbon/m2/month)')
-# Now add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualizing the map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this case we are focusing on an Area of Interest (AOI) in the Amazon Rainforest, South America.

-
-
# Give the AOI a name to be used in your time series plot later on.
-aoi_name = 'Amazon Rainforest'
-# The AOI is defined as a GEOJSON
-aoi = {
-    "type": "Feature",
-    "properties": {},
-    "geometry": {
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-74.0, -3.0],   # Southwest Bounding Coordinate
-                [-74.0, 5.0],    # Southeast Bounding Coordinate
-                [-60.0, 5.0],    # Northeast Bounding Coordinate
-                [-60.0, -3.0],   # Northwest Bounding Coordinate
-                [-74.0, -3.0]    # Closing the polygon at the Southwest Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Use one of the custom 'ghgc_utils' functions to generate statistics over your AOI using the Raster API
-# This step may take a minute.
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first 5 lines of our statistics
-df.head(5)
-
-
Generating stats...
-
-
-
-

Visualizing the Data as a Time Series

-

We can now explore the NPP time series for the Amazon Rainforest, South America area. We can plot the data set using the code below:

-
-
# Plot data
-fig = plt.figure(figsize=(10,5))  # Set the size of the figure
-
-# Change "which_stat" if you would rather look at something like mean, median, or standard deviation.
-which_stat = 'max'
-
-plt.plot(
-    df["date"][:],
-    df[which_stat],
-    color="purple",
-    linestyle="-",
-    linewidth=1.5,
-)
-
-# Add x labels at desired positions (for example, every 6 months)
-plt.xticks(
-    df["date"][::6],  
-    rotation=45,  # Rotate labels to avoid overlap
-    ha="right"
-)
-
-# Labels and title
-plt.xlabel("Month")
-plt.ylabel("kg Carbon/m2/month")
-plt.title(f"{which_stat.capitalize()} Monthly {asset_name.upper()} for {aoi_name} (2003-2017)")
-
-# Add data citation
-plt.text(
-    df["date"][:].min(),                         # X-coordinate of the text (first datetime value)
-    df[which_stat].min(),                  # Y-coordinate of the text (minimum CO2 value)
-
-    # Text to be displayed
-    f"Source: {collection.title}",                   
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="bottom",              # Vertical alignment
-    color="blue",                            # Text color
-)
-
-plt.show()
-
-
-
# Fetch the third granule in the collection and set the color scheme and rescale values. 
-n = 2
-october_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_name}/items/{items[n].id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}",
-).json()
-october_tile
-
-
-
# Map the NPP level for the Congo area for the chosen tile
-aoi_map_bbox = Map(
-    tiles="OpenStreetMap",
-    location=[
-        1, # latitude
-        17, # longitude
-    ],
-    zoom_start=5,
-)
-
-map_layer = TileLayer(
-    tiles=october_tile["tiles"][0],
-    attr="GHG", opacity = 0.7, name=f"{items[n].properties['start_datetime'][0:7]} {asset_name}", overlay= True, legendEnabled = True
-)
-
-map_layer.add_to(aoi_map_bbox)
-
-# Display data marker (title) on the map
-folium.Marker((1,17), tooltip="Dallas").add_to(aoi_map_bbox)
-folium.LayerControl(collapsed=False).add_to(aoi_map_bbox)
-
-# Add a colorbar
-# Add a colorbar
-# For this, use one of the custom 'ghgc_utils' functions to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map, rescale_values, label='NPP (kg Carbon/m2/month)')
-
-# Add colorbar to the map
-aoi_map_bbox.get_root().html.add_child(folium.Element(legend_html))
-
-aoi_map_bbox
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for CASA GFED Land-Atmosphere Carbon Flux data: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the Net Primary Production (NPP) levels over the Amazon Rainforest, South America area for two distinctive years 5. Create a table that displays the minimum, maximum, and sum of the NPP values for a specified region 6. Generate a time-series graph of the NPP values for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook.html b/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook.html deleted file mode 100644 index 4ae52e7..0000000 --- a/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook.html +++ /dev/null @@ -1,7707 +0,0 @@ - - - - - - - - - - - - -CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes

-
- -
-
- Global, monthly 1 degree resolution methane emission estimates from microbial, fossil and pyrogenic sources derived using inverse modeling, version 2023. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

November 15, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1Β° x 1Β°
  • -
  • Temporal extent: January 1998 - December 2021
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Grams of methane per square meter per year
  • -
  • Utility: Climate Research
  • -
-

For more, visit the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes Data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.jsonendpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes

-

Surface methane (CHβ‚„) emissions are derived from atmospheric measurements of methane and its ΒΉΒ³C carbon isotope content. Different sources of methane contain different ratios of the two stable isotopologues, ΒΉΒ²CHβ‚„ and ΒΉΒ³CHβ‚„. This makes normally indistinguishable collocated sources of methane, say from agriculture and oil and gas exploration, distinguishable. The National Oceanic and Atmospheric Administration (NOAA) collects whole air samples from its global cooperative network of flasks (https://gml.noaa.gov/ccgg/about.html), which are then analyzed for methane and other trace gasses. A subset of those flasks are also analyzed for ΒΉΒ³C of methane in collaboration with the Institute of Arctic and Alpine Research at the University of Colorado Boulder. Scientists at the National Aeronautics and Space Administration (NASA) and NOAA used those measurements of methane and ΒΉΒ³C of methane in conjunction with a model of atmospheric circulation to estimate emissions of methane separated by three source types, microbial, fossil and pyrogenic.

-

For more information regarding this dataset, please visit the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes - item: One granule in the dataset, e.g. one monthly file of methane inverse fluxes - asset: A variable available within the granule, e.g. microbial, fossil, or pyrogenic methane fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes dataset is ct-ch4-monthgrid-v2023.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes 
-collection_name = "ct-ch4-monthgrid-v2023"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library enables an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 1998 to December 2021. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.

-
-
#%%time
-#items = list(collection.get_items())  # Convert the iterator to a list
-#print(f"Found {len(items)} items")
-
-
>>>>>>> remote <modified: >
-
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2010-01-01T00:00:00Z','2010-12-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-
-
<Item id=ct-ch4-monthgrid-v2023-201012>
-<Item id=ct-ch4-monthgrid-v2023-201011>
-<Item id=ct-ch4-monthgrid-v2023-201010>
-<Item id=ct-ch4-monthgrid-v2023-201009>
-<Item id=ct-ch4-monthgrid-v2023-201008>
-<Item id=ct-ch4-monthgrid-v2023-201007>
-<Item id=ct-ch4-monthgrid-v2023-201006>
-<Item id=ct-ch4-monthgrid-v2023-201005>
-<Item id=ct-ch4-monthgrid-v2023-201004>
-<Item id=ct-ch4-monthgrid-v2023-201003>
-<Item id=ct-ch4-monthgrid-v2023-201002>
-<Item id=ct-ch4-monthgrid-v2023-201001>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items = search.item_collection()
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["start_datetime"][:7]: item for item in items}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus on microbial sources of CH4 fluxes, so our asset of interest is:
-asset_name = "microbial"
-
-
-
-

Creating Maps using Folium

-

You will now explore changes in the microbial CHβ‚„ flux for two different dates/times. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2010-07","2010-01"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-observation_date_1 = items_dict[dates[0]]
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-# Select relevant asset (microbial CH4 emissions)
-object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 352.1198378793238,
-   'min': 0.0,
-   'count': 11,
-   'buckets': [64535, 213, 31, 13, 3, 2, 1, 1, 0, 1]},
-  'statistics': {'mean': 0.9793962770298661,
-   'stddev': 5.309472357044403,
-   'maximum': 352.1198378793238,
-   'minimum': 0.0,
-   'valid_percent': 100.0}}]
-
-
-
-
# Use mean, scaled stddev, and minimum to generate an appropriate color bar range.
-rescale_values = {
-    "max": raster_bands[0]['statistics']['mean'] + 2.5*raster_bands[0]['statistics']['stddev'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 14.253077169640875, 'min': 0.0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "PuRd"
-
-
-
# Make a GET request to retrieve information for your first date/time
-observation_date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/ct-ch4-monthgrid-v2023/items/ct-ch4-monthgrid-v2023-201007/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=microbial&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C14.253077169640875'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile, because we want date tiles 1 and 2 to have the same colorbar range for best visual comparison.
-observation_date_2 = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-
-observation_date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/ct-ch4-monthgrid-v2023/items/ct-ch4-monthgrid-v2023-201001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=microbial&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C14.253077169640875'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Generate Map

-

First, we’ll define the Area of Interest (AOI) as a GEOJSON. This will be visualized as a filled polygon on the map.

-
-
# The AOI is currently set to Eastern Canada, North America.
-aoi = {
-  "type": "FeatureCollection",
-  "features": [
-    {
-      "type": "Feature",
-      "properties": {},
-      "geometry": {
-        "coordinates": [
-          [
-            # [longitude, latitude]
-            [-106.81091327586626,58.13717287115446],  # Southwest Bounding Coordinate
-            [-106.81091327586626,46.689085955377266], # Southeast Bounding Coordinate
-            [-84.5565048510494,46.689085955377266],   # Northeast Bounding Coordinate
-            [-84.5565048510494,58.13717287115446],    # Northwest Bounding Coordinate
-            [-106.81091327586626,58.13717287115446]   # Closing the polygon at the Southwest Bounding Coordinate
-          ]
-        ],
-        "type": "Polygon"
-      }
-    }
-  ]
-}
-
-

We will use the DualMap format from folium to visualize our two dates side-by-side for the area of interest. Below we add the desired layers to our map and add markers to identify the date/times shown.

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(52, -95.3), zoom_start=4)
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_observation_date_1 = TileLayer(
-    tiles=observation_date_1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"{dates[0]} {items[0].assets['microbial'].title}",
-    overlay=True,
-)
-# Add the first layer to the Dual Map
-# This will appear on the left side, specified by 'm1'
-map_layer_observation_date_1.add_to(map_.m1)
-
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_observation_date_2 = TileLayer(
-    tiles=observation_date_2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"{dates[1]} {items[0].assets['microbial'].title}",
-    overlay=True,
-)
-# Add the second layer to the Dual Map
-# This will appear on the right side, specified by 'm2'
-map_layer_observation_date_2.add_to(map_.m2)
-
-# Display AOI on both maps
-folium.GeoJson(aoi, name="Eastern Canada, North America").add_to(map_)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='g CH4/m2/year',dark=True)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

This visualization effectively illustrates the difference in microbial activity in warm vs. cold temperatures, which vary most widely at high latitudes.

-
-
-
-

Calculate Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Eastern Canada, North America.

-
-
# Give your AOI a name to be used in your time series plot later on.
-aoi_name='Eastern Canada'
-# This AOI is defined as a GEOJSON.
-aoi = {
-  "type": "FeatureCollection",
-  "features": [
-    {
-      "type": "Feature",
-      "properties": {},
-      "geometry": {
-        "coordinates": [
-          [
-            # [longitude, latitude]
-            [-106.81091327586626,58.13717287115446],  # Southwest Bounding Coordinate
-            [-106.81091327586626,46.689085955377266], # Southeast Bounding Coordinate
-            [-84.5565048510494,46.689085955377266],   # Northeast Bounding Coordinate
-            [-84.5565048510494,58.13717287115446],    # Northwest Bounding Coordinate
-            [-106.81091327586626,58.13717287115446]   # Closing the polygon at the Southwest Bounding Coordinate
-          ]
-        ],
-        "type": "Polygon"
-      }
-    }
-  ]
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(53, -96.5), zoom_start=3)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name).add_to(map_)
-# Add data layer to visualize number of grid cells within AOI
-map_layer_observation_date_1.add_to(map_)
-# Add a quick colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='g CH4/m2/year',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-
-
Generating stats...
-Done!
-CPU times: user 100 ms, sys: 17.6 ms, total: 118 ms
-Wall time: 7.66 s
-
-
-
-
# Take a look at the first 5 rows of our statistics DataFrame
-df.head(5)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02010-12-01T00:00:00+00:000.000000000000000000006.821343290571773465560.57121562215132426488259.83999633789062500000148.424665167946017163560.874832992206559523220.159775120228017181170.000000000000000000000.00000000036842792514284.00000000000000000000[[219, 28, 36, 10, 2, 1, 1, 1, 0, 1], [0.0, 0....100.000000000000000000000.00000000000000000000299.000000000000000000000.000000000000000000002.773422005161813252982010-12-01 00:00:00+00:00
12010-11-01T00:00:00+00:000.000000000000000000009.180632303219203649290.48526060207306331851259.83999633789062500000126.090113065587374308050.850944220731173373020.153730601162461066880.000000000000000000000.00000000035909511554284.00000000000000000000[[245, 39, 7, 2, 3, 1, 0, 0, 0, 2], [0.0, 0.91...100.000000000000000000000.00000000000000000000299.000000000000000000000.000000000000000000002.952623959205863624082010-11-01 00:00:00+00:00
22010-10-01T00:00:00+00:000.0000000000000000000020.975419864852767659611.30173648352961701669259.83999633789062500000338.243203113234301326882.939053035115656076210.250563345846287255370.000000000000000000000.00000000035415695592284.00000000000000000000[[260, 17, 9, 2, 3, 2, 2, 2, 0, 2], [0.0, 2.09...100.000000000000000000000.00000000000000000000299.000000000000000000000.0000000000000000000012.138025207607315181242010-10-01 00:00:00+00:00
32010-09-01T00:00:00+00:000.0000000000000000000066.993615324844256520015.67575875359129611297259.839996337890625000001474.7891337479129560961210.383481451922365934591.196642004893074817670.000000000000000000000.00000000033616082800284.00000000000000000000[[234, 23, 19, 6, 5, 3, 3, 2, 2, 2], [0.0, 6.6...100.000000000000000000000.00000000000000000000299.000000000000000000000.0000000000000000000041.572906630923895932032010-09-01 00:00:00+00:00
42010-08-01T00:00:00+00:000.0000000000000000000097.6320764131748006775510.64292497187927821756259.839996337890625000002765.4575857175564124190716.330124175846872702781.611036879450004510870.000000000000000000000.00000000029630847828284.00000000000000000000[[193, 45, 33, 7, 5, 7, 4, 2, 0, 3], [0.0, 9.7...100.000000000000000000000.00000000000000000000299.000000000000000000000.0000000000000000000064.699429264109298287622010-08-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

Let’s look at the maximum methane flux within our AOI over the full time range of the dataset. The code below generates a time series plot from the table above.

-
-
# Figure size: 20 representing the width, 10 representing the height
-df = df.sort_values(by="datetime")
-fig = plt.figure(figsize=(10,5))
-
-# Change 'which_stat' below if you would rather look at a different statistic, like minimum or mean.
-which_stat = "mean"
-
-plt.plot(
-    [d[0:7] for d in df["datetime"]], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum CH4 flux
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{items[0].assets[asset_name].title}", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("g CHβ‚„/mΒ²/year")
-plt.xticks(rotation = 90)
-
-# Show once-annual tick marks
-#interval = 12
-#ticks = range(0, len(df), interval)  # Tick positions
-#plt.xticks(ticks, [d[0:7] for d in df["datetime"]][list(ticks)])  # Use the corresponding datetime values
-plt.xticks([d[0:7] for d in df['datetime'][:]][::2])
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} Monthly Flux from {items[0].assets[asset_name].title} sources within {aoi_name} AOI (1998-2021)")
-
-# Add data citation
-plt.text(
-    [d[0:7] for d in df['datetime']][0],           # X-coordinate of the text
-    df[which_stat].min(),                  # Y-coordinate of the text
-
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=8,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-

This is a visual representation of the seasonal cycle of microbial methane emissions in Eastern Canada over the span of 22 years!

-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes dataset: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the CHβ‚„ inverse fluxes over an area of interest for two distinctive dates/times 5. Create a table that displays the minimum, maximum, and sum of the CHβ‚„ inverse fluxes for a specified region 6. Generate a time-series graph of the CHβ‚„ inverse fluxes for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook_files/figure-html/cell-22-output-1.png b/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook_files/figure-html/cell-22-output-1.png deleted file mode 100644 index f3c1d50..0000000 Binary files a/_site/user_data_notebooks/ct-ch4-monthgrid-v2023_User_Notebook_files/figure-html/cell-22-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html b/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html deleted file mode 100644 index e2a6f50..0000000 --- a/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook.html +++ /dev/null @@ -1,4853 +0,0 @@ - - - - - - - - - - - - -Utilizing the Air-Sea COβ‚‚ Flux ECCO-Darwin Model to Visualize COβ‚‚ Exchange and Dynamics Between the Atmosphere and the Ocean – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Utilizing the Air-Sea COβ‚‚ Flux ECCO-Darwin Model to Visualize COβ‚‚ Exchange and Dynamics Between the Atmosphere and the Ocean

-
- -
-
- Global, monthly average air-sea COβ‚‚ flux at ~1/3Β° resolution from 2020 to 2022 -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur, Farnaz Bayat

-
-
- -
-
Published
-
-

September 20, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the Air-Sea COβ‚‚ Flux, ECCO-Darwin Model notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1/3Β°
  • -
  • Temporal extent: January 2020 - December 2022
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Millimoles of COβ‚‚ per meter squared per second
  • -
  • Utility: Climate Research, Oceanography, Carbon Stock Monitoring
  • -
-

For more, visit the Air-Sea COβ‚‚ Flux ECCO-Darwin Model data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5 Data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

Air-Sea COβ‚‚ Flux ECCO-Darwin Model

-

The ocean is a major sink for atmospheric carbon dioxide (COβ‚‚), largely due to the presence of phytoplankton that use the COβ‚‚ to grow. Studies have shown that global ocean COβ‚‚ uptake has increased over recent decades, however, there is uncertainty in the various mechanisms that affect ocean COβ‚‚ flux and storage and how the ocean carbon sink will respond to future climate change.

-

Because COβ‚‚ fluxes can vary significantly across space and time, combined with deficiencies in ocean and atmosphere COβ‚‚ observations, there is a need for models that can thoroughly represent these processes. Ocean biogeochemical models (OBMs) can resolve the physical and biogeochemical mechanisms contributing to spatial and temporal variations in air-sea COβ‚‚ fluxes but previous OBMs do not integrate observations to improve model accuracy and have not been able to operate on the seasonal and multi-decadal timescales needed to adequately characterize these processes.

-

The ECCO-Darwin model is an OBM that assimilates Estimating the Circulation and Climate of the Ocean (ECCO) consortium ocean circulation estimates and biogeochemical processes from the Massachusetts Institute of Technology (MIT) Darwin Project. A pilot study using ECCO-Darwin was completed by Brix et al. (2015) however, an improved version of the model was developed by Carroll et al. (2020) in which issues present in the first model were addressed using data assimilation and adjustments were made to initial conditions and biogeochemical parameters. The updated ECCO-Darwin model was compared with interpolation-based products to estimate surface ocean partial pressure (pCO2) and air-sea COβ‚‚ flux. This dataset contains the gridded global, monthly mean air-sea COβ‚‚ fluxes from version 5 of the ECCO-Darwin model.

-

The data available in the US GHG Center hub are available at ~1/3Β° horizontal resolution at the equator (~18 km at high latitudes) from January 2020 through December 2022. For more information regarding this dataset, please visit the Air-Sea COβ‚‚ Flux ECCO-Darwin Model data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. Air-Sea COβ‚‚ Flux ECCO-Darwin Model - item: One granule in the dataset, e.g. one monthly file of fluxes - asset: A variable available within the granule, e.g. COβ‚‚ fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching the data itself - Raster API: Endpoint for fetching data, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub, except the tabulate library. If you need to run this notebook elsewhere, please install the libraries by running the following command line:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib tabulate –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Querying the STAC API

-

The libraries above allow better execution of a query in the GHG Center Spatio Temporal Asset Catalog (STAC) Application Programming Interface (API), where the granules for this collection are stored. You will learn the functionality of each library throughout the notebook.

-
-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the Air-Sea COβ‚‚ Flux ECCO-Darwin Model dataset is eccodarwin-co2flux-monthgrid-v5*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable 
-# Name of the collection for ECCO Darwin COβ‚‚ flux monthly emissions
-collection_name = "eccodarwin-co2flux-monthgrid-v5"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library makes an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2020 to December 2022. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 36 items
-
-
-
-
# The search function can be used to find data within a specific time frame, e.g. 2022.
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2021-01-01T00:00:00Z','2022-12-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-
-
<Item id=eccodarwin-co2flux-monthgrid-v5-202212>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202211>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202210>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202209>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202208>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202207>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202206>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202205>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202204>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202203>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202202>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202201>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202112>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202111>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202110>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202109>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202108>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202107>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202106>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202105>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202104>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202103>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202102>
-<Item id=eccodarwin-co2flux-monthgrid-v5-202101>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items; we can then query more easily by date/time, e.g. "2020-02"
-items_dict = {item.properties["start_datetime"][:7]: item for item in collection.get_items()}
-
-

Next, you will examine the contents of the collection under the temporal variable. You’ll see that the data is available from January 2020 to December 2022. Looking at the dashboard:time density, you can observe that the data is periodic with monthly time density.

-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# For this collection, there is only one asset to choose from: "co2".
-asset_name = "co2"
-
-
-
-
-
-

Create Maps Using Folium

-

You will now explore differences in Air-Sea COβ‚‚ flux at two different date/times. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-

Below, you will specify the upper and lower bounds of your desired colorbar for visualizing the data, which will be saved as rescale_values.

-
-
# Specify two dates/times to visualize.
-dates = ["2020-01","2020-07"]
-
-
-
observation_date_1 = items_dict[dates[0]]
-
-# Extract collection name and item ID
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-
-
-
object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-raster_bands
-
-
[{'scale': 1.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 1e+20,
-   'min': -0.0035127835016991096,
-   'count': 11.0,
-   'buckets': [338606.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 186706.0]},
-  'statistics': {'mean': 3.554192556042885e+19,
-   'stddev': 4.786401658343999e+19,
-   'maximum': 1e+20,
-   'minimum': -0.0035127835016991096,
-   'valid_percent': 0.0001903630604288499}}]
-
-
-
-
rescale_values = {
-    "max": raster_bands[0]['statistics']['mean'] + 2*raster_bands[0]['statistics']['stddev'],
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-
{'max': 1.3126995872730884e+20, 'min': -0.0035127835016991096}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale_values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Making sure that capitalization follows Matplotlib standards
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "magma"
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-observation_date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale=-0.0007,0.0007"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/eccodarwin-co2flux-monthgrid-v5/items/eccodarwin-co2flux-monthgrid-v5-202001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2&color_formula=gamma+r+1.05&colormap_name=magma&rescale=-0.0007%2C0.0007'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.125, -90.124826629681, 179.875, 89.875173370319],
- 'center': [-0.125, -0.1248266296809959, 0]}
-
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-observation_date_2 = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-
-observation_date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale=-0.0007,0.0007"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/eccodarwin-co2flux-monthgrid-v5/items/eccodarwin-co2flux-monthgrid-v5-202007/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2&color_formula=gamma+r+1.05&colormap_name=magma&rescale=-0.0007%2C0.0007'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.125, -90.124826629681, 179.875, 89.875173370319],
- 'center': [-0.125, -0.1248266296809959, 0]}
-
-
-
-
-

Generate map

-

We’ll look at Air-Sea CO2 fluxes off the Northeast coast of the U.S. for two dates.

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(41,-67), zoom_start=5)
-
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_1 = TileLayer(
-    tiles=observation_date_2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution 
-    name=f'{dates[0]} {items_dict[dates[1]].assets[asset_name].title}', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.8, # Adjust the transparency of the layer
-)
-# Add the first layer to the Dual Map
-# This will appear on the left side, specified by 'm1'
-map_layer_1.add_to(map_.m1)
-
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_2 = TileLayer(
-    tiles=observation_date_1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution 
-    name=f'{dates[1]} {items_dict[dates[1]].assets[asset_name].title}', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.8, # Adjust the transparency of the layer
-)
-# Add the second layer to the Dual Map
-# This will appear on the right side, specified by 'm2'
-map_layer_2.add_to(map_.m2)
-
-# Add data markers to both sides of map
-folium.Marker((41,-67)).add_to(map_)
-
-# Add controls to turn different elements on/off, for both sides of map
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# First, scale our colorbar range to make the numbers display more neatly
-for k in rescale_values.keys():
-    rescale_values[k] = rescale_values[k]/1e19
-# Next, call one of the custom 'ghgc_utils' functions to create an HTML colorbar representation
-legend_html = ghgc_utils.generate_html_colorbar(
-                color_map,
-                rescale_values,
-                label='10^19 Millimoles per meter squared per second (mmol mΒ²/s)'
-    )
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculate Zonal Statistics

-

To perform zonal statistics, you first need to create a polygon. In this use case, you are creating a polygon along the coast of California, United States.

-
-
# Give your AOI a name for use in the plot later
-aoi_name = 'Coastal California'
-# Define AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-124.19, 37.86], # North-west bounding coordinate
-                [-123.11, 37.86], # North-east bounding coordinate
-                [-119.96, 33.16], # South-east bounding coordinate
-                [-121.13, 33.16], # South-west bounding coordinate
-                [-124.19, 37.86]  # North-west bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-

Now that you created the polygon for the area of interest, you need to develop a function that runs through the data collection and generates the statistics for a specific item (granule) within the boundaries of the AOI polygon.

-

Before you run the generated function in the previous step on a specific item (observation), you need to check the total number of items available within the collection and retrieve the information regarding their start date-time.

-
-
# Check the total number of items available within the collection
-#items = requests.get(
-#    f"{STAC_API_URL}/collections/{collection_name}/items?limit=600"
-#).json()["features"]
-#
-## Print the total number of items (granules) found
-#print(f"Found {len(items)} items")
-
-
-
# Examine the first item in the collection
-#items[0]['properties']
-
-

Generate the statistics for the AOI

-
-
%%time
-# Use one of the custom 'ghgc_utils' functions to generate statistics over your AOI using the Raster API
-# The result is output as a Pandas DataFrame
-# This step may take a minute
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-
-# Display the stats for the first 5 rows in the DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 104 ms, sys: 8.77 ms, total: 112 ms
-Wall time: 4.68 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02022-12-01T00:00:00+00:00-0.00010515466364758998-0.00002633915608704389-0.0000671351705458746286.62000274658203125000-0.005815248657075913070.00001997011065738988-0.00006633380711657132-0.00010515466364758998-0.00010515466364758998115.00000000000000000000[[9, 8, 9, 8, 22, 10, 18, 16, 8, 7], [-0.00010...31.94000000000000127898245.00000000000000000000115.00000000000000000000-0.00010359588859230771-0.000031940678870333252022-12-01 00:00:00+00:00
12022-11-01T00:00:00+00:00-0.000053277011152059300.00001028134560749642-0.0000295111486433101286.62000274658203125000-0.002556255776538313590.00001407494890675066-0.00003181141450025719-0.00005327701115205930-0.00005327701115205930115.00000000000000000000[[6, 21, 17, 16, 13, 15, 11, 9, 5, 2], [-5.327...31.94000000000000127898245.00000000000000000000115.00000000000000000000-0.00005065607151994821-0.000001108997582734402022-11-01 00:00:00+00:00
22022-10-01T00:00:00+00:00-0.000034142604425305810.00004739613790624944-0.0000017485122119025286.62000274658203125000-0.000151456132597428220.00001837792521916367-0.00000250581129329143-0.00003414260442530581-0.00003414260442530581115.00000000000000000000[[10, 15, 16, 13, 14, 15, 14, 12, 3, 3], [-3.4...31.94000000000000127898245.00000000000000000000115.00000000000000000000-0.000032000126492079520.000034402321746323972022-10-01 00:00:00+00:00
32022-09-01T00:00:00+00:00-0.000046921512298205210.00004959876485207447-0.0000068882289710145686.62000274658203125000-0.000596658412388366860.00002092700549779860-0.00000422793679848356-0.00004692151229820521-0.00004692151229820521115.00000000000000000000[[6, 13, 20, 14, 17, 12, 24, 5, 1, 3], [-4.692...31.94000000000000127898245.00000000000000000000115.00000000000000000000-0.000045119873386536290.000027166662996289722022-09-01 00:00:00+00:00
42022-08-01T00:00:00+00:00-0.00009080547748822169-0.00000155375716192473-0.0000382283737054317886.62000274658203125000-0.003311341835361864950.00002081685202185498-0.00003259453885688862-0.00009080547748822169-0.00009080547748822169115.00000000000000000000[[2, 10, 4, 8, 11, 15, 21, 20, 12, 12], [-9.08...31.94000000000000127898245.00000000000000000000115.00000000000000000000-0.00008052887732505406-0.000007471908842652862022-08-01 00:00:00+00:00
- -
-
-
-
-
%%time 
-# %%time = Wall time (execution time) for running the code below
-
-# Generate statistics using the created function "generate_stats" within the bounding box defined by the aoi polygon
-stats = {}
-for item in items: 
-    date = item["properties"]["start_datetime"]  # Get the associated date
-    year_month = date[:7].replace('-', '')  # Convert datetime to year-month
-    stats[year_month] = generate_stats(item, california_coast_aoi)
-
-
{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00010515466364758998, 'max': -2.6339156087043894e-05, 'mean': -6.713517054587462e-05, 'count': 86.62000274658203, 'sum': -0.005815248657075913, 'std': 1.9970110657389885e-05, 'median': -6.633380711657132e-05, 'majority': -0.00010515466364758998, 'minority': -0.00010515466364758998, 'unique': 115.0, 'histogram': [[9, 8, 9, 8, 22, 10, 18, 16, 8, 7], [-0.00010515466364758998, -9.727311289153537e-05, -8.939156213548077e-05, -8.151001137942615e-05, -7.362846062337154e-05, -6.574690986731694e-05, -5.786535911126232e-05, -4.9983808355207714e-05, -4.2102257599153106e-05, -3.422070684309849e-05, -2.6339156087043894e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00010359588859230771, 'percentile_98': -3.194067887033325e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -5.3277011152059295e-05, 'max': 1.0281345607496425e-05, 'mean': -2.9511148643310123e-05, 'count': 86.62000274658203, 'sum': -0.0025562557765383136, 'std': 1.4074948906750663e-05, 'median': -3.1811414500257194e-05, 'majority': -5.3277011152059295e-05, 'minority': -5.3277011152059295e-05, 'unique': 115.0, 'histogram': [[6, 21, 17, 16, 13, 15, 11, 9, 5, 2], [-5.3277011152059295e-05, -4.692117547610372e-05, -4.056533980014815e-05, -3.4209504124192576e-05, -2.7853668448237005e-05, -2.1497832772281433e-05, -1.5141997096325857e-05, -8.786161420370289e-06, -2.4303257444147137e-06, 3.9255099315408615e-06, 1.0281345607496425e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -5.0656071519948205e-05, 'percentile_98': -1.1089975827344017e-06}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -3.414260442530581e-05, 'max': 4.739613790624944e-05, 'mean': -1.7485122119025166e-06, 'count': 86.62000274658203, 'sum': -0.00015145613259742822, 'std': 1.8377925219163667e-05, 'median': -2.5058112932914285e-06, 'majority': -3.414260442530581e-05, 'minority': -3.414260442530581e-05, 'unique': 115.0, 'histogram': [[10, 15, 16, 13, 14, 15, 14, 12, 3, 3], [-3.414260442530581e-05, -2.5988730192150287e-05, -1.7834855958994763e-05, -9.680981725839238e-06, -1.5271074926837138e-06, 6.626766740471814e-06, 1.4780640973627335e-05, 2.2934515206782857e-05, 3.1088389439938384e-05, 3.924226367309391e-05, 4.739613790624944e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -3.2000126492079525e-05, 'percentile_98': 3.4402321746323974e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -4.692151229820521e-05, 'max': 4.9598764852074465e-05, 'mean': -6.888228971014557e-06, 'count': 86.62000274658203, 'sum': -0.0005966584123883669, 'std': 2.0927005497798602e-05, 'median': -4.227936798483556e-06, 'majority': -4.692151229820521e-05, 'minority': -4.692151229820521e-05, 'unique': 115.0, 'histogram': [[6, 13, 20, 14, 17, 12, 24, 5, 1, 3], [-4.692151229820521e-05, -3.726948458317724e-05, -2.7617456868149273e-05, -1.7965429153121305e-05, -8.313401438093338e-06, 1.338626276934629e-06, 1.0990653991962596e-05, 2.0642681706990564e-05, 3.029470942201853e-05, 3.99467371370465e-05, 4.9598764852074465e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -4.511987338653629e-05, 'percentile_98': 2.716666299628972e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -9.080547748822169e-05, 'max': -1.5537571619247306e-06, 'mean': -3.822837370543178e-05, 'count': 86.62000274658203, 'sum': -0.003311341835361865, 'std': 2.0816852021854977e-05, 'median': -3.259453885688862e-05, 'majority': -9.080547748822169e-05, 'minority': -9.080547748822169e-05, 'unique': 115.0, 'histogram': [[2, 10, 4, 8, 11, 15, 21, 20, 12, 12], [-9.080547748822169e-05, -8.1880305455592e-05, -7.29551334229623e-05, -6.40299613903326e-05, -5.5104789357702906e-05, -4.6179617325073214e-05, -3.7254445292443516e-05, -2.8329273259813817e-05, -1.9404101227184125e-05, -1.0478929194554433e-05, -1.5537571619247306e-06]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -8.052887732505406e-05, 'percentile_98': -7.471908842652856e-06}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00015569413035950813, 'max': -2.4125961199499128e-05, 'mean': -0.0001042554239276152, 'count': 86.62000274658203, 'sum': -0.009030605106956103, 'std': 2.2317479060651927e-05, 'median': -0.00010594736607856508, 'majority': -0.00015569413035950813, 'minority': -0.00015569413035950813, 'unique': 115.0, 'histogram': [[2, 9, 25, 26, 24, 10, 9, 4, 4, 2], [-0.00015569413035950813, -0.00014253731344350724, -0.00012938049652750632, -0.00011622367961150543, -0.00010306686269550453, -8.991004577950363e-05, -7.675322886350274e-05, -6.359641194750183e-05, -5.043959503150093e-05, -3.7282778115500025e-05, -2.4125961199499128e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00014154422787180773, 'percentile_98': -4.717074647335924e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00023412670449494892, 'max': -4.360531565345715e-05, 'mean': -0.00017566129908107503, 'count': 86.62000274658203, 'sum': -0.015215782208870886, 'std': 3.3002737566243304e-05, 'median': -0.00017951213292013204, 'majority': -0.00023412670449494892, 'minority': -0.00023412670449494892, 'unique': 115.0, 'histogram': [[10, 25, 20, 29, 14, 8, 4, 2, 2, 1], [-0.00023412670449494892, -0.00021507456561079975, -0.00019602242672665056, -0.0001769702878425014, -0.00015791814895835222, -0.00013886601007420305, -0.00011981387119005387, -0.00010076173230590468, -8.170959342175551e-05, -6.265745453760635e-05, -4.360531565345715e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.000226922687486708, 'percentile_98': -9.464532724533128e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00024332760936736196, 'max': -6.65548876609859e-05, 'mean': -0.00017796363014360882, 'count': 86.62000274658203, 'sum': -0.015415210131831104, 'std': 3.3829679476222626e-05, 'median': -0.00017883927844132084, 'majority': -0.00024332760936736196, 'minority': -0.00024332760936736196, 'unique': 115.0, 'histogram': [[10, 12, 18, 21, 23, 16, 4, 7, 2, 2], [-0.00024332760936736196, -0.00022565033719672436, -0.00020797306502608675, -0.00019029579285544915, -0.00017261852068481154, -0.00015494124851417394, -0.0001372639763435363, -0.0001195867041728987, -0.0001019094320022611, -8.42321598316235e-05, -6.65548876609859e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.000234296558831545, 'percentile_98': -0.00010601648081698702}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00023333175939176657, 'max': -6.775292327902623e-05, 'mean': -0.00017043679434868597, 'count': 86.62000274658203, 'sum': -0.014763235594601815, 'std': 3.0756088797644315e-05, 'median': -0.00016774749191505306, 'majority': -0.00023333175939176657, 'minority': -0.00023333175939176657, 'unique': 115.0, 'histogram': [[8, 12, 14, 23, 28, 13, 8, 3, 4, 2], [-0.00023333175939176657, -0.00021677387578049253, -0.0002002159921692185, -0.00018365810855794446, -0.00016710022494667044, -0.0001505423413353964, -0.00013398445772412235, -0.00011742657411284832, -0.00010086869050157429, -8.431080689030025e-05, -6.775292327902623e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00023038987188993542, 'percentile_98': -9.912092486965628e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00019244893568340932, 'max': -4.626869487573467e-05, 'mean': -0.0001248641236325952, 'count': 86.62000274658203, 'sum': -0.010815730732004956, 'std': 2.379805898277995e-05, 'median': -0.00012160861837914462, 'majority': -0.00019244893568340932, 'minority': -0.00019244893568340932, 'unique': 115.0, 'histogram': [[6, 7, 5, 6, 32, 35, 14, 6, 2, 2], [-0.00019244893568340932, -0.00017783091160264187, -0.0001632128875218744, -0.0001485948634411069, -0.00013397683936033946, -0.000119358815279572, -0.00010474079119880453, -9.012276711803706e-05, -7.55047430372696e-05, -6.088671895650212e-05, -4.626869487573467e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00018311936297626542, 'percentile_98': -7.822118982509477e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00010173065143143008, 'max': -2.584304744996503e-05, 'mean': -7.344011234961877e-05, 'count': 86.62000274658203, 'sum': -0.006361382733433271, 'std': 1.4935713273717173e-05, 'median': -7.270195273017876e-05, 'majority': -0.00010173065143143008, 'minority': -0.00010173065143143008, 'unique': 115.0, 'histogram': [[7, 16, 13, 27, 23, 13, 4, 8, 1, 3], [-0.00010173065143143008, -9.414189103328358e-05, -8.655313063513708e-05, -7.896437023699056e-05, -7.137560983884407e-05, -6.378684944069755e-05, -5.619808904255105e-05, -4.8609328644404545e-05, -4.102056824625804e-05, -3.343180784811154e-05, -2.584304744996503e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -9.958162758843473e-05, 'percentile_98': -4.3911333780088374e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0002954860733280958, 'max': -5.5176877843732515e-05, 'mean': -0.00020816867585089378, 'count': 86.62000274658203, 'sum': -0.018031571273956763, 'std': 4.543075252453149e-05, 'median': -0.0002131177659205654, 'majority': -0.0002954860733280958, 'minority': -0.0002954860733280958, 'unique': 115.0, 'histogram': [[11, 13, 18, 34, 15, 7, 7, 4, 4, 2], [-0.0002954860733280958, -0.00027145515377965945, -0.0002474242342312231, -0.0002233933146827868, -0.00019936239513435047, -0.00017533147558591413, -0.00015130055603747783, -0.0001272696364890415, -0.00010323871694060515, -7.920779739216882e-05, -5.5176877843732515e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.0002897962610530328, 'percentile_98': -0.000100708043492395}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0001281229180544866, 'max': -4.706282658110175e-05, 'mean': -9.715623845920787e-05, 'count': 86.62000274658203, 'sum': -0.008415673642184164, 'std': 1.227680676700787e-05, 'median': -9.735475867856487e-05, 'majority': -0.0001281229180544866, 'minority': -0.0001281229180544866, 'unique': 115.0, 'histogram': [[5, 7, 10, 36, 25, 14, 11, 5, 1, 1], [-0.0001281229180544866, -0.00012001690890714811, -0.00011191089975980962, -0.00010380489061247114, -9.569888146513265e-05, -8.759287231779417e-05, -7.948686317045569e-05, -7.138085402311721e-05, -6.327484487577872e-05, -5.516883572844024e-05, -4.706282658110175e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.000123848819823941, 'percentile_98': -7.226910207959458e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -8.282967080610922e-05, 'max': -2.0952414726973794e-05, 'mean': -6.107579706848998e-05, 'count': 86.62000274658203, 'sum': -0.005290385709822289, 'std': 1.3509642082027697e-05, 'median': -6.375022750447845e-05, 'majority': -8.282967080610922e-05, 'minority': -8.282967080610922e-05, 'unique': 115.0, 'histogram': [[9, 18, 22, 22, 10, 12, 11, 4, 4, 3], [-8.282967080610922e-05, -7.664194519819567e-05, -7.045421959028213e-05, -6.42664939823686e-05, -5.807876837445505e-05, -5.1891042766541503e-05, -4.5703317158627966e-05, -3.951559155071442e-05, -3.332786594280088e-05, -2.7140140334887334e-05, -2.0952414726973794e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -8.104369960526185e-05, 'percentile_98': -2.9440160502217717e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -8.228188138380643e-05, 'max': -2.219938231567791e-05, 'mean': -5.551456715650032e-05, 'count': 86.62000274658203, 'sum': -0.004808671959571371, 'std': 1.7142791563308453e-05, 'median': -5.9868326809943314e-05, 'majority': -8.228188138380643e-05, 'minority': -8.228188138380643e-05, 'unique': 115.0, 'histogram': [[9, 12, 19, 16, 9, 9, 13, 5, 15, 8], [-8.228188138380643e-05, -7.627363147699357e-05, -7.026538157018072e-05, -6.425713166336788e-05, -5.824888175655502e-05, -5.2240631849742166e-05, -4.623238194292932e-05, -4.022413203611647e-05, -3.4215882129303614e-05, -2.820763222249076e-05, -2.219938231567791e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -8.110128563149226e-05, 'percentile_98': -2.6928747397675633e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -4.7073752683007746e-05, 'max': 1.0643952881431232e-05, 'mean': -1.1711885681223084e-05, 'count': 86.62000274658203, 'sum': -0.0010144835698751983, 'std': 1.3965513149592162e-05, 'median': -1.2337799634271484e-05, 'majority': -4.7073752683007746e-05, 'minority': -4.7073752683007746e-05, 'unique': 115.0, 'histogram': [[4, 3, 3, 9, 18, 15, 15, 16, 12, 20], [-4.7073752683007746e-05, -4.130198212656385e-05, -3.553021157011995e-05, -2.9758441013676053e-05, -2.3986670457232156e-05, -1.8214899900788258e-05, -1.244312934434436e-05, -6.671358787900463e-06, -8.995882314565652e-07, 4.8721823249873325e-06, 1.0643952881431232e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -4.343687653862412e-05, 'percentile_98': 1.0633945096260036e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -4.4347183857908615e-05, 'max': 2.211462828039654e-05, 'mean': -3.139432806320912e-06, 'count': 86.62000274658203, 'sum': -0.00027193767830622714, 'std': 1.34768955636096e-05, 'median': -1.939379844781874e-06, 'majority': -4.4347183857908615e-05, 'minority': -4.4347183857908615e-05, 'unique': 115.0, 'histogram': [[3, 2, 2, 14, 14, 18, 12, 24, 21, 5], [-4.4347183857908615e-05, -3.77010026440781e-05, -3.1054821430247584e-05, -2.4408640216417072e-05, -1.7762459002586557e-05, -1.1116277788756041e-05, -4.4700965749255294e-06, 2.1760846389049892e-06, 8.822265852735501e-06, 1.5468447066566013e-05, 2.211462828039654e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -3.4440981707303044e-05, 'percentile_98': 1.690956352821826e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00010925971508853925, 'max': 3.7677876342250117e-06, 'mean': -2.144993925282313e-05, 'count': 86.62000274658203, 'sum': -0.0018579937969935571, 'std': 1.6606374648244326e-05, 'median': -1.772316630905369e-05, 'majority': -0.00010925971508853925, 'minority': -0.00010925971508853925, 'unique': 115.0, 'histogram': [[1, 1, 2, 0, 4, 5, 17, 21, 40, 24], [-0.00010925971508853925, -9.795696481626282e-05, -8.665421454398639e-05, -7.535146427170998e-05, -6.404871399943355e-05, -5.2745963727157116e-05, -4.14432134548807e-05, -3.014046318260427e-05, -1.883771291032784e-05, -7.534962638051411e-06, 3.7677876342250117e-06]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -6.255253714484405e-05, 'percentile_98': -9.154789882268865e-07}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00012082036816258734, 'max': -2.3478994770513282e-05, 'mean': -6.241454785524433e-05, 'count': 86.62000274658203, 'sum': -0.00540634830664794, 'std': 1.7333188060938812e-05, 'median': -6.38982674568887e-05, 'majority': -0.00012082036816258734, 'minority': -0.00012082036816258734, 'unique': 115.0, 'histogram': [[4, 2, 3, 5, 14, 34, 27, 13, 7, 6], [-0.00012082036816258734, -0.00011108623082337994, -0.00010135209348417253, -9.161795614496512e-05, -8.188381880575772e-05, -7.214968146655032e-05, -6.241554412734292e-05, -5.2681406788135504e-05, -4.29472694489281e-05, -3.32131321097207e-05, -2.3478994770513282e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00011528931527092115, 'percentile_98': -3.055876826658794e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00023948827066906818, 'max': -5.144603688901141e-05, 'mean': -0.0001667495405715303, 'count': 86.62000274658203, 'sum': -0.014443845662297247, 'std': 3.542955442362702e-05, 'median': -0.00017275226630492568, 'majority': -0.00023948827066906818, 'minority': -0.00023948827066906818, 'unique': 115.0, 'histogram': [[2, 11, 31, 23, 17, 13, 8, 6, 1, 3], [-0.00023948827066906818, -0.0002206840472910625, -0.00020187982391305684, -0.00018307560053505115, -0.00016427137715704546, -0.0001454671537790398, -0.00012666293040103412, -0.00010785870702302846, -8.905448364502277e-05, -7.025026026701709e-05, -5.144603688901141e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.0002168971831556677, 'percentile_98': -6.526345074666982e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0002351198672666438, 'max': -5.7465317448293746e-05, 'mean': -0.00017317464170801014, 'count': 86.62000274658203, 'sum': -0.015000387940386196, 'std': 2.8935127203420645e-05, 'median': -0.00017844650602075196, 'majority': -0.0002351198672666438, 'minority': -0.0002351198672666438, 'unique': 115.0, 'histogram': [[3, 17, 31, 24, 19, 7, 5, 6, 2, 1], [-0.0002351198672666438, -0.0002173544122848088, -0.0001995889573029738, -0.0001818235023211388, -0.00016405804733930378, -0.00014629259235746878, -0.0001285271373756338, -0.00011076168239379877, -9.299622741196377e-05, -7.523077243012878e-05, -5.7465317448293746e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00022162898371092134, 'percentile_98': -9.759098805227394e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.000198452983437136, 'max': -5.764483999872821e-05, 'mean': -0.00014113825817569205, 'count': 86.62000274658203, 'sum': -0.01222539631082625, 'std': 2.594767069916286e-05, 'median': -0.0001363527003899194, 'majority': -0.000198452983437136, 'minority': -0.000198452983437136, 'unique': 115.0, 'histogram': [[7, 15, 13, 15, 28, 20, 6, 8, 1, 2], [-0.000198452983437136, -0.00018437216909329522, -0.00017029135474945446, -0.00015621054040561367, -0.00014212972606177289, -0.00012804891171793213, -0.00011396809737409134, -9.988728303025055e-05, -8.580646868640978e-05, -7.1725654342569e-05, -5.764483999872821e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00018605479098279375, 'percentile_98': -8.720032420082412e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00024043604702766373, 'max': -6.154515941883043e-05, 'mean': -0.00017970813716543328, 'count': 86.62000274658203, 'sum': -0.01556631933485297, 'std': 3.217445686518619e-05, 'median': -0.0001776297677285159, 'majority': -0.00024043604702766373, 'minority': -0.00024043604702766373, 'unique': 115.0, 'histogram': [[14, 9, 19, 30, 23, 7, 4, 7, 1, 1], [-0.00024043604702766373, -0.0002225469582667804, -0.00020465786950589707, -0.00018676878074501375, -0.0001688796919841304, -0.00015099060322324709, -0.00013310151446236377, -0.00011521242570148042, -9.73233369405971e-05, -7.943424817971378e-05, -6.154515941883043e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00023946828863740917, 'percentile_98': -0.00010489454506950395}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0001606134280190246, 'max': -5.403518111078113e-05, 'mean': -0.00012517344705245486, 'count': 86.62000274658203, 'sum': -0.01084252432748278, 'std': 1.9982041543139306e-05, 'median': -0.0001247355985875484, 'majority': -0.0001606134280190246, 'minority': -0.0001606134280190246, 'unique': 115.0, 'histogram': [[11, 9, 28, 35, 13, 4, 8, 3, 1, 3], [-0.0001606134280190246, -0.00014995560332820024, -0.0001392977786373759, -0.00012863995394655155, -0.0001179821292557272, -0.00010732430456490286, -9.666647987407852e-05, -8.600865518325416e-05, -7.535083049242982e-05, -6.469300580160548e-05, -5.403518111078113e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00015970112532852465, 'percentile_98': -8.13887761059406e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0001396797615686017, 'max': -3.8912624507455626e-05, 'mean': -0.00010799848383097121, 'count': 86.62000274658203, 'sum': -0.009354828966065421, 'std': 1.921787145397108e-05, 'median': -0.00011061603443556379, 'majority': -0.0001396797615686017, 'minority': -0.0001396797615686017, 'unique': 115.0, 'histogram': [[8, 20, 29, 29, 10, 4, 5, 5, 2, 3], [-0.0001396797615686017, -0.00012960304786248708, -0.00011952633415637247, -0.00010944962045025788, -9.937290674414327e-05, -8.929619303802866e-05, -7.921947933191406e-05, -6.914276562579945e-05, -5.906605191968484e-05, -4.898933821357023e-05, -3.8912624507455626e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00013944495173048448, 'percentile_98': -6.173149714185682e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00012740280989261335, 'max': -2.8346161791623657e-05, 'mean': -8.026635359529086e-05, 'count': 86.62000274658203, 'sum': -0.006952671768882219, 'std': 1.548494314279806e-05, 'median': -8.017032674466592e-05, 'majority': -0.00012740280989261335, 'minority': -0.00012740280989261335, 'unique': 115.0, 'histogram': [[4, 3, 5, 16, 30, 32, 9, 9, 5, 2], [-0.00012740280989261335, -0.00011749714508251438, -0.0001075914802724154, -9.768581546231644e-05, -8.778015065221747e-05, -7.78744858421185e-05, -6.796882103201954e-05, -5.806315622192056e-05, -4.815749141182159e-05, -3.8251826601722614e-05, -2.8346161791623657e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00012013012799980257, 'percentile_98': -4.7438238898632615e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -7.559188637249618e-05, 'max': 1.5475180513715358e-05, 'mean': -1.3546911579380317e-05, 'count': 86.62000274658203, 'sum': -0.001173433518213627, 'std': 1.620359275629394e-05, 'median': -1.1386375687512626e-05, 'majority': -7.559188637249618e-05, 'minority': -7.559188637249618e-05, 'unique': 115.0, 'histogram': [[3, 2, 2, 4, 3, 6, 28, 32, 23, 12], [-7.559188637249618e-05, -6.648517968387502e-05, -5.737847299525388e-05, -4.827176630663272e-05, -3.9165059618011566e-05, -3.0058352929390413e-05, -2.0951646240769254e-05, -1.1844939552148109e-05, -2.73823286352695e-06, 6.368473825094209e-06, 1.5475180513715358e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -6.56740828809353e-05, 'percentile_98': 9.818050408691993e-06}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -3.5119286720466285e-05, 'max': 3.6720805854810556e-05, 'mean': -4.01986882736388e-06, 'count': 86.62000274658203, 'sum': -0.0003482010488671588, 'std': 1.2930089975850738e-05, 'median': -5.748787221072529e-06, 'majority': -3.5119286720466285e-05, 'minority': -3.5119286720466285e-05, 'unique': 115.0, 'histogram': [[4, 6, 10, 30, 21, 14, 14, 6, 8, 2], [-3.5119286720466285e-05, -2.79352774629386e-05, -2.075126820541092e-05, -1.3567258947883238e-05, -6.383249690355553e-06, 8.007595671721319e-07, 7.98476882469981e-06, 1.5168778082227495e-05, 2.235278733975518e-05, 2.9536796597282857e-05, 3.6720805854810556e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -3.1207465337933084e-05, 'percentile_98': 2.4090088250820796e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -7.682738067855773e-05, 'max': 3.1010669269776924e-05, 'mean': -2.4545104974686847e-05, 'count': 86.62000274658203, 'sum': -0.002126097060322519, 'std': 2.1145460098847803e-05, 'median': -2.2887761043306587e-05, 'majority': -7.682738067855773e-05, 'minority': -7.682738067855773e-05, 'unique': 115.0, 'histogram': [[6, 6, 5, 11, 24, 24, 16, 11, 8, 4], [-7.682738067855773e-05, -6.604357568372426e-05, -5.52597706888908e-05, -4.447596569405734e-05, -3.369216069922387e-05, -2.29083557043904e-05, -1.2124550709556944e-05, -1.3407457147234756e-06, 9.443059280109993e-06, 2.0226864274943462e-05, 3.1010669269776924e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -7.221507945148222e-05, 'percentile_98': 1.4580285108430741e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.0001739888434708829, 'max': 1.6746078754854247e-05, 'mean': -5.059342357342047e-05, 'count': 86.62000274658203, 'sum': -0.004382402488888669, 'std': 4.0345096987067046e-05, 'median': -3.928963272902391e-05, 'majority': -0.0001739888434708829, 'minority': -0.0001739888434708829, 'unique': 115.0, 'histogram': [[4, 7, 3, 4, 3, 5, 24, 35, 20, 10], [-0.0001739888434708829, -0.00015491535124830918, -0.00013584185902573546, -0.00011676836680316177, -9.769487458058805e-05, -7.862138235801433e-05, -5.954789013544062e-05, -4.0474397912866915e-05, -2.1400905690293194e-05, -2.327413467719474e-06, 1.6746078754854247e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00016102732716132643, 'percentile_98': 9.356727631679761e-07}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00014633795621411537, 'max': 2.3441603978065428e-05, 'mean': -4.048992711367719e-05, 'count': 86.62000274658203, 'sum': -0.0035072375977956245, 'std': 3.2765846677913356e-05, 'median': -3.3813016984752075e-05, 'majority': -0.00014633795621411537, 'minority': -0.00014633795621411537, 'unique': 115.0, 'histogram': [[2, 3, 3, 8, 7, 20, 19, 31, 13, 9], [-0.00014633795621411537, -0.0001293600001948973, -0.00011238204417567921, -9.540408815646113e-05, -7.842613213724305e-05, -6.144817611802497e-05, -4.4470220098806896e-05, -2.7492264079588818e-05, -1.0514308060370739e-05, 6.4636479588473395e-06, 2.3441603978065428e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00012357318220284085, 'percentile_98': 8.184955528085216e-06}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00012790116405794549, 'max': -7.347870322049863e-06, 'mean': -5.153682952589357e-05, 'count': 86.62000274658203, 'sum': -0.004464120315083031, 'std': 2.5396023776703976e-05, 'median': -4.8605161545713946e-05, 'majority': -0.00012790116405794549, 'minority': -0.00012790116405794549, 'unique': 115.0, 'histogram': [[3, 2, 4, 7, 11, 16, 18, 17, 24, 13], [-0.00012790116405794549, -0.00011584583468435592, -0.00010379050531076635, -9.17351759371768e-05, -7.967984656358724e-05, -6.762451718999767e-05, -5.556918781640812e-05, -4.3513858442818554e-05, -3.145852906922899e-05, -1.9403199695639423e-05, -7.347870322049863e-06]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.0001218894177271193, 'percentile_98': -1.5472465731372054e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00013921063076278585, 'max': -3.5765228838438095e-05, 'mean': -8.583485395473218e-05, 'count': 86.62000274658203, 'sum': -0.007435015285311369, 'std': 2.0287396476037552e-05, 'median': -8.360445823023726e-05, 'majority': -0.00013921063076278585, 'minority': -0.00013921063076278585, 'unique': 115.0, 'histogram': [[3, 8, 9, 8, 16, 22, 25, 16, 5, 3], [-0.00013921063076278585, -0.00012886609057035107, -0.0001185215503779163, -0.00010817701018548153, -9.783246999304675e-05, -8.748792980061198e-05, -7.714338960817721e-05, -6.679884941574243e-05, -5.645430922330766e-05, -4.610976903087288e-05, -3.5765228838438095e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.0001321436861733554, 'percentile_98': -4.9478961179763185e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00011453414031127196, 'max': -2.5153009306526816e-05, 'mean': -5.606484279560035e-05, 'count': 86.62000274658203, 'sum': -0.004856336836941592, 'std': 1.3576859561140137e-05, 'median': -5.2092425995657114e-05, 'majority': -0.00011453414031127196, 'minority': -0.00011453414031127196, 'unique': 115.0, 'histogram': [[2, 2, 3, 1, 5, 18, 27, 39, 14, 4], [-0.00011453414031127196, -0.00010559602721079744, -9.665791411032294e-05, -8.771980100984842e-05, -7.87816879093739e-05, -6.984357480889939e-05, -6.090546170842488e-05, -5.196734860795037e-05, -4.302923550747585e-05, -3.409112240700133e-05, -2.5153009306526816e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -9.761120728455703e-05, 'percentile_98': -3.4258626892058585e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00021918676108497462, 'max': -3.927832631416977e-05, 'mean': -0.00012144348425158578, 'count': 86.62000274658203, 'sum': -0.010519434939426852, 'std': 2.9769797386936854e-05, 'median': -0.00011626481094279005, 'majority': -0.00021918676108497462, 'minority': -0.00021918676108497462, 'unique': 115.0, 'histogram': [[5, 2, 5, 6, 12, 35, 28, 12, 8, 2], [-0.00021918676108497462, -0.00020119591760789414, -0.00018320507413081366, -0.00016521423065373315, -0.00014722338717665267, -0.0001292325436995722, -0.0001112417002224917, -9.32508567454112e-05, -7.526001326833072e-05, -5.726916979125024e-05, -3.927832631416977e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.0002064151684468108, 'percentile_98': -6.805256999965305e-05}}}}
-{'type': 'Feature', 'geometry': {'type': 'Polygon', 'coordinates': [[[-124.19, 37.86], [-123.11, 37.86], [-119.96, 33.16], [-121.13, 33.16], [-124.19, 37.86]]]}, 'properties': {'statistics': {'b1': {'min': -0.00015412138841721786, 'max': -3.145271371838777e-05, 'mean': -9.593350082157177e-05, 'count': 86.62000274658203, 'sum': -0.008309760104653776, 'std': 2.9374048721393294e-05, 'median': -8.783572604921066e-05, 'majority': -0.00015412138841721786, 'minority': -0.00015412138841721786, 'unique': 115.0, 'histogram': [[10, 10, 11, 3, 15, 28, 20, 9, 5, 4], [-0.00015412138841721786, -0.00014185452094733484, -0.00012958765347745183, -0.00011732078600756883, -0.00010505391853768583, -9.278705106780281e-05, -8.05201835979198e-05, -6.825331612803679e-05, -5.5986448658153776e-05, -4.371958118827076e-05, -3.145271371838777e-05]], 'valid_percent': 31.94, 'masked_pixels': 245.0, 'valid_pixels': 115.0, 'percentile_2': -0.00015409053848538357, 'percentile_98': -4.834538500993245e-05}}}}
-CPU times: user 132 ms, sys: 21.5 ms, total: 154 ms
-Wall time: 11.8 s
-
-
-
-

Time-Series Analysis

-

You can now explore the fossil fuel emission using this data collection (January 2020 -December 2022) for the Coastal California region. You can plot the data set using the code below:

-
-
# Sort the DataFrame by the datetime column so the plot displays the values from left to right (2020 -> 2022)
-df_sorted = df.sort_values(by="datetime")
-
-# Change which_stat to reflect which statistic you want to visualize in your time series plot - mean, min, max, etc.
-which_stat = "max"
-
-# Plot the timeseries analysis of the monthly air-sea COβ‚‚ flux changes over the AOI
-# Figure size: width of 10, height of 5
-fig = plt.figure(figsize=(10,5))
-plt.plot(
-    [d[0:7] for d in df_sorted["datetime"]],    # X-axis: sorted datetime, showing YYYY-MM only
-    df_sorted[which_stat],         # Y-axis: maximum COβ‚‚ value
-    color="#118AB2",           # Line color, in hex format
-    linestyle="-",            # Line style
-    linewidth=2,              # Line width
-    label=f"{items[0].assets[asset_name].title}",    # Legend label
-)
-
-# Set axis labels
-plt.xlabel("Month")
-plt.ylabel(f"{items[0].assets[asset_name].title} (mmol mΒ²/s)")
-
-# Rotate x-axis labels to avoid cramping
-plt.xticks(rotation=45,ha='right')
-
-# Set plot title
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} for {aoi_name} (2020-2022)")
-
-# Insert legend
-plt.legend()
-
-# Add data citation
-plt.text(
-    min([d[0:7] for d in df_sorted["datetime"]][:]),           # X-coordinate of the text (first datetime value)
-    df_sorted[which_stat].min(),                  # Y-coordinate of the text (minimum CO2 value)
-
-    # Text to be displayed
-    f"{collection.title}",                   
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="bottom",              # Vertical alignment
-    color="blue",                            # Text color
-)
-
-# Display the plot
-plt.show()
-
-
-
-

-
-
-
-
-

Here we can see the seasonal cycle of air-sea CO2 flux off the coast of California over the three relevant years.

-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the NASA Air-Sea COβ‚‚ Flux ECCO Darwin dataset: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the COβ‚‚ Flux levels over the Coastal California area for two distinctive months/years 5. Create a table that displays the minimum, maximum, and sum of the COβ‚‚ Flux values for a specified region 6. Generate a time-series graph of the COβ‚‚ Flux values for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook_files/figure-html/cell-23-output-1.png b/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook_files/figure-html/cell-23-output-1.png deleted file mode 100644 index e751d21..0000000 Binary files a/_site/user_data_notebooks/eccodarwin-co2flux-monthgrid-v5_User_Notebook_files/figure-html/cell-23-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html b/_site/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html deleted file mode 100644 index 8150521..0000000 --- a/_site/user_data_notebooks/emit-ch4plume-v1_User_Notebook.html +++ /dev/null @@ -1,4136 +0,0 @@ - - - - - - - - - - - -EMIT Methane Point Source Plume Complexes – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

EMIT Methane Point Source Plume Complexes

-
- -
-
- Daily aggregated, global point source methane emission plume estimates from the EMIT instrument on the International Space Station (ISS) -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur, Farnaz Bayat

-
-
- -
-
Published
-
-

September 20, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the EMIT Methane Point Source Plume Complexes notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: 52Β°N to 52Β°S latitude within target mask
  • -
  • Spatial resolution: 60 m
  • -
  • Temporal extent: August 1, 2022 - Ongoing
  • -
  • Temporal resolution: Variable (based on ISS orbit, solar illumination, and target mask)
  • -
  • Unit: Parts per million meter (ppm-m)
  • -
  • Utility: Methane Emissions, Plume Detection, Climate Monitoring
  • -
-

For more, visit the EMIT Methane Point Source Plume Complexes data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Earth Surface Mineral Dust Source Investigation (EMIT) methane emission plumes data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.Map, visualize the plumes.
  6. -
  7. After the visualization, perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

EMIT Methane Point Source Plume Complexes

-

The Earth Surface Mineral Dust Source Investigation (EMIT) instrument builds upon NASA’s long history of developing advanced imaging spectrometers for new science and applications. EMIT launched to the International Space Station (ISS) on July 14, 2022. The data shows high-confidence research grade methane plumes from point source emitters - updated as they are identified - in keeping with Jet Propulsion Laboratory (JPL) Open Science and Open Data policy.

-

Large methane emissions, typically referred to as point source emissions, represent a significant proportion of total methane emissions from the production, transport, and processing of oil and natural gas, landfills, and other sources. By measuring the spectral fingerprint of methane, EMIT can map areas of high methane concentration over background levels in the atmosphere, identifying plume complexes, and estimating the methane enhancements.

-

For more information regarding this dataset, please visit the EMIT Methane Point Source Plume Complexes data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. EMIT Methane Point Source Plume Complexes - item: One granule in the dataset, e.g. one file of EMIT data - asset: A variable available within the granule, e.g. CH4 plume emissions - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub, except the tabulate and seaborn libraries. If you need to run this notebook elsewhere, please install the libraries by running the following command line:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the EMIT Methane Point Source Plume Complexes dataset is emit-ch4plume-v1*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-collection_name = "emit-ch4plume-v1"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we note that data is available from August 2022 to May 2023. By looking at the dashboard: time density, we can see that observations are conducted daily and non-periodically (i.e., there are plumes emissions for multiple places on the same dates).

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 1574 items
-
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2023-08-24T00:00:00Z','2023-08-26T00:00:00Z']
-)
-# Take a look at the items we found
-print(f"# items in date range: {len(search.item_collection())}")
-for item in search.item_collection():
-    print(item)
-
-
# items in date range: 24
-<Item id=EMIT_L2B_CH4PLM_001_20230825T170609_001111>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T170609_001109>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T170557_001108>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T075005_001115>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T075005_001114>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T074743_001112>
-<Item id=EMIT_L2B_CH4PLM_001_20230825T061313_001116>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T175401_001039>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T175337_001038>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T175337_001037>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T175337_001036>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T083931_001044>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T083907_001045>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001053>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001052>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001051>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001050>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001049>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070101_001048>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070049_001193>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070049_001059>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070049_001058>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070049_001057>
-<Item id=EMIT_L2B_CH4PLM_001_20230824T070037_001061>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-search_items = search.item_collection()
-search_items[0]
-
- - - - -
-
-

Note from the list of items that there can be multiple plumes detected at the same datetime:

-
-
for item in search_items:
-    print(item.properties["datetime"])
-
-
2023-08-25T17:06:09Z
-2023-08-25T17:06:09+00:00
-2023-08-25T17:05:57+00:00
-2023-08-25T07:50:05+00:00
-2023-08-25T07:50:05+00:00
-2023-08-25T07:47:43+00:00
-2023-08-25T06:13:13+00:00
-2023-08-24T17:54:01+00:00
-2023-08-24T17:53:37+00:00
-2023-08-24T17:53:37+00:00
-2023-08-24T17:53:37+00:00
-2023-08-24T08:39:31+00:00
-2023-08-24T08:39:07+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:01:01+00:00
-2023-08-24T07:00:49+00:00
-2023-08-24T07:00:49+00:00
-2023-08-24T07:00:49+00:00
-2023-08-24T07:00:49+00:00
-2023-08-24T07:00:37+00:00
-
-
-

For this reason, we will use the item id to reference the items specifically. Let’s make a dictionary where we can do this more efficiently:

-
-
items_dict = {item.id[20::]: item for item in search_items}
-# Print the keys of our dictionary, which we'll use to reference specific plumes
-print(items_dict.keys())
-
-
dict_keys(['20230825T170609_001111', '20230825T170609_001109', '20230825T170557_001108', '20230825T075005_001115', '20230825T075005_001114', '20230825T074743_001112', '20230825T061313_001116', '20230824T175401_001039', '20230824T175337_001038', '20230824T175337_001037', '20230824T175337_001036', '20230824T083931_001044', '20230824T083907_001045', '20230824T070101_001053', '20230824T070101_001052', '20230824T070101_001051', '20230824T070101_001050', '20230824T070101_001049', '20230824T070101_001048', '20230824T070049_001193', '20230824T070049_001059', '20230824T070049_001058', '20230824T070049_001057', '20230824T070037_001061'])
-
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook. 
-# This dataset only has one asset to choose from:
-asset_name = "ch4-plume-emissions"
-
-
-
-

Creating Maps using Folium

-

You will now explore global methane emission plumes from point sources and visualize the results on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# You can change the <datetime_plumenumber> key below to look at a different plume.
-observation_date_1 = items_dict["20230825T170609_001109"]
-
-# Extract collection name and item ID
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-
-
-
object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": 0,
-}
-
-print(rescale_values)
-print(raster_bands)
-
-
{'max': 3096.197021484375, 'min': 0}
-[{'scale': 1.0, 'nodata': -9999.0, 'offset': 0.0, 'sampling': 'area', 'data_type': 'float32', 'histogram': {'max': 3096.197021484375, 'min': -2284.946044921875, 'count': 11, 'buckets': [2, 86, 937, 4291, 6402, 3583, 859, 159, 16, 8]}, 'statistics': {'mean': 116.27998225539987, 'stddev': 537.0677841963014, 'maximum': 3096.197021484375, 'minimum': -2284.946044921875, 'valid_percent': 66.29751328546509}}]
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the tiles
-# Make sure that the capitalization matches Matplotlib standards
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "plasma"
-
-
-
# Make a GET request to retrieve information for the date specified
-observation_date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale=0,1500"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/emit-ch4plume-v1/items/EMIT_L2B_CH4PLM_001_20230825T170609_001109/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ch4-plume-emissions&color_formula=gamma+r+1.05&colormap_name=plasma&rescale=0%2C1500'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-96.8337863674636,
-  32.646954057997895,
-  -96.69877046991976,
-  32.70063507750328],
- 'center': [-96.76627841869168, 32.67379456775059, 0]}
-
-
-
-
# Set initial zoom and center of map for plume Layer
-# We'll use the "center" variable from our loaded tile to set the center of the map
-# Note that we specify "tiles=None" because in the next step we're going to set a custom tile to serve as our underlying world map.
-map_ = folium.Map(location=(observation_date_1_tile["center"][1], observation_date_1_tile["center"][0]), zoom_start=12, tiles=None, tooltip = 'test tool tip')
-# Specify a custom imagery source for the underlying map
-folium.TileLayer(tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png', name='ESRI World Imagery', attr='Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',overlay='True').add_to(map_)
-# Add place labels on top
-folium.TileLayer(tiles='https://server.arcgisonline.com/arcgis/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}.png',name='ESRI World Boundaries and Places',attr='Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',overlay='True').add_to(map_)
-
-# Use the 'TileLayer' library display the raster layer
-map_layer = TileLayer(
-    tiles=observation_date_1_tile["tiles"][0], # Path to retrieve the tile
-    name=f'{items[0].assets[asset_name].title}', # Give this layer a title
-    overlay='True', # The layer can be overlaid on the map
-    attr="GHG", # Set the attribution
-    opacity=1, # Adjust the transparency of the layer
-)
-map_layer.add_to(map_)
-
-# Adjust map elements 
-folium.LayerControl(collapsed=False, position='topright').add_to(map_)
-
-# Add colorbar
-# We can use one of 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(
-                color_map,
-                rescale_values,
-                label='Methane Concentration (ppm-m)'
-    )
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-
-# Visualizing the map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the EMIT Methane Point Source Plume Complexes dataset: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map the methane emission plumes

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html b/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html deleted file mode 100644 index fdeeabf..0000000 --- a/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook.html +++ /dev/null @@ -1,46331 +0,0 @@ - - - - - - - - - - -Leveraging the U.S. Gridded Anthropogenic Methane Emissions Inventory for Monitoring Trends in Methane Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Leveraging the U.S. Gridded Anthropogenic Methane Emissions Inventory for Monitoring Trends in Methane Emissions

-
- -
-
- Spatially disaggregated 0.1Β°x 0.1Β° annual maps of U.S. anthropogenic methane emissions, consistent with the U.S. Inventory of Greenhouse Gas Emissions and Sinks -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur, Farnaz Bayat

-
-
- - - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the U.S. Gridded Anthropogenic Methane Emissions Inventory notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Contiguous United States
  • -
  • Spatial resolution: 0.1Β° x 0.1Β°
  • -
  • Temporal extent: 2012 - 2020
  • -
  • Temporal resolution: Annual
  • -
  • Unit: Megagrams of methane per square kilometer per year
  • -
  • Utility: Climate Research
  • -
-

For more, visit the U.S. Gridded Anthropogenic Methane Emissions Inventory data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

U.S. Gridded Anthropogenic Methane Emissions Inventory

-

The gridded EPA U.S. anthropogenic methane greenhouse gas inventory (gridded GHGI) includes spatially disaggregated (0.1 deg x 0.1 deg or approximately 10 x 10 km resolution) maps of annual anthropogenic methane emissions (for the contiguous United States (CONUS)), consistent with national annual U.S. anthropogenic methane emissions reported in the U.S. EPA Inventory of U.S. Greenhouse Gas Emissions and Sinks (U.S. GHGI).

-

This V2 Express Extension dataset contains methane emissions provided as fluxes, in units of molecules of methane per square cm per second, for over 25 individual emission source categories, including those from agriculture, petroleum and natural gas systems, coal mining, and waste. The data have been converted from their original NetCDF format to Cloud-Optimized GeoTIFF (COG) for use in the US GHG Center, thereby enabling user exploration of spatial anthropogenic methane emissions and their trends.

-

The gridded dataset currently includes 34 data layers. The first data layer includes annual 2012-2020 gridded methane emissions fluxes from all anthropogenic sources of methane in the U.S. GHGI (excluding Land Use, Land-Use Change and Forestry (LULUCF) sources, which are not included in the gridded GHGI). The next six data layers include annual 2012-2020 gridded methane fluxes from sources within the aggregate Agriculture, Natural Gas, Petroleum, Waste, Industry, and β€˜Other’ source categories. The remaining 27 data layers include annual 2012-2020 gridded methane emissions fluxes from individual emission sectors within each of the aggregate categories.

-

For more information regarding this dataset, please visit the U.S. Gridded Anthropogenic Methane Emissions Inventory data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. U.S. Gridded Anthropogenic Methane Emissions Inventory - item: One granule in the dataset, e.g. one yearly file of methane emissions - asset: A variable available within the granule, e.g. methane emissions from waste, coal, or agriculture - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching the data itself - Raster API: Endpoint for fetching data imagery

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub, except the tabulate library. If you need to run this notebook elsewhere, please install the libraries by running the following command line:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib tabulate –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the U.S. Gridded Anthropogenic Methane Emissions Inventory dataset is epa-ch4emission-yeargrid-v2express*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes 
-collection_name = "epa-ch4emission-yeargrid-v2express"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library makes an HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Next, you will examine the contents of the collection under the temporal variable. You’ll see that the data is available from January 2012 to December 2020. By looking at the dashboard:time density, you can observe that the periodic frequency of these observations is yearly.

-
-
# Print the number of items
-items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 9 items
-
-
-
-
# The search function allows us to look for data within a specific time range, e.g. 2012.
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2012-01-01T00:00:00Z','2012-12-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-
-
<Item id=epa-ch4emission-yeargrid-v2express-2012>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items so we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"][:4]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus on emissions from coal mines in this notebook, so our asset of interest is:
-asset_name = "total-coal-mines"
-
-
-
-
-

Creating Maps Using Folium

-

In this notebook, you will explore the impacts of methane emissions by examining changes over time. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ['2018','2012']
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-observation_date_1 = items_dict[dates[0]]
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-# Select relevant asset
-object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 1642.84814453125,
-   'min': -9999.0,
-   'count': 11.0,
-   'buckets': [243327.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1663.0, 10.0]},
-  'statistics': {'mean': -9930.62109375,
-   'stddev': 824.6806640625,
-   'maximum': 1642.84814453125,
-   'minimum': -9999.0,
-   'valid_percent': 0.0004081632653061224}}]
-
-
-
-
# -9999.0 is the value for missing data, which mucks up our ability to use the mean or stddev for a colorbar range.
-# Instead we'll just use the maximum value, and make the minimum colorbar value zero.
-rescale_values = {
-    "max": raster_bands[0]['statistics']['maximum'],
-    "min": 0,
-}
-
-print(rescale_values)
-
-
{'max': 1642.84814453125, 'min': 0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the tiles
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r"
-
-
-
# Make a GET request to retrieve information for the first date/time
-observation_date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale=0,20"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/epa-ch4emission-yeargrid-v2express/items/epa-ch4emission-yeargrid-v2express-2018/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=total-coal-mines&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C20'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-129.99999694387628,
-  19.99999923487448,
-  -60.00000305612369,
-  55.00000076512553],
- 'center': [-94.99999999999999, 37.5, 0]}
-
-
-
-
# Make a GET request to retrieve information for the second date/time
-observation_date_2 = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-
-observation_date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale=0,20"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/epa-ch4emission-yeargrid-v2express/items/epa-ch4emission-yeargrid-v2express-2012/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=total-coal-mines&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C20'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-129.99999694387628,
-  19.99999923487448,
-  -60.00000305612369,
-  55.00000076512553],
- 'center': [-94.99999999999999, 37.5, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(38.9, -80.0), zoom_start=6)
-
-# Define the first map layer (January 2018)
-map_layer_2018 = TileLayer(
-    tiles=observation_date_1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    name='January 2018', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.7, # Adjust the transparency of the layer
-)
-
-# Add the first layer to the Dual Map
-# This will appear on the left side, specified by 'm1'
-map_layer_2018.add_to(map_.m1)
-
-# Define the second map layer (January 2012)
-map_layer_2012 = TileLayer(
-    tiles=observation_date_2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    name='January 2012', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.7, # Adjust the transparency of the layer
-)
-
-# Add the second layer to the Dual Map
-# This will appear on the left side, specified by 'm2'
-map_layer_2012.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use one of 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label="molecules CHβ‚„/cmΒ²/s")
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
<<<<<<< local <modified: text/html, text/plain>
-
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
=======
-
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
>>>>>>> remote <modified: text/html, text/plain>
->>>>>>> remote <removed>
-
-
-

Observe from this that the southern end of the Appalachian Mountains saw somewhat of a decrease in methane emissions from coal mines between 2012 and 2018.

-
-
-
-

Calculate Zonal Statistics

-

To perform zonal statistics, we first need to create a polygon. In this use case, we’ve specified a polygon over the Pittsburgh, Pennsylvania region.

-
-
# Give the AOI a name to use in your plot title later on
-aoi_name = "Pittsburgh, PA"
-# Pittsburgh, PA, USA
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-79.4, 39.9], # South-east bounding coordinate
-                [-79.4, 40.9], # North-east bounding coordinate
-                [-80.5, 40.9], # North-west bounding coordinate
-                [-80.5, 39.9], # South-west bounding coordinate
-                [-79.4, 39.9]  # South-east bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-

Generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 27 ms, sys: 4.2 ms, total: 31.2 ms
-Wall time: 956 ms
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02020-01-01T00:00:00Z0.000000000000000734601312.8009033203125000000036.8880157470703125000069.000000000000000000002545.27319335937500000000204.327020361967782946520.000000000054104991320.000000000054104991320.0000000000000007346051.00000000000000000000[[67, 0, 0, 0, 0, 0, 0, 0, 1, 1], [7.345994349...52.2700000000000031263963.0000000000000000000069.000000000000000000000.000000000000002448631117.677001953125000000002020-01-01 00:00:00+00:00
12019-01-01T00:00:00+00:000.000000000000000752901470.9576416015625000000041.0580024719238281250069.000000000000000000002833.00219726562500000000228.259515135733181523390.000000000055452527990.000000000055452527990.0000000000000007529051.00000000000000000000[[67, 0, 0, 0, 0, 0, 0, 0, 1, 1], [7.528953466...52.2700000000000031263963.0000000000000000000069.000000000000000000000.000000000000002509611243.222290039062500000002019-01-01 00:00:00+00:00
22018-01-01T00:00:00+00:000.000000000000000786601642.8481445312500000000045.8129348754882812500069.000000000000000000003161.09252929687500000000255.321281978706196014170.000000000057935160140.000000000057935160140.0000000000000007866051.00000000000000000000[[67, 0, 0, 0, 0, 0, 0, 0, 1, 1], [7.866027580...52.2700000000000031263963.0000000000000000000069.000000000000000000000.000000000000002621971393.429443359375000000002018-01-01 00:00:00+00:00
32017-01-01T00:00:00+00:000.000000000000001592731504.9259033203125000000042.4733619689941406250069.000000000000000000002930.66186523437500000000234.001944770230494441420.000000000117308565640.000000000117308565640.0000000000000015927352.00000000000000000000[[67, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1.592733013...52.2700000000000031263963.0000000000000000000069.000000000000000000000.000000000000005309031278.660156250000000000002017-01-01 00:00:00+00:00
42016-01-01T00:00:00+00:000.000000000000003226351290.3424072265625000000036.0925140380859375000070.000000000000000000002526.47607421875000000000194.175369753092013525020.000000025004677439710.000000000000107618320.0000000000000032263555.00000000000000000000[[68, 0, 0, 0, 0, 0, 0, 1, 0, 1], [3.226349978...53.0300000000000011368762.0000000000000000000070.000000000000000000000.000000000000010754331029.933471679687500000002016-01-01 00:00:00+00:00
- -
-
-
-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Generate statistics using the created function "generate_stats" within the bounding box defined by the polygon
-stats = {}
-for item in items: 
-    date = item["properties"]["datetime"]  # Get the associated date
-    year = date[:4]  # Convert datetime to year
-    stats[year] = generate_stats(item, aoi)
-
-
CPU times: user 29.4 ms, sys: 102 Β΅s, total: 29.5 ms
-Wall time: 1.9 s
-
-
-
-
%%time
-
-
-
-

Time-Series Analysis

-

You can now explore the time series (January 2000 -December 2021) of your chosen asset for the specified AOI. You can plot the data set using the code below:

-
-
# Ensure 'datetime' column is in datetime format
-df['datetime'] = pd.to_datetime(df['datetime'])
-
-# Sort the DataFrame by the datetime column so the plot displays the values from left to right (2020 -> 2022)
-df_sorted = df.sort_values(by="datetime")
-
-# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(10, 5))
-
-# Use which_stat to determine which value you would like to plot in the time series - min, max, mean etc.
-which_stat = "max"
-
-plt.plot(
-    df["date"], # X-axis: sorted date
-    df[which_stat],  # Y-axis: maximum CH4 emission
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{which_stat.capitalize()} CH$_4$ emissions", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("molecules CHβ‚„/cmΒ²/s")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} CH$_4$ emissions from {items[0].assets[asset_name].title} for {aoi_name} AOI")
-
-
-# Add data citation
-plt.text(
-    df_sorted["datetime"].iloc[1],           # X-coordinate of the text 
-    df_sorted[which_stat].min(),             # Y-coordinate of the text 
-
-    # Text to be displayed
-    f"Source: {collection.title}",                   
-    fontsize=8,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="bottom",              # Vertical alignment
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the U.S. Gridded Anthropogenic Methane Emissions Inventory dataset:

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the anthropogenic methane emissions for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Generate a time-series graph of the anthropogenic methane emissions for a specified region
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook_files/figure-html/cell-21-output-1.png b/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook_files/figure-html/cell-21-output-1.png deleted file mode 100644 index 345189b..0000000 Binary files a/_site/user_data_notebooks/epa-ch4emission-grid-v2express_User_Notebook_files/figure-html/cell-21-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/goes-ch4plume-v1_User_Notebook.html b/_site/user_data_notebooks/goes-ch4plume-v1_User_Notebook.html deleted file mode 100644 index 618a9b9..0000000 --- a/_site/user_data_notebooks/goes-ch4plume-v1_User_Notebook.html +++ /dev/null @@ -1,4453 +0,0 @@ - - - - - - - - - - - - -Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure

-
- -
-
- A sample of methane plumes from point sources observed since 2019 by the U.S. Geostationary Operational Environmental Satellites (GOES) over North and South America. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary

-
-
- -
-
Published
-
-

November 15, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: North and South America
  • -
  • Spatial resolution: 1 km x 1 km (nadir)
  • -
  • Temporal extent: April 7, 2019 - July 26, 2023
  • -
  • Temporal resolution: 5 minutes
  • -
  • Unit: Total column methane enhancement above background, moles of methane per square meter
  • -
  • Utility: Climate Research
  • -
-

For more, visit the Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.jsonendpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
-
-
-

About the Data

-
-

Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure

-

A sample of methane plumes from point sources observed since 2019 by the U.S. Geostationary Operational Environmental Satellites (GOES) over North and South America.

-

For more information regarding this dataset, please visit the Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure - item: One granule in the dataset, e.g. one file of GOES observations - asset: A variable available within the granule, e.g. COβ‚‚ fluxes - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure dataset is goes-ch4plume-v1.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Please use the collection name similar to the one used in STAC collection.
-
-# Name of the collection for gosat budget methane. 
-collection_name = "goes-ch4plume-v1"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library enables an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available starting April 7, 2019 . By looking at the dashboard:time density, we observe that the data is available for multiple days.

-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2019-05-11T00:00:00Z','2019-05-13T00:00:00Z']
-)
-items = search.item_collection()
-# Print how many items we found in our search
-print(f"# items found: {len(items)}")
-
-
# items found: 52
-
-
-
-
for item in items:
-    print(item.properties["datetime"])
-
-
2019-05-12T19:41:00+00:00
-2019-05-12T19:36:00+00:00
-2019-05-12T19:31:00+00:00
-2019-05-12T19:26:00+00:00
-2019-05-12T19:21:00+00:00
-2019-05-12T19:16:00+00:00
-2019-05-12T19:11:00+00:00
-2019-05-12T19:06:00+00:00
-2019-05-12T19:01:00+00:00
-2019-05-12T18:56:00+00:00
-2019-05-12T18:51:00+00:00
-2019-05-12T18:46:00+00:00
-2019-05-12T18:41:00+00:00
-2019-05-12T18:36:00+00:00
-2019-05-12T18:31:00+00:00
-2019-05-12T18:26:00+00:00
-2019-05-12T18:21:00+00:00
-2019-05-12T18:16:00+00:00
-2019-05-12T18:11:00+00:00
-2019-05-12T18:06:00+00:00
-2019-05-12T18:01:00+00:00
-2019-05-12T17:56:00+00:00
-2019-05-12T17:51:00+00:00
-2019-05-12T17:46:00+00:00
-2019-05-12T17:41:00+00:00
-2019-05-12T17:36:00+00:00
-2019-05-12T17:31:00+00:00
-2019-05-12T17:26:00+00:00
-2019-05-12T17:21:00+00:00
-2019-05-12T17:16:00+00:00
-2019-05-12T17:11:00+00:00
-2019-05-12T17:06:00+00:00
-2019-05-12T17:01:00+00:00
-2019-05-12T16:56:00+00:00
-2019-05-12T16:51:00+00:00
-2019-05-12T16:46:00+00:00
-2019-05-12T16:41:00+00:00
-2019-05-11T16:11:00+00:00
-2019-05-11T16:06:00+00:00
-2019-05-11T16:01:00+00:00
-2019-05-11T15:56:00+00:00
-2019-05-11T15:51:00+00:00
-2019-05-11T15:46:00+00:00
-2019-05-11T15:41:00+00:00
-2019-05-11T15:36:00+00:00
-2019-05-11T15:31:00+00:00
-2019-05-11T15:26:00+00:00
-2019-05-11T15:21:00+00:00
-2019-05-11T15:16:00+00:00
-2019-05-11T15:11:00+00:00
-2019-05-11T15:06:00+00:00
-2019-05-11T15:01:00+00:00
-
-
-
-
# Examining the first item in the collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"]: item for item in items} 
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# This dataset only has one variable, so our asset is:
-asset_name = "rad"
-
-
-
-
-

Creating Maps Using Folium

-

You will now visualize the evolution of a methane plume across for three different time steps using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Take a look at the datetime options we have to choose from based on our search
-list(items_dict.keys())
-
-
['2019-05-12T19:41:00Z',
- '2019-05-12T19:36:00+00:00',
- '2019-05-12T19:31:00+00:00',
- '2019-05-12T19:26:00+00:00',
- '2019-05-12T19:21:00+00:00',
- '2019-05-12T19:16:00+00:00',
- '2019-05-12T19:11:00+00:00',
- '2019-05-12T19:06:00+00:00',
- '2019-05-12T19:01:00+00:00',
- '2019-05-12T18:56:00+00:00',
- '2019-05-12T18:51:00+00:00',
- '2019-05-12T18:46:00+00:00',
- '2019-05-12T18:41:00+00:00',
- '2019-05-12T18:36:00+00:00',
- '2019-05-12T18:31:00+00:00',
- '2019-05-12T18:26:00+00:00',
- '2019-05-12T18:21:00+00:00',
- '2019-05-12T18:16:00+00:00',
- '2019-05-12T18:11:00+00:00',
- '2019-05-12T18:06:00+00:00',
- '2019-05-12T18:01:00+00:00',
- '2019-05-12T17:56:00+00:00',
- '2019-05-12T17:51:00+00:00',
- '2019-05-12T17:46:00+00:00',
- '2019-05-12T17:41:00+00:00',
- '2019-05-12T17:36:00+00:00',
- '2019-05-12T17:31:00+00:00',
- '2019-05-12T17:26:00+00:00',
- '2019-05-12T17:21:00+00:00',
- '2019-05-12T17:16:00+00:00',
- '2019-05-12T17:11:00+00:00',
- '2019-05-12T17:06:00+00:00',
- '2019-05-12T17:01:00+00:00',
- '2019-05-12T16:56:00+00:00',
- '2019-05-12T16:51:00+00:00',
- '2019-05-12T16:46:00+00:00',
- '2019-05-12T16:41:00+00:00',
- '2019-05-11T16:11:00+00:00',
- '2019-05-11T16:06:00+00:00',
- '2019-05-11T16:01:00+00:00',
- '2019-05-11T15:56:00+00:00',
- '2019-05-11T15:51:00+00:00',
- '2019-05-11T15:46:00+00:00',
- '2019-05-11T15:41:00+00:00',
- '2019-05-11T15:36:00+00:00',
- '2019-05-11T15:31:00+00:00',
- '2019-05-11T15:26:00+00:00',
- '2019-05-11T15:21:00+00:00',
- '2019-05-11T15:16:00+00:00',
- '2019-05-11T15:11:00+00:00',
- '2019-05-11T15:06:00+00:00',
- '2019-05-11T15:01:00+00:00']
-
-
-
-
# Specify dates/times to visualize
-# We'll select three observations, each 15 minutes apart
-datetimes = ["2019-05-12T17:21:00+00:00","2019-05-12T17:36:00+00:00","2019-05-12T17:51:00+00:00"]
-
-
-
# Extract collection name and item ID for the first date
-observation_date_1 = items_dict[datetimes[0]]
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-# Select relevant asset and get raster bands
-object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print the raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': 0.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 0.27649252674814284,
-   'min': -0.10735534384080142,
-   'count': 11,
-   'buckets': [3, 4, 11, 19, 28, 19, 18, 6, 6, 4]},
-  'statistics': {'mean': 0.08132970903405966,
-   'stddev': 0.07654679032735916,
-   'maximum': 0.27649252674814284,
-   'minimum': -0.10735534384080142,
-   'valid_percent': 51.75438596491229}}]
-
-
-
-
# Use min and max to define desired colorbar range
-rescale_values = {
-    "max": raster_bands[0]['statistics']['maximum'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 0.27649252674814284, 'min': -0.10735534384080142}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is required for every date/time you want to visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure capitilization follows Matplotlib standard practice
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "plasma" # please select the color ramp from matplotlib library.
-
-
-
items.keys()
-
-
-
# Make a GET request to retrieve information for your first date/time
-observation_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-).json()
-# Print the resulting JSON
-observation_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/goes-ch4plume-v1/items/goes-ch4plume-v1-GOES-CH4_Mexico_Durango_BV2_BV2-5_2019-05-12T17:21:00Z/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=rad&color_formula=gamma+r+1.05&colormap_name=plasma&rescale=-0.10735534384080142%2C0.27649252674814284'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-104.38926051070443,
-  26.073879500563976,
-  -104.11975109944395,
-  26.24409597083376],
- 'center': [-104.25450580507419, 26.15898773569887, 0]}
-
-
-
-
# Repeat the previous step, fetching the tiles for the second and third datetimes of interest
-observation_date_2 = items_dict[datetimes[1]]
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-observation_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-).json()
-
-
-
observation_date_3 = items_dict[datetimes[2]]
-collection_id = observation_date_3.collection_id
-item_id = observation_date_3.id
-observation_3_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-).json()
-
-
-
-

Generate Map

-
-
# Set initial zoom and center of map
-# We'll use the "center" variable from our first methane plume tile to set the center of the map
-# Note that we specify "tiles=None" because in the next step we're going to set a custom tile to serve as our underlying world map.
-map_ = folium.Map(
-    location=(observation_1_tile["center"][1], observation_1_tile["center"][0]), 
-    zoom_start=9, 
-    tiles=None
-)
-
-# Specify a custom imagery source for the underlying map
-folium.TileLayer(
-    tiles='https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.png', 
-    name='ESRI World Imagery', 
-    attr='Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',
-    overlay='True').add_to(map_)
-
-# Add place labels on top
-folium.TileLayer(tiles='https://server.arcgisonline.com/arcgis/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}.png',
-                 name='ESRI World Boundaries and Places',
-                 attr='Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community',
-                 overlay='True').add_to(map_)
-
-# Use the 'TileLayer' library to create the map layer for your first date/time tile
-map_layer = TileLayer(
-    tiles=observation_1_tile["tiles"][0], # Path to retrieve the tile
-    name=f'{items_dict[datetimes[0]].assets[asset_name].title}, {items_dict[datetimes[0]].properties["datetime"]}', # Give this layer a title
-    overlay='True', # The layer can be overlaid on the map
-    attr="GHG", # Set the attribution
-    opacity=1, # Adjust the transparency of the layer
-)
-# Add layer to the map
-map_layer.add_to(map_)
-
-# Repeat for second date/time tile
-map_layer = TileLayer(
-    tiles=observation_2_tile["tiles"][0], # Path to retrieve the tile
-    name=f'{items_dict[datetimes[1]].assets[asset_name].title}, {items_dict[datetimes[1]].properties["datetime"]}', # Give this layer a title
-    overlay='True', # The layer can be overlaid on the map
-    attr="GHG", # Set the attribution
-    opacity=1, # Adjust the transparency of the layer
-)
-map_layer.add_to(map_)
-
-# And finally for the third date/time tile
-map_layer = TileLayer(
-    tiles=observation_3_tile["tiles"][0], # Path to retrieve the tile
-    name=f'{items_dict[datetimes[2]].assets[asset_name].title}, {items_dict[datetimes[2]].properties["datetime"]}', # Give this layer a title
-    overlay='True', # The layer can be overlaid on the map
-    attr="GHG", # Set the attribution
-    opacity=1, # Adjust the transparency of the layer
-)
-map_layer.add_to(map_)
-
-# Add controls to switch elements of the map on/off
-folium.LayerControl(collapsed=False, position='topright').add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(
-                color_map,
-                rescale_values,
-                label='Methane Column Enhancement (mol/m2)'
-    )
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-
-# Visualizing the map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Click through the three methane layers to see the evolution of this plume over time!

-
-
# Set initial zoom and center of map for CHβ‚„ Layer
-# Centre of map [latitude,longitude]
-map_ = folium.Map(location=(26.29, -104.53), zoom_start=10)
-
-# April 2019
-map_layer_2019 = TileLayer(
-    tiles=april_2019_tile["tiles"][0],
-    attr="GHG",
-    opacity=0.7,
-)
-map_layer_2019.add_to(map_)
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the GOSAT-based Top-down Total and Natural Methane Emissions dataset.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map the methane emission levels
  8. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html b/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html deleted file mode 100644 index 4c00de2..0000000 --- a/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook.html +++ /dev/null @@ -1,8524 +0,0 @@ - - - - - - - - - - - - -GOSAT-based Top-down Total and Natural Methane Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GOSAT-based Top-down Total and Natural Methane Emissions

-
- -
-
- Total and wetland yearly methane emissions derived using the GEOS-Chem global chemistry transport model with inclusion of GOSAT data for 2010 to 2022 on a 4Β°(latitude) x 5Β°(longitude) grid -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

November 15, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the GOSAT-based Top-down Total and Natural Methane Emissions notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 4Β° x 5Β°
  • -
  • Temporal extent: 2010 - 2022
  • -
  • Temporal resolution: Annual
  • -
  • Unit: Teragrams of methane per yea
  • -
  • Utility: Climate Research
  • -
-

For more, visit the GOSAT-based Top-down Total and Natural Methane Emissions data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the gridded methane emissions data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.jsonendpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

GOSAT-based Top-down Total and Natural Methane Emissions

-

The NASA Carbon Monitoring System Flux (CMS-Flux) team analyzed remote sensing observations from Japan’s Greenhouse gases Observing SATellite (GOSAT) to produce the global Committee on Earth Observation Satellites (CEOS) CHβ‚„ Emissions data product. They used an analytic Bayesian inversion approach and the GEOS-Chem global chemistry transport model to quantify annual methane (CHβ‚„) emissions and their uncertainties at a spatial resolution of 1Β° by 1Β° and then projected these to each country for 2019.

-

For more information regarding this dataset, please visit the GOSAT-based Top-down Total and Natural Methane Emissions data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. GOSAT-based Top-down Total and Natural Methane Emissions - item: One granule in the dataset, e.g. one annual file of fluxes - asset: A variable available within the granule, e.g. anthropogenic methane emissions - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

The libraries below allow better execution of a query in the GHG Center Spatio Temporal Asset Catalog (STAC) Application Programming Interface (API), where the granules for this collection are stored. You will learn the functionality of each library throughout the notebook.

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-
-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the GOSAT-based Top-down Total and Natural Methane Emissions dataset is gosat-based-ch4budget-yeargrid-v1*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Please use the collection name similar to the one used in STAC collection.
-
-# Name of the collection for gosat budget methane. 
-collection_name = "gosat-based-ch4budget-yeargrid-v1"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library makes an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2010 to December 2022. By looking at the dashboard:time density, we observe that the data is annual over that time period.

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 13 items
-
-
-
-
# Examining the first item in the collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can then query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["datetime"][:4]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# For this collection, we'll focus on the posterior total methane emissions, or:
-asset_name = "post-total"
-
-
-
-
-

Create Maps Using Folium

-

You will now explore differences in methane emissions at two different date/times. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two dates/times to visualize
-dates = ['2010','2020']
-
-
-
first_date = items_dict[dates[0]]
-# Extract collection name and item ID
-collection_id = first_date.collection_id
-item_id = first_date.id
-# Isolate chosen asset
-object = first_date.assets[asset_name]
-# Load raster bands to obtain statistics
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands
-print(raster_bands)
-
-
[{'scale': 1.0, 'nodata': -9999.0, 'offset': 0.0, 'sampling': 'area', 'data_type': 'float64', 'histogram': {'max': 6.551439731574392, 'min': -1.0882688201549864, 'count': 11, 'buckets': [2, 2966, 230, 61, 31, 9, 6, 3, 2, 2]}, 'statistics': {'mean': 0.15064792279767236, 'stddev': 0.48261592630870437, 'maximum': 6.551439731574392, 'minimum': -1.0882688201549864, 'valid_percent': 100.0}}]
-
-
-
-
# 
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    #"min": raster_bands[0].get("histogram", {}).get("min"),
-    "min": -1*raster_bands[0].get("histogram", {}).get("max")
-}
-
-print(rescale_values)
-
-
{'max': 6.551439731574392, 'min': -6.551439731574392}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a color map for displaying the data
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r" 
-
-
-
# Make a GET request to retrieve information for the first date
-# Note that the colormap needs to be all lowercase for this to work properly.
-tile_1 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale=-0,3" #{rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile_1
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/gosat-based-ch4budget-yeargrid-v1/items/gosat-based-ch4budget-yeargrid-v1-2010/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=post-total&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=-0%2C3'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-182.5, -90.9777777777778, 177.5, 90.97777777777777],
- 'center': [-2.5, -1.4210854715202004e-14, 0]}
-
-
-
-
second_date = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-# Make a GET request to retrieve information for the second date
-tile_2 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale=-0,3" #{rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile_2
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/gosat-based-ch4budget-yeargrid-v1/items/gosat-based-ch4budget-yeargrid-v1-2020/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=post-total&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=-0%2C3'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-182.5, -90.9777777777778, 177.5, 90.97777777777777],
- 'center': [-2.5, -1.4210854715202004e-14, 0]}
-
-
-
-
-

Generate Map

-
-
# Set initial zoom and center of map
-# Centre of map set via location=(latitude,longitude)
-map_ = folium.plugins.DualMap(location=(25, -80), zoom_start=3)
-
-# Generate map layer showing first date
-map_layer_1 = TileLayer(
-    tiles=tile_1["tiles"][0],
-    attr="GHG",
-    name=f"{dates[0]}",
-    opacity=0.7,
-    overlay=True,
-)
-# Add layer to the map
-map_layer_1.add_to(map_.m1)
-
-# Mapy layer showing second date
-map_layer_2 = TileLayer(
-    tiles=tile_2["tiles"][0],
-    attr="GHG",
-    name=f"{dates[1]}",
-    opacity=0.7,
-    overlay=True,
-)
-# Add layer to the map
-map_layer_2.add_to(map_.m2)
-
-# Add controls to toggle map elements on/off
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We'll use a function from the'ghgc_utils' module create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='tC/km2/year')
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

-
-
aoi_name = "Texas, USA"
-# Texas, USA
-aoi = {
-    "type": "Feature",
-    "properties": {},
-    "geometry": {
-        "coordinates": [
-            [
-                [-95, 29],
-                [-95, 33],
-                [-104, 33],
-                [-104,29],
-                [-95, 29]
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-

Generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first five rows of our statistics DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 49 ms, sys: 0 ns, total: 49 ms
-Wall time: 2.63 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02022-01-01T00:00:00+00:000.458408754282977670692.563434123331243874591.350114698538482871371.979999899864196777342.673226967911376483760.566933964222329445091.087872038288492548830.458408754282977670690.458408754282977670696.00000000000000000000[[2, 0, 1, 0, 0, 2, 0, 0, 0, 1], [0.4584087542...100.000000000000000000000.000000000000000000006.000000000000000000000.458408754282977670692.563434123331243874592022-01-01 00:00:00+00:00
12021-01-01T00:00:00+00:000.417406304365838531912.977321643562974795571.409865363958836548261.979999899864196777342.791533279460495897690.719124050027175831801.029305763071844515010.417406304365838531910.417406304365838531916.00000000000000000000[[2, 0, 1, 0, 1, 0, 1, 0, 0, 1], [0.4174063043...100.000000000000000000000.000000000000000000006.000000000000000000000.417406304365838531912.977321643562974795572021-01-01 00:00:00+00:00
22020-01-01T00:00:00+00:000.392605566611903766822.619608282024973089361.301333264550752932821.979999899864196777342.576639733500439177760.623242240340263209400.978943133227254902450.392605566611903766820.392605566611903766826.00000000000000000000[[2, 0, 1, 0, 1, 0, 1, 0, 0, 1], [0.3926055666...100.000000000000000000000.000000000000000000006.000000000000000000000.392605566611903766822.619608282024973089362020-01-01 00:00:00+00:00
32019-01-01T00:00:00+00:000.521855978679429566292.678033613039746185791.409688794989519378121.979999899864196777342.791183672918928770910.667938384835826015620.953206356992372105810.521855978679429566290.521855978679429566296.00000000000000000000[[1, 1, 1, 0, 0, 1, 0, 1, 0, 1], [0.5218559786...100.000000000000000000000.000000000000000000006.000000000000000000000.521855978679429566292.678033613039746185792019-01-01 00:00:00+00:00
42018-01-01T00:00:00+00:000.552891349852768221322.624957182251808074371.427609229463170370521.979999899864196777342.826666131382280511270.582425218618621953761.086806799957563018920.552891349852768221320.552891349852768221326.00000000000000000000[[1, 1, 1, 0, 0, 1, 1, 0, 0, 1], [0.5528913498...100.000000000000000000000.000000000000000000006.000000000000000000000.552891349852768221322.624957182251808074372018-01-01 00:00:00+00:00
- -
-
-
-
-
# Figure size: 10 is width, 5 is height
-fig = plt.figure(figsize=(10, 5))
-
-# Sort by date
-df = df.sort_values(by="datetime")
-
-# Choose a stat to plot: min, mean, max, median, etc.
-which_stat = "mean"
-
-plt.plot(
-    [d[0:4] for d in df["datetime"]], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum COβ‚‚
-    color="#6AB547", # Line color in hex format
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{items[0].assets[asset_name].title}", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("tC/kmΒ²/year")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} for {aoi_name} (2010-2022)")
-
-# Add data citation
-plt.text(
-    min([d[0:4] for d in df["datetime"]]),           # X-coordinate of the text
-    df[which_stat].min(),                  # Y-coordinate of the text
-    # Text to be displayed
-    f"Source: {collection.title}",      #example text            
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the GOSAT-based Top-down Total and Natural Methane Emissions dataset.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map the methane emission levels
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook_files/figure-html/cell-18-output-1.png b/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook_files/figure-html/cell-18-output-1.png deleted file mode 100644 index 0d579c9..0000000 Binary files a/_site/user_data_notebooks/gosat-based-ch4budget-yeargrid-v1_User_Notebook_files/figure-html/cell-18-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/gra2pes-ghg-monthgrid-v1_User_Notebook.html b/_site/user_data_notebooks/gra2pes-ghg-monthgrid-v1_User_Notebook.html deleted file mode 100644 index 959f9a2..0000000 --- a/_site/user_data_notebooks/gra2pes-ghg-monthgrid-v1_User_Notebook.html +++ /dev/null @@ -1,9497 +0,0 @@ - - - - - - - - - - - - -GRAΒ²PES Greenhouse Gas and Air Quality Species – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

GRAΒ²PES Greenhouse Gas and Air Quality Species

-
- -
-
- Monthly, 0.036 degree resolution emissions of carbon dioxide (COβ‚‚), carbon monoxide (CO), nitrogen oxide (NOβ‚“), sulfur dioxide (SOβ‚‚), and particulate matter (PM2.5) emissions for the year 2021 over the Contiguous United States from the Greenhouse gas And Air Pollutants Emissions System (GRAΒ²PES) -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

August 30, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the GRAΒ²PES Greenhouse Gas and Air Quality Species notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Contiguous United States
  • -
  • Spatial resolution: 0.036Β° x 0.036Β°
  • -
  • Temporal extent: January 2021 - December 2021
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Metric tons per kilometer squared per month (tonne/kmΒ²/month) for carbon dioxide (COβ‚‚), carbon monoxide (CO), nitrogen oxides (NOβ‚“), sulfur dioxide (SOβ‚‚), and particulate matter (PM2.5)
  • -
  • Utility: Climate Research
  • -
-

For more, visit the GRAΒ²PES Greenhouse Gas and Air Quality Species data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Vulcan Fossil Fuel COβ‚‚ Emissions Data product.
  2. -
  3. Pass the STAC item into the raster API /stac/tilejson.jsonendpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

GRA2PES Greenhouse Gas and Air Quality Species

-

The Greenhouse gas And Air Pollutants Emissions System (GRA2PES) dataset at the GHG Center is an aggregated, regridded, monthly high-resolution (0.036 x 0.036Β°) data product with emissions of both greenhouse gases and air pollutants developed in a consistent framework. The dataset contains emissions over the contiguous United States covering major anthropogenic sectors, including energy, industrial fuel combustion and processes, commercial and residential combustion, oil and gas production, on-road and off-road transportation, etc. (see Table 1 in the Scientific Details section below for a full sector list). Fossil fuel CO2 (ffCO2) emissions are developed along with those of air pollutants including CO, NOx, SOx, and PM2.5 with consistency in spatial and temporal distributions. Emissions by sectors are grouped into point and area sources, reported as column totals in units of metric tons per km2 per month. Spatial-temporal surrogates are developed to distribute CO2 emissions to grid cells to keep consistency between greenhouse gases and air quality species. The current version of GRA2PES is for 2021. Long-term emissions and more greenhouse gas species (e.g., methane) are under development and will be added in the future.

-

For more information regarding this dataset, please visit the GRA2PES Greenhouse Gas and Air Quality Species, Version 1 data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. GRA2PES - item: One granule in the dataset, e.g. one monthly file of greenhouse gas emissions - asset: A variable available within the granule, e.g. CO, CO2, or NOx emissions - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the GRA2PES Greenhouse Gas and Air Quality Species dataset is gra2pes-ghg-monthgrid-v1.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Please use the collection name similar to the one used in the STAC collection.
-# Name of the collection for Vulcan Fossil Fuel COβ‚‚ Emissions, Version 4. 
-collection_name = "gra2pes-ghg-monthgrid-v1"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library enables an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2010 to December 2021. By looking at the dashboard:time density, we observe that the data is periodic with monthly time density.

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 12 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020-02"
-items_dict = {item.properties["start_datetime"][:7]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# For now, we'll look at:
-asset_name = "co2"
-
-
-
-
-

Creating Maps Using Folium

-

You will now explore changes in CO2 emissions for two different dates/times. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2021-01","2021-07"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id = first_date.collection_id
-item_id = first_date.id
-# Select relevant asset (microbial CH4 emissions)
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-print(raster_bands)
-
-
[{'scale': 1.0, 'nodata': -9999.0, 'offset': 0.0, 'sampling': 'area', 'data_type': 'float32', 'histogram': {'max': 27284.111328125, 'min': 0.0, 'count': 11, 'buckets': [334564, 276, 81, 37, 17, 7, 2, 6, 3, 1]}, 'statistics': {'mean': 27.047150098210714, 'stddev': 271.37551127034317, 'maximum': 27284.111328125, 'minimum': 0.0, 'valid_percent': 73.84708309819413}}]
-
-
-
-
# Use statistics to generate appropriate colorbar range
-rescale_values = {
-    "max": raster_bands[0]["statistics"]["mean"] + 2.5*raster_bands[0]["statistics"]["stddev"],
-    "min": raster_bands[0]["statistics"]["minimum"],
-}
-
-print(rescale_values)
-
-
{'max': 705.4859282740687, 'min': 0.0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib conventions
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/gra2pes-ghg-monthgrid-v1/items/gra2pes-ghg-monthgrid-v1-202101/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0.0%2C705.4859282740687'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-137.3143, 18.173376, -58.58229999999702, 52.229376000001295],
- 'center': [-97.94829999999851, 35.20137600000065, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# because we want date tiles 1 and 2 to have the same colorbar range for visual comparison.
-second_date = items_dict[dates[1]]
-
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-
-object = second_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-date_2_tile
-
-
{'max': 31301.15625, 'min': 0.0}
-
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/gra2pes-ghg-monthgrid-v1/items/gra2pes-ghg-monthgrid-v1-202107/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0.0%2C31301.15625'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-137.3143, 18.173376, -58.58229999999702, 52.229376000001295],
- 'center': [-97.94829999999851, 35.20137600000065, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
-
-# Define the first map layer (January 2020)
-map_layer_1 = TileLayer(
-    tiles=date_1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"GRA2PES, {dates[0]}",
-    overlay=True
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer (January 2000)
-map_layer_2 = TileLayer(
-    tiles=date_2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"GRA2PES, {dates[1]}",
-    overlay=True
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# First we'll rescale our data to make nicer labels
-re_rescale_values = {
-    "min": rescale_values["min"]/1e4,
-    "max": rescale_values["max"]/1e4
-}
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(
-    color_map,
-    re_rescale_values,
-    label=f'{items[0].assets[asset_name].title} (10^4 tonne/km2/month)'
-)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Observe higher CO2 emissions in January than in July in urban areas. Which sectors do you think might contribute to this seasonal difference?

-
-
-

Summary

-

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for GRA2PES greenhouse gases Emissions, Version 1 dataset.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the total COβ‚‚ emissions for two distinctive months/years
  8. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook.html b/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook.html deleted file mode 100644 index e70cee7..0000000 --- a/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook.html +++ /dev/null @@ -1,1473 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX) – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX)

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at Indianapolis Flux Experiment (INFLUX) tower sites -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower sites in the Northeastern U.S.
  2. -
  3. Visualize the time series data
  4. -
-
-
-

About the Data

-

NIST is engaged in research to improve measurement of greenhouse gas emissions in areas containing multiple emission sources and sinks, such as cities. NIST’s objective is to develop measurement tools supporting independent means to increase the accuracy of greenhouse gas emissions data at urban and regional geospatial scales. NIST has established three test beds in U.S. cities to develop and evaluate the performance of advanced measurement capabilities for emissions independent of their origin. Located in Indianapolis, Indiana, the Los Angeles air basin of California, and the U.S. Northeast corridor (beginning with the Baltimore/Washington D.C. region), the test beds have been selected for their varying meteorology, terrain and emissions characteristics. These test beds will serve as a means to independently diagnose the accuracy of emissions data obtained directly from emission or uptake sources.

-

For more information regarding this dataset, please visit the Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX) data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Importing required libraries

-
-
import requests
-import pandas as pd
-import matplotlib.pyplot as plt
-import plotly.graph_objs as go
-from io import StringIO
-
-
-
-

Querying the Feature Vector API

-

First, we are going to import the required libraries. Once imported, they allow better executing a query in the GHG Center Feature Vector Application Programming Interface (API) where the items for this collection are stored.

-
-
FEATURE_API_URL="https://earth.gov/ghgcenter/api/features"
-
-
-
# Function to fetch CSV data for a station with a limit parameter
-def get_station_data_csv(station_code, gas_type, frequency, elevation_m, limit=100000):
-    # Use the ?f=csv and limit query to get more rows
-    url = f"https://earth.gov/ghgcenter/api/features/collections/public.nist_flux_in_{station_code}_{gas_type}_{frequency}_concentrations/items?f=csv&elevation_m={elevation_m}&limit={limit}"
-    print(url)
-    try:
-        response = requests.get(url)
-        
-        # Check if the response is successful
-        if response.status_code != 200:
-            print(f"Failed to fetch data for {station_code}. Status code: {response.status_code}")
-            return pd.DataFrame()
-
-        # Check if the content type is CSV
-        content_type = response.headers.get('Content-Type')
-        if 'text/csv' not in content_type:
-            print(f"Unexpected content type for {station_code}: {content_type}")
-            print("Response content:", response.text)
-            return pd.DataFrame()
-
-        # Read the CSV content into a pandas DataFrame
-        csv_data = StringIO(response.text)
-        return pd.read_csv(csv_data)
-    
-    except requests.exceptions.RequestException as e:
-        print(f"Request failed: {e}")
-        return pd.DataFrame()
-
-
-
-

Visualizing the CHβ‚„ data for two INFLUX stations

-
-
# Get station name and elevation from metdata dataframe
-# Fetch data for site01 (elevation 256) and site09 (elevation 277), using limit=10000
-# ch4/co2 select the ghg 
-
-site01_data = get_station_data_csv('site01', 'ch4', 'hourly', 256,limit=10000)
-site09_data = get_station_data_csv('site09', 'ch4', 'hourly', 277,limit=10000)
-
-# Check if data was successfully retrieved before proceeding
-if site01_data.empty or site09_data.empty:
-    print("No data available for one or both stations. Exiting.")
-else:
-    # Convert the 'datetime' column to datetime for plotting
-    site01_data['datetime'] = pd.to_datetime(site01_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-    site09_data['datetime'] = pd.to_datetime(site09_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-
-    # Plot the data
-    plt.figure(figsize=(10, 6))
-    plt.plot(site01_data['datetime'], site01_data['value'], label='site01 (256m)', color='blue', marker='o')
-    plt.plot(site09_data['datetime'], site09_data['value'], label='site09 (277m)', color='green', marker='o')
-
-    plt.title('Methane (CHβ‚„) Hourly Concentrations Over Time for site01 and site09 Stations')
-    plt.xlabel('Time')
-    plt.ylabel('CHβ‚„ Concentration (ppb)')
-    plt.legend()
-    plt.grid(True)
-
-    # Show plot
-    plt.show()
-
-
https://earth.gov/ghgcenter/api/features/collections/public.nist_flux_in_site01_ch4_hourly_concentrations/items?f=csv&elevation_m=256&limit=10000
-https://earth.gov/ghgcenter/api/features/collections/public.nist_flux_in_site09_ch4_hourly_concentrations/items?f=csv&elevation_m=277&limit=10000
-
-
-
-
-

-
-
-
-
- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png b/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png deleted file mode 100644 index 988eeed..0000000 Binary files a/_site/user_data_notebooks/influx-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook.html b/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook.html deleted file mode 100644 index 6cd3186..0000000 --- a/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook.html +++ /dev/null @@ -1,1472 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower and rooftop sites in California’s South Coast Air Basin -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower sites in the Northeastern U.S.
  2. -
  3. Visualize the time series data
  4. -
-
-
-

About the Data

-

NIST is engaged in research to improve measurement of greenhouse gas emissions in areas containing multiple emission sources and sinks, such as ciies. NIST’s objective is to develop measurement tools supporting independent means to increase the accuracy of greenhouse gas emissions data at urban and regional geospatial scales. NIST has established three test beds in U.S. ciies to develop and evaluate the performance of advanced measurement capabilities for emissions independent of their origin. Located in Indianapolis, Indiana, the Los Angeles air basin of California, and the U.S. Northeast corridor (beginning with the Baltimore/Washington D.C. region), the test beds have been selected for their varying meteorology, terrain and emissions characteristics. These test beds will serve as a means to independently diagnose the accuracy of emissions data obtained directly from emission or uptake sources.

-

For more information regarding this dataset, please visit the Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Importing required libraries

-
-
import requests
-import pandas as pd
-import matplotlib.pyplot as plt
-import plotly.graph_objs as go
-from io import StringIO
-
-
-
-

Querying the Feature Vector API

-

First, we are going to import the required libraries. Once imported, they allow better executing a query in the GHG Center Feature Vector Application Programming Interface (API) where the items for this collection are stored.

-
-
FEATURE_API_URL="https://earth.gov/ghgcenter/api/features"
-
-
-
# Function to fetch CSV data for a station with a limit parameter
-def get_station_data_csv(station_code, gas_type, frequency, elevation_m, limit=100000):
-    # Use the ?f=csv and limit query to get more rows
-    url = f"https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_lam_{station_code}_{gas_type}_{frequency}_concentrations/items?f=csv&elevation_m={elevation_m}&limit={limit}"
-    print(url)
-    try:
-        response = requests.get(url)
-        
-        # Check if the response is successful
-        if response.status_code != 200:
-            print(f"Failed to fetch data for {station_code}. Status code: {response.status_code}")
-            return pd.DataFrame()
-
-        # Check if the content type is CSV
-        content_type = response.headers.get('Content-Type')
-        if 'text/csv' not in content_type:
-            print(f"Unexpected content type for {station_code}: {content_type}")
-            print("Response content:", response.text)
-            return pd.DataFrame()
-
-        # Read the CSV content into a pandas DataFrame
-        csv_data = StringIO(response.text)
-        return pd.read_csv(csv_data)
-    
-    except requests.exceptions.RequestException as e:
-        print(f"Request failed: {e}")
-        return pd.DataFrame()
-
-
-
-

Visualizing the COβ‚‚ data for two LAM stations

-
-
# Get station name and elevation from metdata dataframe
-# Fetch data for SCI (elevation 489) and COM (elevation 9), using limit=10000
-# ch4/co2 select the ghg 
-sci_data = get_station_data_csv('sci', 'co2', 'hourly', 489, limit=10000)
-com_data = get_station_data_csv('com', 'co2', 'hourly', 9, limit=10000)
-
-# Check if data was successfully retrieved before proceeding
-if sci_data.empty or com_data.empty:
-    print("No data available for one or both stations. Exiting.")
-else:
-    # Convert the 'datetime' column to datetime for plotting
-    sci_data['datetime'] = pd.to_datetime(sci_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-    com_data['datetime'] = pd.to_datetime(com_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-
-    # Plot the data
-    plt.figure(figsize=(10, 6))
-    plt.plot(sci_data['datetime'], sci_data['value'], label='SCI (489m)', color='blue', marker='o')
-    plt.plot(com_data['datetime'], com_data['value'], label='COM (9m)', color='green', marker='o')
-
-    plt.title('Carbon Dioxide (COβ‚‚) Hourly Concentrations Over Time for SCI and COM Stations')
-    plt.xlabel('Time')
-    plt.ylabel('COβ‚‚ Concentration (ppm)')
-    plt.legend()
-    plt.grid(True)
-
-    # Show plot
-    plt.show()
-
-
https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_lam_sci_co2_hourly_concentrations/items?f=csv&elevation_m=489&limit=10000
-https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_lam_com_co2_hourly_concentrations/items?f=csv&elevation_m=9&limit=10000
-
-
-
-
-

-
-
-
-
- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png b/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png deleted file mode 100644 index 307521e..0000000 Binary files a/_site/user_data_notebooks/lam-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook.html b/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook.html deleted file mode 100644 index 5086194..0000000 --- a/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook.html +++ /dev/null @@ -1,7489 +0,0 @@ - - - - - - - - - - -Wetland Methane Emissions, LPJ-EOSIM Model – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Wetland Methane Emissions, LPJ-EOSIM Model

-
- -
-
- Global, monthly 0.5 degree resolution methane emission estimate from wetlands, LPJ-EOSIM Model -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- - - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the Wetland Methane Emissions, LPJ-EOSIM Model notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 0.5Β° x 0.5Β°
  • -
  • Temporal extent: January 1, 1990 - ongoing
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Kilograms of methane per meter squared per second (kg CHβ‚„/mΒ²/s)
  • -
  • Utility: Climate Research
  • -
-

For more, visit the Wetland Methane Emissions, LPJ-EOSIM Model data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Wetland Methane Emissions, LPJ-EOSIM Model data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. -
  7. After the visualization, perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-

Methane (CHβ‚„) emissions from vegetated wetlands are estimated to be the largest natural source of methane in the global CHβ‚„ budget, contributing to roughly one third of the total of natural and anthropogenic emissions. Wetland CHβ‚„ is produced by microbes breaking down organic matter in the oxygen deprived environment of inundated soils. Due to limited data availability, the details of the role of wetland CHβ‚„ emissions have thus far been underrepresented. Using the Earth Observation SIMulator version (LPJ-EOSIM) of the Lund-Potsdam-Jena Dynamic Global Vegetation Model (LPJ-DGVM) global CHβ‚„ emissions from wetlands are estimated at 0.5Β° x 0.5 degree spatial resolution. By simulating wetland extent and using characteristics of inundated areas, such as wetland soil moisture, temperature, and carbon content, the model provides estimates of CHβ‚„ quantities emitted into the atmosphere. This dataset shows concentrated methane sources from tropical and high latitude ecosystems. The LPJ-EOSIM Wetland Methane Emissions dataset consists of global daily model estimates of terrestrial wetland methane emissions from 1990 to the present, with data added bimonthly. The monthly data has been curated by aggregating the daily files. The estimates are regularly used in conjunction with NASA’s Goddard Earth Observing System (GEOS) model to simulate the impact of wetlands and other methane sources on atmospheric methane concentrations, to compare against satellite and airborne data, and to improve understanding and prediction of wetland emissions.

-

For more information regarding this dataset, please visit the Wetland Methane Emissions, LPJ-EOSIM Model data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-import requests
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-from pystac_client import Client
-import branca
-import pandas as pd
-import matplotlib.pyplot as plt
-from stats_module import generate_stats, clean_stats, display_stats
-
-
-

Query the STAC API

-

First, you need to import the required libraries. Once imported, they allow better execution of a query in the GHG Center Spatio Temporal Asset Catalog (STAC) Application Programming Interface (API) where the granules for this collection are stored. You will learn the functionality of each library throughout the notebook.

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the Wetland Methane Emissions, LPJ-EOSIM Model dataset is lpjeosim-wetlandch4-monthgrid-v1

-
-
# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for the wetland methane emissions LPJ-EOSIM Model
-collection_name = "lpjeosim-wetlandch4-monthgrid-v1"
-
-# Next, we need to specify the asset name for this collection
-# The asset name is referring to the raster band containing the pixel values for the parameter of interest
-asset_name = "ensemble-mean-ch4-wetlands-emissions"
-
-

Next, you will examine the contents of the collection under the temporal variable. You’ll see that the data is available from January 2020 to December 2022. Looking at the dashboard:time density, you can observe that the data is periodic with monthly time density.

-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 421 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in the rescale_values.

-
-
-

Visual Comparison Across Time Periods

-

You will now explore changes in methane emissions at a given location and time. You will visualize the outputs on a map using folium.

-
-
# Now we create a dictionary where the start datetime values for each granule is queried more explicitly by year and month (e.g., 2020-02)
-# To access the year value from each item more easily, this will let us query more explicitly by year and month (e.g., 2020-02)
-items = {item.properties["start_datetime"][:7]: item for item in collection.get_items()}
-
-

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for month 1 mentioned in the next cell and again for month 2, so we can visualize each event independently.

-
-
# Choose a color for displaying the tiles
-# Please refer to matplotlib library if you'd prefer choosing a different color ramp.
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "magma" 
-
-# Make a GET request to retrieve information for the date mentioned below
-first_date = items["2000-08"]
-
-# Extract collection name and item ID
-collection_id = first_date.collection_id
-item_id = first_date.id
-
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-
{'max': 2.8342954649929197e-09, 'min': 0.0}
-
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-month1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-monthgrid-v1/items/lpjeosim-wetlandch4-monthgrid-v1-200008/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ensemble-mean-ch4-wetlands-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=0.0%2C2.8342954649929197e-09'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Make a GET request to retrieve information for date mentioned below
-second_date = items["2020-08"]
-
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-
-object = second_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-month2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month2_tile
-
-
{'max': 2.880736316157595e-09, 'min': 0.0}
-
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-monthgrid-v1/items/lpjeosim-wetlandch4-monthgrid-v1-202008/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ensemble-mean-ch4-wetlands-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=0.0%2C2.880736316157595e-09'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Map Out Selected Tiles

-

For this study, you are going to compare the CHβ‚„ levels along the coast of Florida.

-
-
# The Area of Interest (AOI) is set to a region in Florida (USA)
-florida_aoi = {
-    "type": "Feature",  # Create a feature object
-    "properties": {},
-    "geometry": {  # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-80.92, 26.09],  # Northwest Bounding Coordinate
-                [-80.92, 25.30],  # Southwest Bounding Coordinate
-                [-80.40, 25.30],  # Southeast Bounding Coordinate
-                [-80.40, 26.09],  # Northeast Bounding Coordinate
-                [-80.92, 26.09],  # Closing the polygon at the Northwest Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# For this study we are going to compare the CHβ‚„ Emissions for month1 and month2 along the coast of California
-# To change the location, you can simply insert the latitude and longitude of the area of your interest in the "location=(LAT, LONG)" statement
-
-# Set initial zoom and center of map
-# 'folium.plugins' allows mapping side-by-side
-map_ = folium.plugins.DualMap(location=(26, -80), zoom_start=6)
-
-# Define the first map layer for tile fetched for month 1
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_month1 = TileLayer(
-    tiles=month1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.5, # Adjust the transparency of the layer
-    name=f"{first_date} Mean Wetland CHβ‚„ Emissions", # Title for the layer
-    overlay= True, # The layer can be overlaid on the map
-    legendEnabled = True # Enable displaying the legend on the map
-)
-
-# Add the first layer to the Dual Map
-map_layer_month1.add_to(map_.m1)
-
-
-# Define the second map layer for the tile fetched for month 2
-map_layer_month2 = TileLayer(
-    tiles=month2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.5, # Adjust the transparency of the layer
-    name=f"{second_date} Mean Wetland CHβ‚„ Emissions", # Title for the layer
-    overlay= True, # The layer can be overlaid on the map
-    legendEnabled = True # Enable displaying the legend on the map
-)
-
-# Add the second layer to the Dual Map
-map_layer_month2.add_to(map_.m2)
-
-# Display data markers (titles) on both maps
-folium.Marker((26, -80), tooltip="both").add_to(map_)
-folium.GeoJson(florida_aoi, name="Wetlands, Florida, USA").add_to(map_)
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculate Zonal Statistics

-

Now that you created the polygon for the area of interest, you need to develop a function that runs through the data collection and generates the statistics for a specific item (granule) within the boundaries of the AOI polygon.

-
-
# Check the total number of items available within the collection
-items = requests.get(
-    f"{STAC_API_URL}/collections/{collection_name}/items?limit=800"
-).json()["features"]
-
-# Print the total number of items (granules) found
-print(f"Found {len(items)} items")
-
-
Found 421 items
-
-
-
-
# Examine the first item in the collection
-items[0]
-
-
{'id': 'lpjeosim-wetlandch4-monthgrid-v1-202501',
- 'bbox': [-180.0, -90.0, 180.0, 90.0],
- 'type': 'Feature',
- 'links': [{'rel': 'collection',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-monthgrid-v1'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-monthgrid-v1'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-monthgrid-v1/items/lpjeosim-wetlandch4-monthgrid-v1-202501'},
-  {'title': 'Map of Item',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-monthgrid-v1/items/lpjeosim-wetlandch4-monthgrid-v1-202501/map?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'type': 'text/html'}],
- 'assets': {'era5-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_MCH4E_LL.001/LPJ_EOSIM_L2_MCH4E_LL_001_202501/LPJ_EOSIM_L2_MCH4E_LL_ERA5_001_202501.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Monthly) Wetland Methane Emissions, ERA5 LPJ-EOSIM Model v1',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per month. ECMWF Re-Analysis (ERA5) as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.84801124297951e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61562, 505, 160, 104, 73, 49, 14, 6, 5, 4]},
-     'statistics': {'mean': 2.3242455373095205e-11,
-      'stddev': 1.395088384790972e-10,
-      'maximum': 3.84801124297951e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.10570987654321}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'merra2-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_MCH4E_LL.001/LPJ_EOSIM_L2_MCH4E_LL_001_202501/LPJ_EOSIM_L2_MCH4E_LL_MERRA2_001_202501.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Monthly) Wetland Methane Emissions, MERRA-2 LPJ-EOSIM Model v1',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per month. Modern-Era Retrospective analysis for Research and Applications Version 2 (MERRA-2) data as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 2.9943143520227977e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61340, 614, 210, 117, 96, 43, 20, 25, 10, 7]},
-     'statistics': {'mean': 2.182891906276874e-11,
-      'stddev': 1.2641562395629968e-10,
-      'maximum': 2.9943143520227977e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.10570987654321}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'ensemble-mean-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_MCH4E_LL.001/LPJ_EOSIM_L2_MCH4E_LL_001_202501/LPJ_EOSIM_L2_MCH4E_LL_ensemble_mean_001_202501.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Monthly) Wetland Methane Emissions, Ensemble Mean LPJ-EOSIM Model v1',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per month. Ensemble of multiple climate forcing data sources input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.026227712865648e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61306, 610, 217, 122, 93, 82, 27, 12, 7, 6]},
-     'statistics': {'mean': 2.265072959315403e-11,
-      'stddev': 1.300032886444663e-10,
-      'maximum': 3.026227712865648e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.10570987654321}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'rendered_preview': {'title': 'Rendered preview',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-monthgrid-v1/items/lpjeosim-wetlandch4-monthgrid-v1-202501/preview.png?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'roles': ['overview'],
-   'type': 'image/png'}},
- 'geometry': {'type': 'Polygon',
-  'coordinates': [[[-180, -90],
-    [180, -90],
-    [180, 90],
-    [-180, 90],
-    [-180, -90]]]},
- 'collection': 'lpjeosim-wetlandch4-monthgrid-v1',
- 'properties': {'end_datetime': '2025-01-31T00:00:00+00:00',
-  'start_datetime': '2025-01-01T00:00:00+00:00'},
- 'stac_version': '1.0.0',
- 'stac_extensions': ['https://stac-extensions.github.io/raster/v1.1.0/schema.json',
-  'https://stac-extensions.github.io/projection/v1.1.0/schema.json']}
-
-
-

Now we need to develop a function that runs through the data collection and generates the statistics for a specific item (granule) within the boundaries of the AOI polygon.

-

With the function above, we can generate the statistics for the area of interest.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Generate statistics using the created function "generate_stats" within the bounding box defined by the AOI polygon
-stats = [generate_stats(item, florida_aoi,asset_name) for item in items]
-
-
-
# Print the stats for the first item in the collection
-stats[0]
-
-
{'statistics': {'b1': {'min': 0.0,
-   'max': 3.227998701671453e-10,
-   'mean': 2.0262994060438189e-10,
-   'count': 1.6800000667572021,
-   'sum': 3.4041830465625367e-10,
-   'std': 1.5164446147886878e-10,
-   'median': 3.227998701671453e-10,
-   'majority': 0.0,
-   'minority': 2.772134743977972e-10,
-   'unique': 3.0,
-   'histogram': [[3, 0, 0, 0, 0, 0, 0, 0, 1, 1],
-    [0.0,
-     3.227998771060392e-11,
-     6.455997542120784e-11,
-     9.683996660125871e-11,
-     1.2911995084241568e-10,
-     1.6139993508357264e-10,
-     1.9367993320251742e-10,
-     2.2595991744367439e-10,
-     2.5823990168483135e-10,
-     2.905198859259883e-10,
-     3.227998701671453e-10]],
-   'valid_percent': 83.33,
-   'masked_pixels': 1.0,
-   'valid_pixels': 5.0,
-   'percentile_2': 0.0,
-   'percentile_98': 3.227998701671453e-10}},
- 'datetime': '2025-01-01T00:00:00+00:00'}
-
-
-
-
# Apply the generated function on the stats data
-df = clean_stats(stats)
-
-# Display the stats for the first 5 granules in the collection in the table
-# Change the value in the parenthesis to show more or a smaller number of rows in the table
-df.head(5)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02025-01-01T00:00:00+00:000.03.227999e-102.026299e-101.683.404183e-101.516445e-103.227999e-100.02.772135e-103.0[[3, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0.0, 3.22799...83.331.05.00.03.227999e-102025-01-01 00:00:00+00:00
12024-12-01T00:00:00+00:000.09.913254e-116.102612e-111.681.025239e-104.610612e-119.913254e-110.07.391453e-113.0[[3, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0.0, 9.91325...83.331.05.00.09.913254e-112024-12-01 00:00:00+00:00
22024-11-01T00:00:00+00:000.05.510858e-103.376660e-101.685.672789e-102.559055e-105.510858e-100.03.961203e-103.0[[3, 0, 0, 0, 0, 0, 0, 1, 0, 1], [0.0, 5.51085...83.331.05.00.05.510858e-102024-11-01 00:00:00+00:00
32024-10-01T00:00:00+00:000.01.918133e-091.204259e-091.682.023155e-099.011947e-101.918133e-090.01.649083e-093.0[[3, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0.0, 1.91813...83.331.05.00.01.918133e-092024-10-01 00:00:00+00:00
42024-09-01T00:00:00+00:000.02.430519e-091.531111e-091.682.572266e-091.144570e-092.430519e-090.02.137771e-093.0[[3, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0.0, 2.43051...83.331.05.00.02.430519e-092024-09-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

You can now explore the wetland methane emissions time series (January 1990 – December 2024) available for the Texas area of the U.S. You can plot the data set using the code below:

-
-
# Determine the width and height of the plot using the 'matplotlib' library
-# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(20, 10))
-
-# Plot the time series
-plt.plot(
-    df["date"], # X-axis: date
-    df["max"], # Y-axis: CHβ‚„ value
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=0.5, # Line width
-    label="Max monthly CHβ‚„ emissions", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("Monthly CH4 emissions g/m2")
-
-# Insert title for the plot
-plt.title("Monthly CH4 emission Values for Florida, 1990-2024")
-
-
Text(0.5, 1.0, 'Monthly CH4 emission Values for Florida, 1990-2024')
-
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the Monthly Wetland Methane Emissions, LPJ-EOSIM Model data: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the CHβ‚„ levels over the Florida region for two distinctive years 5. Create a table that displays the minimum, maximum, and sum of the CHβ‚„ levels for a specified region 6. Generate a time-series graph of the CHβ‚„ levels for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook_files/figure-html/cell-19-output-2.png b/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook_files/figure-html/cell-19-output-2.png deleted file mode 100644 index afe6ea8..0000000 Binary files a/_site/user_data_notebooks/lpjeosim-wetlandch4-grid-v1_User_Notebook_files/figure-html/cell-19-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook.html b/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook.html deleted file mode 100644 index 7621e31..0000000 --- a/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook.html +++ /dev/null @@ -1,2761 +0,0 @@ - - - - - - - - - - -Wetland Methane Emissions, LPJ-EOSIM Model – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Wetland Methane Emissions, LPJ-EOSIM Model

-
- -
-
- Global, daily 0.5 degree resolution methane emission estimates from wetlands, LPJ-EOSIM Model -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- - - -
- - - -
- - -
-

Run this notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below.

-

Launch in the US GHG Center JupyterHub (requires access)

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Wetland Methane Emissions, LPJ-EOSIM Model data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. -
  7. After the visualization, perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-

Methane (CHβ‚„) emissions from vegetated wetlands are estimated to be the largest natural source of methane in the global CHβ‚„ budget, contributing to roughly one third of the total of natural and anthropogenic emissions. Wetland CHβ‚„ is produced by microbes breaking down organic matter in the oxygen deprived environment of inundated soils. Due to limited data availability, the details of the role of wetland CHβ‚„ emissions have thus far been underrepresented. Using the Earth Observation SIMulator version (LPJ-EOSIM) of the Lund-Potsdam-Jena Dynamic Global Vegetation Model (LPJ-DGVM) global CHβ‚„ emissions from wetlands are estimated at 0.5Β° x 0.5 degree spatial resolution. By simulating wetland extent and using characteristics of inundated areas, such as wetland soil moisture, temperature, and carbon content, the model provides estimates of CHβ‚„ quantities emitted into the atmosphere. This dataset shows concentrated methane sources from tropical and high latitude ecosystems. The LPJ-EOSIM Wetland Methane Emissions dataset consists of global daily model estimates of terrestrial wetland methane emissions from 1990 to the present, with data added bimonthly. The estimates are regularly used in conjunction with NASA’s Goddard Earth Observing System (GEOS) model to simulate the impact of wetlands and other methane sources on atmospheric methane concentrations, to compare against satellite and airborne data, and to improve understanding and prediction of wetland emissions.

-

For more information regarding this dataset, please visit the U.S. Greenhouse Gas Center.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Query the STAC API

-

First, we are going to import the required libraries. Once imported, they allow better executing a query in the GHG Center Spatio Temporal Asset Catalog (STAC) Application Programming Interface (API) where the granules for this collection are stored.

-
-
# Import the following libraries
-import requests
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-from pystac_client import Client
-import branca
-import pandas as pd
-import matplotlib.pyplot as plt
-
-
/Users/rrimal/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
-  warnings.warn(
-
-
-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for the wetland methane emissions LPJ-EOSIM Model
-collection_name = "lpjeosim-wetlandch4-daygrid-v1"
-
-# Next, we need to specify the asset name for this collection
-# The asset name is referring to the raster band containing the pixel values for the parameter of interest
-asset_name = "ensemble-mean-ch4-wetlands-emissions"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'requests' library allows a HTTP request possible
-collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
-
-# Print the properties of the collection to the console
-collection
-
-
{'id': 'lpjeosim-wetlandch4-daygrid-v2',
- 'type': 'Collection',
- 'links': [{'rel': 'items',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2/items'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2'}],
- 'title': '(Daily) Wetland Methane Emissions, LPJ-EOSIM Model v2',
- 'extent': {'spatial': {'bbox': [[-180, -90, 180, 90]]},
-  'temporal': {'interval': [['1990-01-01 00:00:00+00',
-     '2024-05-31 00:00:00+00']]}},
- 'license': 'CC0-1.0',
- 'renders': {'dashboard': {'assets': ['ensemble-mean-ch4-wetlands-emissions'],
-   'rescale': [[0, 3e-09]],
-   'colormap_name': 'magma'},
-  'era5-ch4-wetlands-emissions': {'assets': ['era5-ch4-wetlands-emissions'],
-   'rescale': [[0, 3e-09]],
-   'colormap_name': 'magma'},
-  'merra2-ch4-wetlands-emissions': {'assets': ['merra2-ch4-wetlands-emissions'],
-   'rescale': [[0, 3e-09]],
-   'colormap_name': 'magma'},
-  'ensemble-mean-ch4-wetlands-emissions': {'assets': ['ensemble-mean-ch4-wetlands-emissions'],
-   'rescale': [[0, 3e-09]],
-   'colormap_name': 'magma'}},
- 'providers': [{'name': 'NASA'}],
- 'summaries': {'datetime': ['1990-01-01T00:00:00Z', '2024-05-31T00:00:00Z']},
- 'description': 'Global, daily estimates of methane (CHβ‚„) emissions from terrestrial wetlands at 0.5 x 0.5 degree spatial resolution using the Earth Observation SIMulator version (LPJ-EOSIM) of the Lund-Potsdam-Jena Dynamic Global Vegetation Model (LPJ-DGVM). Methane emissions from vegetated wetlands are estimated to be the largest natural source of methane in the global CHβ‚„ budget, contributing to roughly one third of the total of natural and anthropogenic emissions. Wetland CHβ‚„ is produced by microbes breaking down organic matter in the oxygen deprived environment of inundated soils. Due to limited data availability, the details of the role of wetland CHβ‚„ emissions have thus far been underrepresented. The LPJ-EOSIM model estimates wetland methane emissions by simulating wetland extent and using characteristics of these inundated areas such as soil moisture, temperature, and carbon content to estimate CHβ‚„ quantities emitted into the atmosphere. Input climate forcing data comes from Modern-Era Retrospective analysis for Research and Applications Version 2 (MERRA-2) data and ECMWF Re-Analysis data (ERA5). An ensemble layer provides the result of the mean of the MERRA-2 and ERA5 layers. The source data can be found at https://doi.org/10.5067/Community/LPJ-EOSIM/LPJ_EOSIM_L2_DCH4E.001 and https://doi.org/10.5067/Community/LPJ-EOSIM/LPJ_EOSIM_L2_DCH4E_LL.001.',
- 'item_assets': {'era5-ch4-wetlands-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, ERA5 LPJ-EOSIM Model v2',
-   'description': 'Methane emissions from wetlands in units of kilograms of methane per meter squared per second. ECMWF Re-Analysis (ERA5) as input to LPJ-EOSIM model.'},
-  'merra2-ch4-wetlands-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, MERRA-2 LPJ-EOSIM Model v2',
-   'description': 'Methane emissions from wetlands in units of kilograms of methane per meter squared per second. Modern-Era Retrospective analysis for Research and Applications Version 2 (MERRA-2) data as input to LPJ-EOSIM model.'},
-  'ensemble-mean-ch4-wetlands-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, Ensemble Mean LPJ-EOSIM Model v2',
-   'description': 'Methane emissions from wetlands in units of kilograms of methane per meter squared per second. Ensemble of multiple climate forcing data sources input to LPJ-EOSIM model.'}},
- 'stac_version': '1.0.0',
- 'stac_extensions': ['https://stac-extensions.github.io/render/v1.0.0/schema.json',
-  'https://stac-extensions.github.io/item-assets/v1.0.0/schema.json'],
- 'dashboard:is_periodic': True,
- 'dashboard:time_density': 'day'}
-
-
-

Examining the contents of our collection under summaries, we see that the data is available from January 1990 to December 2024. By looking at dashboard: time density, we can see that these observations are collected monthly.

-
-
# Create a function that would search for a data collection in the US GHG Center STAC API
-
-# First, we need to define the function
-# The name of the function = "get_item_count"
-# The argument that will be passed through the defined function = "collection_id"
-
-def get_item_count(collection_id):
-
-    # Set a counter for the number of items existing in the collection
-    count = 0
-
-    # Define the path to retrieve the granules (items) of the collection of interest in the STAC API
-    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
-
-    # Run a while loop to make HTTP requests until there are no more URLs associated with the collection in the STAC API
-    while True:
-
-        # Retrieve information about the granules by sending a "get" request to the STAC API using the defined collection path
-        response = requests.get(items_url)
-
-        # If the items do not exist, print an error message and quit the loop
-        if not response.ok:
-            print("error getting items")
-            exit()
-
-        # Return the results of the HTTP response as JSON
-        stac = response.json()
-
-        # Increase the "count" by the number of items (granules) returned in the response
-        count += int(stac["context"].get("returned", 0))
-
-        # Retrieve information about the next URL associated with the collection in the STAC API (if applicable)
-        next = [link for link in stac["links"] if link["rel"] == "next"]
-
-        # Exit the loop if there are no other URLs
-        if not next:
-            break
-        
-        # Ensure the information gathered by other STAC API links associated with the collection are added to the original path
-        # "href" is the identifier for each of the tiles stored in the STAC API
-        items_url = next[0]["href"]
-        # temp = items_url.split('/')
-        # temp.insert(3, 'ghgcenter')
-        # temp.insert(4, 'api')
-        # temp.insert(5, 'stac')
-        # items_url = '/'.join(temp)
-
-    # Return the information about the total number of granules found associated with the collection
-    return count
-
-
-
# Apply the function created above "get_item_count" to the data collection
-number_of_items = get_item_count(collection_name)
-
-# Get the information about the number of granules found in the collection
-items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit=800"
-).json()["features"]
-
-# Print the total number of items (granules) found
-print(f"Found {len(items)} items")
-
-
Found 800 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
-
{'id': 'lpjeosim-wetlandch4-daygrid-v2-20240531',
- 'bbox': [-180.0, -90.0, 180.0, 90.0],
- 'type': 'Feature',
- 'links': [{'rel': 'collection',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531'},
-  {'title': 'Map of Item',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531/map?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'type': 'text/html'}],
- 'assets': {'era5-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_ERA5_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, ERA5 LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. ECMWF Re-Analysis (ERA5) as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.1533866629018803e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [60696, 1228, 228, 119, 78, 51, 35, 24, 2, 2]},
-     'statistics': {'mean': 3.818678323370309e-11,
-      'stddev': 1.385319732851768e-10,
-      'maximum': 3.1533866629018803e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09837962962963}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'merra2-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_MERRA2_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, MERRA-2 LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. Modern-Era Retrospective analysis for Research and Applications Version 2 (MERRA-2) data as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 5.284403581384822e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61618, 503, 152, 101, 53, 21, 5, 6, 0, 1]},
-     'statistics': {'mean': 4.2160033887186084e-11,
-      'stddev': 1.6741675825683113e-10,
-      'maximum': 5.284403581384822e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09722222222222}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'ensemble-mean-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_ensemble_mean_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, Ensemble Mean LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. Ensemble of multiple climate forcing data sources input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.8867296048294975e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61178, 819, 185, 124, 78, 46, 22, 7, 0, 1]},
-     'statistics': {'mean': 4.0174325630166816e-11,
-      'stddev': 1.493077090568075e-10,
-      'maximum': 3.8867296048294975e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09722222222222}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'rendered_preview': {'title': 'Rendered preview',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531/preview.png?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'roles': ['overview'],
-   'type': 'image/png'}},
- 'geometry': {'type': 'Polygon',
-  'coordinates': [[[-180, -90],
-    [180, -90],
-    [180, 90],
-    [-180, 90],
-    [-180, -90]]]},
- 'collection': 'lpjeosim-wetlandch4-daygrid-v2',
- 'properties': {'datetime': '2024-05-31T00:00:00+00:00'},
- 'stac_version': '1.0.0',
- 'stac_extensions': ['https://stac-extensions.github.io/raster/v1.1.0/schema.json',
-  'https://stac-extensions.github.io/projection/v1.1.0/schema.json']}
-
-
-

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in the rescale_values.

-
-
# Fetch the minimum and maximum values for rescaling
-rescale_values = {'max': 0.0003, 'min': 0.0}
-
-
-
-

Explore Changes in Methane (CH4) Emission Levels Using the Raster API

-

In this notebook, we will explore the temporal impacts of methane emissions. We will visualize the outputs on a map using folium.

-
-
# Now we create a dictionary where the start datetime values for each granule is queried more explicitly by year and month (e.g., 2020-02)
-items = {item["properties"]["datetime"][:10]: item for item in items} 
-
-

Now, we will pass the item id, collection name, and rescaling_factor to the Raster API endpoint. We will do this twice, once for date 1 mentioned in the next cell and again for date 2, so we can visualize each event independently.

-
-
# Choose a color for displaying the tiles
-# Please refer to matplotlib library if you'd prefer choosing a different color ramp.
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "magma" 
-
-# Make a GET request to retrieve information for the date mentioned below
-date1 = '2024-01-01'
-date1_tile = requests.get(
-
-    # Pass the collection name, collection date, and its ID
-    # To change the year, month and date of the observed parameter, you can modify the date2 variable above
-    f"{RASTER_API_URL}/collections/{items[date1]['collection']}/items/{items[date1]['id']}/tilejson.json?"
-
-    # Pass the asset name
-    f"&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-
-# Return response in JSON format
-).json()
-
-# Print the properties of the retrieved granule to the console
-date1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240101/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ensemble-mean-ch4-wetlands-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=0.0%2C0.0003'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Make a GET request to retrieve information for date mentioned below
-date2 = '2024-01-30'
-date2_tile = requests.get(
-
-    # Pass the collection name, collection date, and its ID
-    # To change the year, month and date of the observed parameter, you can modify the date2 variable above
-    f"{RASTER_API_URL}/collections/{items[date2]['collection']}/items/{items[date2]['id']}/tilejson.json?"
-
-    # Pass the asset name
-    f"&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}",
-
-# Return response in JSON format 
-).json()
-
-# Print the properties of the retrieved granule to the console
-date2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240130/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ensemble-mean-ch4-wetlands-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=0.0%2C0.0003'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Visualize CHβ‚„ Emissions

-
-
# For this study we are going to compare the CHβ‚„ Emissions in date1 and date2 along the coast of California
-# To change the location, you can simply insert the latitude and longitude of the area of your interest in the "location=(LAT, LONG)" statement
-
-# Set initial zoom and center of map
-# 'folium.plugins' allows mapping side-by-side
-map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
-
-# Define the first map layer for tile fetched for date 1
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_date1 = TileLayer(
-    tiles=date1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.5, # Adjust the transparency of the layer
-)
-
-# Add the first layer to the Dual Map
-map_layer_date1.add_to(map_.m1)
-
-
-# Define the second map layer for the tile fetched for date 2
-map_layer_date2 = TileLayer(
-    tiles=date2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.5, # Adjust the transparency of the layer
-)
-
-# Add the second layer to the Dual Map
-map_layer_date2.add_to(map_.m2)
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculate Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas, United States.

-
-
# The Area of Interest (AOI) is set to Texas (USA)
-texas_aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-95, 29], # Southeast Bounding Coordinate
-                [-95, 33], # Northeast Bounding Coordinate
-                [-104, 33], # Northwest Bounding Coordinate
-                [-104,29], # Southwest Bounding Coordinate
-                [-95, 29] # Closing the polygon at the Southeast Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Create a new map to display the generated polygon
-aoi_map = Map(
-
-    # Base map is set to OpenStreetMap
-    tiles="OpenStreetMap",
-
-    # Define the spatial properties for the map
-    location=[
-        30,-101 # coordinates for the AOI in Texas, USA
-    ],
-
-    # Set the zoom value
-    zoom_start=6, # zoom in or out by increasing or decreasing the value here
-)
-
-# Insert the polygon to the map
-folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
-
-# Visualize the map
-aoi_map
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Before we generate stats for a specific item (observation), we first check the total number of items available within the collection and retrieve the information regarding their start datetime.

-
-
# Check the total number of items available within the collection
-items = requests.get(
-    f"{STAC_API_URL}/collections/{collection_name}/items?limit=800"
-).json()["features"]
-
-# Print the total number of items (granules) found
-print(f"Found {len(items)} items")
-
-
Found 800 items
-
-
-
-
# Examine the first item in the collection
-items[0]
-
-
{'id': 'lpjeosim-wetlandch4-daygrid-v2-20240531',
- 'bbox': [-180.0, -90.0, 180.0, 90.0],
- 'type': 'Feature',
- 'links': [{'rel': 'collection',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531'},
-  {'title': 'Map of Item',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531/map?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'type': 'text/html'}],
- 'assets': {'era5-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_ERA5_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, ERA5 LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. ECMWF Re-Analysis (ERA5) as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.1533866629018803e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [60696, 1228, 228, 119, 78, 51, 35, 24, 2, 2]},
-     'statistics': {'mean': 3.818678323370309e-11,
-      'stddev': 1.385319732851768e-10,
-      'maximum': 3.1533866629018803e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09837962962963}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'merra2-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_MERRA2_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, MERRA-2 LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. Modern-Era Retrospective analysis for Research and Applications Version 2 (MERRA-2) data as input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 5.284403581384822e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61618, 503, 152, 101, 53, 21, 5, 6, 0, 1]},
-     'statistics': {'mean': 4.2160033887186084e-11,
-      'stddev': 1.6741675825683113e-10,
-      'maximum': 5.284403581384822e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09722222222222}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'ensemble-mean-ch4-wetlands-emissions': {'href': 's3://lp-prod-protected/LPJ_EOSIM_L2_DCH4E_LL.001/LPJ_EOSIM_L2_DCH4E_LL_001_20240531/LPJ_EOSIM_L2_DCH4E_LL_ensemble_mean_001_20240531.tif',
-   'type': 'image/tiff; application=geotiff',
-   'roles': ['data', 'layer'],
-   'title': '(Daily) Wetland Methane Emissions, Ensemble Mean LPJ-EOSIM Model v2',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326,
-   'proj:wkt2': 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]',
-   'proj:shape': [360, 720],
-   'description': 'Methane emissions from wetlands in units of grams of methane per meter squared per second. Ensemble of multiple climate forcing data sources input to LPJ-EOSIM model.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -99999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 3.8867296048294975e-09,
-      'min': 0.0,
-      'count': 11,
-      'buckets': [61178, 819, 185, 124, 78, 46, 22, 7, 0, 1]},
-     'statistics': {'mean': 4.0174325630166816e-11,
-      'stddev': 1.493077090568075e-10,
-      'maximum': 3.8867296048294975e-09,
-      'minimum': 0.0,
-      'valid_percent': 24.09722222222222}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.7/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.5, 0.0, -180.0, 0.0, -0.5, 90.0, 0.0, 0.0, 1.0]},
-  'rendered_preview': {'title': 'Rendered preview',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240531/preview.png?assets=ensemble-mean-ch4-wetlands-emissions&rescale=0%2C3e-09&colormap_name=magma',
-   'rel': 'preview',
-   'roles': ['overview'],
-   'type': 'image/png'}},
- 'geometry': {'type': 'Polygon',
-  'coordinates': [[[-180, -90],
-    [180, -90],
-    [180, 90],
-    [-180, 90],
-    [-180, -90]]]},
- 'collection': 'lpjeosim-wetlandch4-daygrid-v2',
- 'properties': {'datetime': '2024-05-31T00:00:00+00:00'},
- 'stac_version': '1.0.0',
- 'stac_extensions': ['https://stac-extensions.github.io/raster/v1.1.0/schema.json',
-  'https://stac-extensions.github.io/projection/v1.1.0/schema.json']}
-
-
-

Now we need to develop a function that runs through the data collection and generates the statistics for a specific item (granule) within the boundaries of the AOI polygon.

-
-
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
-# Create a function that retrieves information regarding a specific granule using its asset name and raster identifier and generates the statistics for it
-
-# The function takes an item (granule) and a JSON (Texas polygon) as input parameters
-def generate_stats(item, geojson):
-
-    # A POST request is made to submit the data associated with the item of interest (specific observation) within the AOI boundaries to compute its statistics
-    result = requests.post(
-
-        # Raster API Endpoint for computing statistics
-        f"{RASTER_API_URL}/cog/statistics",
-
-        # Pass the URL to the item, asset name, and raster identifier as parameters
-        params={"url": item["assets"][asset_name]["href"]},
-
-        # Send the GeoJSON object (AOI polygon) along with the request
-        json=geojson,
-
-    # Return the response in JSON format
-    ).json()
-
-    # Return a dictionary containing the computed statistics along with the item's datetime information
-    return {
-        **result["properties"],
-        "datetime": item["properties"]["datetime"],
-    }
-
-

With the function above, we can generate the statistics for the area of interest.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Generate statistics using the created function "generate_stats" within the bounding box defined by the AOI polygon
-stats = [generate_stats(item, texas_aoi) for item in items]
-
-
CPU times: user 8.37 s, sys: 2.02 s, total: 10.4 s
-Wall time: 7min 25s
-
-
-
-
# Print the stats for the first item in the collection
-stats[0]
-
-
{'statistics': {'b1': {'min': 0.0,
-   'max': 1.4686858673673697e-10,
-   'mean': 1.0534791788918696e-11,
-   'count': 144.0,
-   'sum': 1.5170100731154434e-09,
-   'std': 2.322361621616834e-11,
-   'median': 1.983341876149458e-12,
-   'majority': 0.0,
-   'minority': 0.0,
-   'unique': 144.0,
-   'histogram': [[119.0, 13.0, 4.0, 1.0, 1.0, 2.0, 1.0, 1.0, 0.0, 2.0],
-    [0.0,
-     1.4686859367563088e-11,
-     2.9373718735126175e-11,
-     4.406057810268926e-11,
-     5.874743747025235e-11,
-     7.343430030726239e-11,
-     8.812115620537853e-11,
-     1.0280801210349466e-10,
-     1.174948749405047e-10,
-     1.3218173777751474e-10,
-     1.4686858673673697e-10]],
-   'valid_percent': 100.0,
-   'masked_pixels': 0.0,
-   'valid_pixels': 144.0,
-   'percentile_2': 9.560425300275503e-15,
-   'percentile_98': 1.1029595986533636e-10}},
- 'datetime': '2024-05-31T00:00:00+00:00'}
-
-
-
-
# Create a function that converts statistics in JSON format into a pandas DataFrame
-def clean_stats(stats_json) -> pd.DataFrame:
-
-    # Normalize the JSON data
-    df = pd.json_normalize(stats_json)
-
-    # Replace the naming "statistics.b1" in the columns
-    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
-
-    # Set the datetime format
-    df["date"] = pd.to_datetime(df["datetime"])
-
-    # Return the cleaned format
-    return df
-
-# Apply the generated function on the stats data
-df = clean_stats(stats)
-
-# Display the stats for the first 5 granules in the collection in the table
-# Change the value in the parenthesis to show more or a smaller number of rows in the table
-df.head(5)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02024-05-31T00:00:00+00:000.01.468686e-101.053479e-11144.01.517010e-092.322362e-111.983342e-120.00.0144.0[[119.0, 13.0, 4.0, 1.0, 1.0, 2.0, 1.0, 1.0, 0...100.00.0144.09.560425e-151.102960e-102024-05-31 00:00:00+00:00
12024-05-30T00:00:00+00:000.01.516797e-101.016293e-11144.01.463462e-092.298489e-111.655782e-120.00.0144.0[[122.0, 10.0, 4.0, 2.0, 2.0, 0.0, 2.0, 0.0, 0...100.00.0144.01.129274e-141.010287e-102024-05-30 00:00:00+00:00
22024-05-29T00:00:00+00:000.01.539605e-109.235067e-12144.01.329850e-092.194413e-111.510770e-120.00.0144.0[[122.0, 12.0, 4.0, 2.0, 0.0, 0.0, 2.0, 0.0, 1...100.00.0144.01.167209e-141.002319e-102024-05-29 00:00:00+00:00
32024-05-28T00:00:00+00:000.01.215138e-108.224680e-12144.01.184354e-091.798892e-111.588729e-120.00.0144.0[[119.0, 14.0, 3.0, 3.0, 1.0, 0.0, 2.0, 0.0, 1...100.00.0144.03.582269e-158.398084e-112024-05-28 00:00:00+00:00
42024-05-27T00:00:00+00:000.01.252385e-108.540256e-12144.01.229797e-091.867466e-111.676098e-120.00.0144.0[[119.0, 14.0, 3.0, 3.0, 1.0, 0.0, 1.0, 1.0, 1...100.00.0144.03.533827e-158.782612e-112024-05-27 00:00:00+00:00
- -
-
-
-
-

Visualize the Data as a Time Series

-

We can now explore the wetland methane emissions time series (January 1990 – December 2024) available for the Texas area of the U.S. We can plot the data set using the code below:

-
-
# Determine the width and height of the plot using the 'matplotlib' library
-# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(20, 10))
-
-# Plot the time series
-plt.plot(
-    df["date"], # X-axis: date
-    df["max"], # Y-axis: CHβ‚„ value
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=0.5, # Line width
-    label="Max daily CHβ‚„ emissions", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("Daily CH4 emissions g/m2")
-
-# Insert title for the plot
-plt.title("Daily CH4 emission Values for Texas, January 2022- March 2024")
-
-
Text(0.5, 1.0, 'Daily CH4 emission Values for Texas, January 2022- March 2024')
-
-
-
-
-

-
-
-
-
-

To take a closer look at the CH4 variability across this region, we are going to retrieve and display data collected during the February, 2024 observation.

-
-
# The 2024-02-25 observation is the 3rd item in the list
-# Considering that a list starts with "0", we need to insert "2" in the "items[2]" statement
-# Print the start Date Time of the third granule in the collection
-print(items[2]["properties"]["datetime"])
-
-
2024-05-29T00:00:00+00:00
-
-
-
-
# A GET request is made for the 3rd item in the collection
-observed_tile = requests.get(
-
-    # Pass the collection name, the item number in the list, and its ID
-    f"{RASTER_API_URL}/collections/{items[2]['collection']}/items/{items[2]['id']}/tilejson.json?&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}",
-
-# Return the response in JSON format
-).json()
-
-# Print the properties of the retrieved granule to the console
-observed_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/lpjeosim-wetlandch4-daygrid-v2/items/lpjeosim-wetlandch4-daygrid-v2-20240529/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ensemble-mean-ch4-wetlands-emissions&color_formula=gamma+r+1.05&colormap_name=magma&rescale=0.0%2C0.0003'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Create a new map to display the CH4 variability for the Texas region for Observed tile timeframe
-aoi_map_bbox = Map(
-
-    # Base map is set to OpenStreetMap
-    tiles="OpenStreetMap",
-
-    # Set the center of the map
-    location=[
-        30,-100
-    ],
-
-    # Set the zoom value
-    zoom_start=8,
-)
-
-# Define the map layer
-map_layer = TileLayer(
-    tiles=observed_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", opacity = 0.5 # Set the attribution and transparency
-)
-
-# Add the layer to the map
-map_layer.add_to(aoi_map_bbox)
-
-# Visualize the map
-aoi_map_bbox
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the Daily Wetland Methane Emissions, LPJ-EOSIM Model data: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the CH4 levels over the Texas region for two distinctive years 5. Create a table that displays the minimum, maximum, and sum of the CH4 levels for a specified region 6. Generate a time-series graph of the CH4 levels for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook_files/figure-html/cell-21-output-2.png b/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook_files/figure-html/cell-21-output-2.png deleted file mode 100644 index ae8d02a..0000000 Binary files a/_site/user_data_notebooks/lpjeosim-wetlandch4-monthgrid-v1_User_Notebook_files/figure-html/cell-21-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook.html b/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook.html deleted file mode 100644 index 72cf8df..0000000 --- a/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook.html +++ /dev/null @@ -1,12681 +0,0 @@ - - - - - - - - - - -MiCASA Land Carbon Flux – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

MiCASA Land Carbon Flux

-
- -
-
- Global, daily 0.1 degree resolution carbon fluxes from net primary production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), fuel wood burning emissions (FUEL), net ecosystem exchange (NEE), and net biosphere exchange (NBE) derived from the MiCASA model, version 1 -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- - - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the MiCASA Land Carbon Flux notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 0.1Β° x 0.1Β°
  • -
  • Temporal extent: January 1, 2001 - December 31, 2023
  • -
  • Temporal resolution: Daily and Monthly Averages
  • -
  • Unit: Grams of Carbon per square meter per day
  • -
  • Utility: Climate Research
  • -
-

For more, visit the MiCASA Land Carbon Flux data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for a given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Land-Atmosphere Carbon Flux data product
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint
  4. -
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison
  6. -
  7. After the visualization, perform zonal statistics for a given polygon
  8. -
-
-
-

About the Data

-
-

MiCASA Land Carbon Flux

-

This dataset presents a variety of carbon flux parameters derived from the MΓ‘s Informada Carnegie-Ames-Stanford-Approach (MiCASA) model. The model’s input data includes air temperature, precipitation, incident solar radiation, a soil classification map, and several satellite derived products. All model calculations are driven by analyzed meteorological data from NASA’s Modern-Era Retrospective analysis for Research and Application, Version 2 (MERRA-2). The resulting product provides global, daily data at 0.1 degree resolution from January 2001 through December 2023. It includes carbon flux variables expressed in units of kilograms of carbon per square meter per day (kg Carbon/mΒ²/day) from net primary production (NPP), heterotrophic respiration (Rh), wildfire emissions (FIRE), fuel wood burning emissions (FUEL), net ecosystem exchange (NEE), and net biosphere exchange (NBE). The latter two are derived from the first four (see Scientific Details below). MiCASA is an extensive revision of the CASA – Global Fire Emissions Database, version 3 (CASA-GFED3) product. CASA-GFED3 and earlier versions of MERRA-driven CASA-GFED carbon fluxes have been used in several atmospheric carbon dioxide (COβ‚‚) transport studies, serve as a community standard for priors of flux inversion systems, and through the support of NASA’s Carbon Monitoring System (CMS), help characterize, quantify, understand and predict the evolution of global carbon sources and sinks.

-

For more information regarding this dataset, please visit the U.S. Greenhouse Gas Center.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. MiCASA Land Carbon Flux - item: One granule in the dataset, e.g. one daily file of carbon fluxes - asset: A variable available within the granule, e.g. net primary productivity or net ecosystem exchange - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-
-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the MiCASA Land Carbon Flux dataset is micasa-carbonflux-monthgrid-v1.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch metadata from the STAC API.
-collection_name = "micasa-carbonflux-monthgrid-v1"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac_client' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2001 to December 2023. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is monthly.

-
-
#items = list(collection.get_items())  # Convert the iterator to a list
-#print(f"Found {len(items)} items")
-
-
-
search = catalog.search(
-    collections=collection_name,
-    datetime=['2010-01-01T00:00:00Z','2010-12-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-
-
<Item id=micasa-carbonflux-monthgrid-v1-201012>
-<Item id=micasa-carbonflux-monthgrid-v1-201011>
-<Item id=micasa-carbonflux-monthgrid-v1-201010>
-<Item id=micasa-carbonflux-monthgrid-v1-201009>
-<Item id=micasa-carbonflux-monthgrid-v1-201008>
-<Item id=micasa-carbonflux-monthgrid-v1-201007>
-<Item id=micasa-carbonflux-monthgrid-v1-201006>
-<Item id=micasa-carbonflux-monthgrid-v1-201005>
-<Item id=micasa-carbonflux-monthgrid-v1-201004>
-<Item id=micasa-carbonflux-monthgrid-v1-201003>
-<Item id=micasa-carbonflux-monthgrid-v1-201002>
-<Item id=micasa-carbonflux-monthgrid-v1-201001>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items = search.item_collection()
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020-05"
-items_dict = {item.properties["start_datetime"][:7]: item for item in items}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus on net primary productivity, so our asset of interest is:
-asset_name = "npp"
-
-
-
-
-
-

Creating Maps Using Folium

-

You will now explore changes in the land atmosphere Carbon flux Net Primary Productivity at a given location. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2010-01","2010-07"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-observation_date_1 = items_dict[dates[0]]
-collection_id = observation_date_1.collection_id
-item_id = observation_date_1.id
-# Select relevant asset (NPP)
-object = observation_date_1.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'unit': 'g C m-2 day-1',
-  'scale': 1.0,
-  'nodata': 'nan',
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 5.948176860809326,
-   'min': -0.3724845349788666,
-   'count': 11,
-   'buckets': [488513, 9595, 5022, 3321, 2776, 3213, 4254, 4777, 2672, 145]},
-  'statistics': {'mean': 0.1637769341468811,
-   'stddev': 0.7254217411478966,
-   'maximum': 5.948176860809326,
-   'minimum': -0.3724845349788666,
-   'valid_percent': 100.0}}]
-
-
-
-
# Use raster band statistics to generate an appropriate color bar range.
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-
{'max': 5.948176860809326, 'min': -0.3724845349788666}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "PuRd"
-
-
-
# Make a GET request to retrieve information for your first date/time
-observation_date_1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/micasa-carbonflux-monthgrid-v1/items/micasa-carbonflux-monthgrid-v1-201001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=npp&color_formula=gamma+r+1.05&colormap_name=purd&rescale=-0.3724845349788666%2C5.948176860809326'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 179.99999999999994, 90.0],
- 'center': [-2.842170943040401e-14, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile - 
-# We want date tiles 1 and 2 to have the same colorbar range for visual comparison.
-observation_date_2 = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = observation_date_2.collection_id
-item_id = observation_date_2.id
-# Make a GET request to retrieve tile information
-observation_date_2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-observation_date_2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/micasa-carbonflux-monthgrid-v1/items/micasa-carbonflux-monthgrid-v1-201007/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=npp&color_formula=gamma+r+1.05&colormap_name=purd&rescale=-0.3724845349788666%2C5.948176860809326'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 179.99999999999994, 90.0],
- 'center': [-2.842170943040401e-14, 0.0, 0]}
-
-
-
-
-

Generate Map

-

For this example, we’ll look at NPP over Amazon Rainforest, South America.

-

First, let’s determine an area of interest (AOI) to visualize via GeoJSON.

-
-
# Set a name for the AOI to use in plots later
-aoi_name = "Amazon Rainforest"
-# The Area of Interest (AOI) is set to Amazon Rainforest, South America
-aoi = {
-    "type": "Feature",
-    "properties": {},
-    "geometry": {
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-74.0, -3.0],   # Southwest Bounding Coordinate
-                [-74.0, 5.0],    # Southeast Bounding Coordinate
-                [-60.0, 5.0],    # Northeast Bounding Coordinate
-                [-60.0, -3.0],   # Northwest Bounding Coordinate
-                [-74.0, -3.0]    # Closing the polygon at the Southwest Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(0, -66), zoom_start=5)
-
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_observation_date_1 = TileLayer(
-    tiles=observation_date_1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"{dates[0]} NPP", # Title for the layer
-    overlay= True, # The layer can be overlaid on the map
-    legendEnabled = True # Enable displaying the legend on the map
-)
-
-# Add the first layer to the Dual Map
-# This will appear on the left side, specified by 'm1'
-map_layer_observation_date_1.add_to(map_.m1)
-
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_observation_date_2 = TileLayer(
-    tiles=observation_date_2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    name=f"{dates[1]} NPP", # Title for the layer
-    overlay= True, # The layer can be overlaid on the map
-    legendEnabled = True # Enable displaying the legend on the map
-)
-
-# Add the second layer to the Dual Map
-# This will appear on the left side, specified by 'm2'
-map_layer_observation_date_2.add_to(map_.m2)
-
-# Display data marker on each map
-folium.Marker((0, -66), tooltip=aoi_name).add_to(map_)
-# Display AOI on each map
-folium.GeoJson(aoi, name=f"{aoi_name} AOI",style_function=lambda feature: {"fillColor": "none"}).add_to(map_)
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='NPP (g Carbon/m2/daily)',dark=True)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculate Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in the Amazon Rainforest.

-
-
# Set a name for the AOI to use in plots later
-aoi_name = "Amazon Rainforest"
-# The Area of Interest (AOI) is set to Amazon Rainforest, South America
-aoi = {
-    "type": "Feature",
-    "properties": {},
-    "geometry": {
-        "coordinates": [
-            [
-                # [longitude, latitude]
-                [-74.0, -3.0],   # Southwest Bounding Coordinate
-                [-74.0, 5.0],    # Southeast Bounding Coordinate
-                [-60.0, 5.0],    # Northeast Bounding Coordinate
-                [-60.0, -3.0],   # Northwest Bounding Coordinate
-                [-74.0, -3.0]    # Closing the polygon at the Southwest Bounding Coordinate
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-

We’ll generate statistics for the data in our AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first five rows of statistics from our DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 42.9 ms, sys: 3.88 ms, total: 46.8 ms
-Wall time: 4.63 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02010-12-01T00:00:00+00:000.000000000000000000004.892629146575927734384.2147655487060546875011200.0000000000000000000047205.375000000000000000000.674335012655701726564.466843605041503906250.000000000000000000000.0947549343109130859411151.00000000000000000000[[17, 11, 43, 129, 196, 517, 399, 617, 2585, 6...100.000000000000000000000.0000000000000000000011200.000000000000000000002.064235210418701171884.746463775634765625002010-12-01 00:00:00+00:00
12010-11-01T00:00:00+00:000.000000000000000000004.990666866302490234384.3214492797851562500011200.0000000000000000000048400.234375000000000000000.676234517757575481774.567324638366699218750.000000000000000000000.1135073825716972351111152.00000000000000000000[[21, 13, 38, 124, 154, 462, 442, 634, 2499, 6...100.000000000000000000000.0000000000000000000011200.000000000000000000002.118932008743286132814.855916023254394531252010-11-01 00:00:00+00:00
22010-10-01T00:00:00+00:000.000000000000000000005.118894100189208984384.3789420127868652343811200.0000000000000000000049044.148437500000000000000.704619599346518965534.649842262268066406250.000000000000000000000.0031286403536796569811153.00000000000000000000[[21, 14, 48, 137, 155, 492, 540, 620, 2731, 6...100.000000000000000000000.0000000000000000000011200.000000000000000000002.054182767868041992194.930951595306396484382010-10-01 00:00:00+00:00
32010-09-01T00:00:00+00:000.000000000000000000005.203814029693603515624.2599253654479980468811200.0000000000000000000047711.164062500000000000000.649258105832963061674.480595111846923828120.000000000000000000000.0720245540142059326211170.00000000000000000000[[18, 13, 42, 135, 184, 544, 540, 827, 7751, 1...100.000000000000000000000.0000000000000000000011200.000000000000000000002.139498472213745117194.928465366363525390622010-09-01 00:00:00+00:00
42010-08-01T00:00:00+00:000.000000000000000000005.273403167724609375004.1534409523010253906211200.0000000000000000000046518.539062500000000000000.590384178918951008094.294373035430908203120.000000000000000000000.0074098380282521247911165.00000000000000000000[[15, 13, 39, 106, 164, 576, 668, 2322, 6589, ...100.000000000000000000000.0000000000000000000011200.000000000000000000002.304020404815673828124.916975498199462890622010-08-01 00:00:00+00:00
- -
-
-
-
-
# Apply the generated function on the stats data
-df = clean_stats(stats)
-
-# Display the stats for the first 5 granules in the collection in the table
-# Change the value in the parenthesis to show more or a smaller number of rows in the table
-df.head(5)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02023-12-01T00:00:00+00:000.04.9080903.80319011200.042595.7265621.0016724.2870860.00.04521411176.0[[107, 172, 135, 249, 859, 773, 672, 1095, 314...100.00.011200.00.8160554.7402422023-12-01 00:00:00+00:00
12023-11-01T00:00:00+00:000.04.8997843.73391511200.041819.8476561.0949034.3372450.00.00333111173.0[[123, 197, 131, 300, 1135, 1008, 936, 635, 17...100.00.011200.00.6849804.7781902023-11-01 00:00:00+00:00
22023-10-01T00:00:00+00:000.05.1012304.05960711200.045467.5937500.9294274.4770790.00.00131311170.0[[40, 211, 124, 138, 404, 592, 1006, 1174, 361...100.00.011200.00.9226864.8860182023-10-01 00:00:00+00:00
32023-09-01T00:00:00+00:000.05.2060584.26581511200.047777.1250000.8091274.5652170.00.14841411157.0[[21, 132, 132, 140, 174, 455, 581, 890, 5920,...100.00.011200.01.3369244.9748022023-09-01 00:00:00+00:00
42023-08-01T00:00:00+00:000.05.1677444.23962111200.047483.7578120.6371524.4326800.00.17979211156.0[[18, 13, 50, 133, 165, 402, 674, 940, 7165, 1...100.00.011200.02.0880834.9438812023-08-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

You can now explore the net primary production values using this data collection (January 2021 -December 2023) for the Amazon Rainforest, South America region. You can plot the data set using the code below:

-
-
# Determine the width and height of the plot using the 'matplotlib' library
-# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(10, 5)) 
-
-# Change 'which_stat' below if you would rather look at a different statistic, like minimum or mean.
-which_stat = "mean"
-
-# Plot the time series analysis of the daily NPP Values for Amazon Rainforest, South America
-plt.plot(
-    df["date"], # X-axis: date
-    df[which_stat], # Y-axis: NPP value
-    color="#BA4066", # Line color in hex format
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=asset_name.upper(), # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("g Carbon/m2/day")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {asset_name.upper()} for {aoi_name}")
-
-# Add data citation
-plt.text(
-    df["date"].iloc[-1],           # X-coordinate of the text
-    df[which_stat].min(),                  # Y-coordinate of the text
-
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=8,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully completed the following steps for the STAC collection for the MiCASA Land Carbon Flux dataset: 1. Install and import the necessary libraries 2. Fetch the collection from STAC collections using the appropriate endpoints 3. Count the number of existing granules within the collection 4. Map and compare the Net Primary Production (NPP) levels over the Amazon Rainforest, South America area for two distinctive months/years 5. Create a table that displays the minimum, maximum, and sum of the Net Primary Production (NPP) values for a specified region 6. Generate a time-series graph of the Net Primary Production (NPP) values for a specified region

-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook_files/figure-html/cell-21-output-1.png b/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook_files/figure-html/cell-21-output-1.png deleted file mode 100644 index b01e8f8..0000000 Binary files a/_site/user_data_notebooks/micasa-carbonflux-daygrid-v1_User_Notebook_files/figure-html/cell-21-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook.html b/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook.html deleted file mode 100644 index 0d849cd..0000000 --- a/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook.html +++ /dev/null @@ -1,1474 +0,0 @@ - - - - - - - - - - - - -Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower sites in the Northeastern U.S. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

September 19, 2024

-
-
- - -
- - - -
- - -
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric concentrations of carbon dioxide (COβ‚‚) and methane (CHβ‚„) collected at NIST Urban Test Bed tower sites in the Northeastern U.S.
  2. -
  3. Visualize the time series data
  4. -
-
-
-

About the Data

-

NIST is engaged in research to improve measurement of greenhouse gas emissions in areas containing multiple emission sources and sinks, such as cities. NIST’s objective is to develop measurement tools supporting independent means to increase the accuracy of greenhouse gas emissions data at urban and regional geospatial scales. NIST has established three test beds in U.S. cities to develop and evaluate the performance of advanced measurement capabilities for emissions independent of their origin. Located in Indianapolis, Indiana, the Los Angeles air basin of California, and the U.S. Northeast corridor (beginning with the Baltimore/Washington D.C. region), the test beds have been selected for their varying meteorology, terrain and emissions characteristics. These test beds will serve as a means to independently diagnose the accuracy of emissions data obtained directly from emission or uptake sources.

-

For more information regarding this dataset, please visit the Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Importing required libraries

-
-
import requests
-import pandas as pd
-import matplotlib.pyplot as plt
-import plotly.graph_objs as go
-from io import StringIO
-
-
-
-

Querying the Feature Vector API

-

First, we are going to import the required libraries. Once imported, they allow better executing a query in the GHG Center Feature Vector Application Programming Interface (API) where the items for this collection are stored.

-
-
FEATURE_API_URL="https://earth.gov/ghgcenter/api/features"
-
-
-
# Function to fetch CSV data for a station with a limit parameter
-def get_station_data_csv(station_code, gas_type, frequency, elevation_m, limit=10000):
-    # Use the ?f=csv and limit query to get more rows
-    url = f"https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_nec_{station_code}_{gas_type}_{frequency}_concentrations/items?f=csv&elevation_m={elevation_m}&limit={limit}"
-    print(url)
-    try:
-        response = requests.get(url)
-        print(response)
-        # Check if the response is successful
-        if response.status_code != 200:
-            print(f"Failed to fetch data for {station_code}. Status code: {response.status_code}")
-            return pd.DataFrame()
-
-        # Check if the content type is CSV
-        content_type = response.headers.get('Content-Type')
-        if 'text/csv' not in content_type:
-            print(f"Unexpected content type for {station_code}: {content_type}")
-            print("Response content:", response.text)
-            return pd.DataFrame()
-
-        # Read the CSV content into a pandas DataFrame
-        csv_data = StringIO(response.text)
-        return pd.read_csv(csv_data)
-    
-    except requests.exceptions.RequestException as e:
-        print(f"Request failed: {e}")
-        return pd.DataFrame()
-
-
-
-

Visualizing the CHβ‚„ data for two NEC stations

-
-
# Get station name and elevation from metdata dataframe
-# Fetch data for UNY (elevation 230) and TMD (elevation 489), using limit=10000
-# ch4/co2 select the ghg 
-uny_data = get_station_data_csv('uny', 'ch4', 'hourly', 483, limit=10000)
-tmd_data = get_station_data_csv('tmd', 'ch4', 'hourly', 561, limit=10000)
-
-# Check if data was successfully retrieved before proceeding
-if uny_data.empty or tmd_data.empty:
-    print("No data available for one or both stations. Exiting.")
-else:
-    # Convert the 'datetime' column to datetime for plotting
-    uny_data['datetime'] = pd.to_datetime(uny_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-    tmd_data['datetime'] = pd.to_datetime(tmd_data['datetime'], format='%Y-%m-%dT%H:%M:%SZ')
-
-    # Plot the data
-    plt.figure(figsize=(10, 6))
-    plt.plot(uny_data['datetime'], uny_data['value'], label='UNY (230m)', color='blue', marker='o')
-    plt.plot(tmd_data['datetime'], tmd_data['value'], label='TMD (489m)', color='green', marker='o')
-
-    plt.title('Methane (CHβ‚„) Hourly Concentrations Over Time for UNY and TMD Stations')
-    plt.xlabel('Time')
-    plt.ylabel('CH4 Concentration (ppb)')
-    plt.legend()
-    plt.grid(True)
-
-    # Show plot
-    plt.show()
-
-
https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_nec_uny_ch4_hourly_concentrations/items?f=csv&elevation_m=483&limit=10000
-<Response [200]>
-https://earth.gov/ghgcenter/api/features/collections/public.nist_testbed_nec_tmd_ch4_hourly_concentrations/items?f=csv&elevation_m=561&limit=10000
-<Response [200]>
-
-
-
-
-

-
-
-
-
- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png b/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png deleted file mode 100644 index 4199eab..0000000 Binary files a/_site/user_data_notebooks/nec-testbed-ghg-concentrations_User_Notebook_files/figure-html/cell-5-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/noaa-insitu_User_Notebook.html b/_site/user_data_notebooks/noaa-insitu_User_Notebook.html deleted file mode 100644 index 33c14ed..0000000 --- a/_site/user_data_notebooks/noaa-insitu_User_Notebook.html +++ /dev/null @@ -1,1910 +0,0 @@ - - - - - - - - - - - - -Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory

-
- -
-
- Atmospheric concentrations of carbon dioxide (COβ‚‚) from discrete air samples collected since 1968 at globally distributed surface sites. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

September 22, 2023

-
-
- - -
- - - -
- - -
-

Run this notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below.

-

Launch in the US GHG Center JupyterHub (requires access)

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given data. The collection processed in this notebook is the Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.
  2. -
  3. Visualize the time series data
  4. -
-
-
-

About the Data

-

The Global Greenhouse Gas Reference Network (GGGRN) for the Carbon Cycle and Greenhouse Gases (CCGG) Group is part of NOAA’S Global Monitoring Laboratory (GML) in Boulder, CO. The Reference Network measures the atmospheric distribution and trends of the three main long-term drivers of climate change, carbon dioxide (COβ‚‚), methane (CHβ‚„), and nitrous oxide (N2O), as well as carbon monoxide (CO) and many other trace gases which help interpretation of the main GHGs. The Reference Network measurement program includes continuous in-situ measurements at 4 baseline observatories (global background sites) and 8 tall towers, as well as flask-air samples collected by volunteers at over 50 additional regional background sites and from small aircraft conducting regular vertical profiles. The air samples are returned to GML for analysis where measurements of about 55 trace gases are done. NOAA’s GGGRN maintains the World Meteorological Organization international calibration scales for COβ‚‚, CHβ‚„, CO, N2O, and SF6 in air. The measurements from the GGGRN serve as a comparison with measurements made by many other international laboratories, and with regional studies. They are widely used in modeling studies that infer space-time patterns of emissions and removals of greenhouse gases that are optimally consistent with the atmospheric observations, given wind patterns. These data serve as an early warning for climate β€œsurprises”. The measurements are also helpful for the ongoing evaluation of remote sensing technologies.

-

For more information regarding this dataset, please visit the Atmospheric Carbon Dioxide Concentrations from NOAA GML data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Importing required libraries

-
-
import numpy as np
-import pandas as pd
-from glob import glob
-from io import StringIO
-import matplotlib.pyplot as plt
-import requests
-
-
/Users/rrimal/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
-  warnings.warn(
-
-
-
-
-

Reading the NOAA data from GitHub repo

-
-
github_repo_owner = "NASA-IMPACT"
-github_repo_name = "noaa-viz"
-folder_path_ch4, folder_path_co2 = "flask/ch4", "flask/c02"
-combined_df_co2, combined_df_ch4 = pd.DataFrame(), pd.DataFrame()
-
-
-# Function to fetch and append a file from GitHub
-def append_github_file(file_url):
-    response = requests.get(file_url)
-    response.raise_for_status()
-    return response.text
-
-# Get the list of CH4 files in the specified directory using GitHub API
-github_api_url = f"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}"
-response = requests.get(github_api_url)
-response.raise_for_status()
-file_list_ch4 = response.json()
-
-# Get the list of CO2 files in the specified directory using GitHub API
-github_api_url = f"https://api.github.com/repos/{github_repo_owner}/{github_repo_name}/contents/{folder_path_ch4}"
-response = requests.get(github_api_url)
-response.raise_for_status()
-file_list_co2 = response.json()
-
-
-
-

Concatenating the CH4 data into a single DataFrame

-
-
for file_info in file_list_ch4:
-    if file_info["name"].endswith("txt"):
-        file_content = append_github_file(file_info["download_url"])
-        Lines = file_content.splitlines()
-        index = Lines.index("# VARIABLE ORDER")+2
-        df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-        combined_df_ch4 = pd.concat([combined_df_ch4, df], ignore_index=True)
-        
-
-
/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/850940753.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-
-
-
-
-

Concatenating the CO2 data into a single DataFrame

-
-
for file_info in file_list_co2:
-    if file_info["name"].endswith("txt"):
-        file_content = append_github_file(file_info["download_url"])
-        Lines = file_content.splitlines()
-        index = Lines.index("# VARIABLE ORDER")+2
-        df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-        combined_df_co2 = pd.concat([combined_df_co2, df], ignore_index=True)
-        
-
-
/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1028171191.py:6: FutureWarning: The 'delim_whitespace' keyword in pd.read_csv is deprecated and will be removed in a future version. Use ``sep='\s+'`` instead
-  df = pd.read_csv(StringIO("\n".join(Lines[index:])), delim_whitespace=True)
-
-
-
-
-

Visualizing the NOAA data for CH4 and CO2

-
-
site_to_filter = 'ABP'
-filtered_df = combined_df_co2[combined_df_co2['site_code'] == site_to_filter]
-
-filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
-
-# Set the "Date" column as the index
-filtered_df.set_index('datetime', inplace=True)
-
-# Create a time series plot for 'Data' and 'Value'
-plt.figure(figsize=(12, 6))
-plt.plot(filtered_df.index, filtered_df['value'], label='Carbon Dioxide(CO2) Concentration (ppm)')
-plt.xlabel("Observed Date/Time")
-plt.ylabel("Carbon Dioxide(CO2) Concentration (ppm)")
-plt.title(f"Observed Co2 Concentration {site_to_filter}")
-plt.legend()
-plt.grid(True)
-# plt.show()
-
-
/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/2606016741.py:4: SettingWithCopyWarning: 
-A value is trying to be set on a copy of a slice from a DataFrame.
-Try using .loc[row_indexer,col_indexer] = value instead
-
-See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
-  filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
-
-
-
-
-

-
-
-
-
-
-
site_to_filter = 'ABP'
-filtered_df = combined_df_ch4[combined_df_ch4['site_code'] == site_to_filter]
-filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
-
-# Set the "Date" column as the index
-filtered_df.set_index('datetime', inplace=True)
-
-# Create a time series plot for 'Data' and 'Value'
-plt.figure(figsize=(12, 6))
-plt.plot(filtered_df.index, filtered_df['value'], label='Methane Ch4 Concentration (ppb)')
-plt.xlabel("Observation Date/Time")
-plt.ylabel("Methane Ch4 Concentration (ppb)")
-plt.title(f"Observed CH4 Concentration {site_to_filter}")
-plt.legend()
-plt.grid(True)
-plt.show()
-
-
/var/folders/c2/vxj2w9ms5899ncnjj83x65y00000gp/T/ipykernel_28429/1635934907.py:3: SettingWithCopyWarning: 
-A value is trying to be set on a copy of a slice from a DataFrame.
-Try using .loc[row_indexer,col_indexer] = value instead
-
-See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
-  filtered_df['datetime'] = pd.to_datetime(filtered_df['datetime'])
-
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully visualized the data for Atmospheric Carbon Dioxide Concentrations from NOAA Global Monitoring Laboratory.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from GitHub API using the appropriate endpoints
  4. -
  5. Concatenating the CO2 and CH4 data into a single DataFrame
  6. -
  7. Visualizing the NOAA data for CO2 and CH4
  8. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-6-output-2.png b/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-6-output-2.png deleted file mode 100644 index bbae5c7..0000000 Binary files a/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-6-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png b/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png deleted file mode 100644 index 1c455d4..0000000 Binary files a/_site/user_data_notebooks/noaa-insitu_User_Notebook_files/figure-html/cell-7-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2-mip-National-co2budget.html b/_site/user_data_notebooks/oco2-mip-National-co2budget.html deleted file mode 100644 index 9510a07..0000000 --- a/_site/user_data_notebooks/oco2-mip-National-co2budget.html +++ /dev/null @@ -1,1926 +0,0 @@ - - - - - - - - - - - - -OCO-2 MIP National Top-Down CO2 Budgets – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 MIP National Top-Down CO2 Budgets

-
- -
-
- Pilot National-total top-down carbon dioxide budgets of carbon dioxide emissions during 2015-2020, version 1. -
-
- - -
- -
-
Author
-
-

Brendan Byrne

-
-
- -
-
Published
-
-

March 21, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the OCO-2 MIP Top-down CO2 Budgets notebook in the US GHG Center JupyterHub.

-
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1Β° x 1Β°
  • -
  • Temporal extent: 2015 – 2020
  • -
  • Temporal resolution: Annual
  • -
  • Unit: Grams of carbon dioxide per square meter per year
  • -
  • Utility: Climate Research
  • -
-

For more, visit the OCO-2 MIP Top-down CO2 Budgets data overview page.

-
-
-

Approach

-
    -
  1. Read in National CO2 Budgets using Pandas
  2. -
  3. Sub-select the data structure using Pandas
  4. -
  5. Visualize the CO2 budgets for a country
  6. -
  7. Investigate uncertainties and metrics for understanding the dataset
  8. -
-
-
-

About the Data

-

This tutorial guides a user to further explore data from the Carbon Observatory (OCO-2) modeling intercomparison project (MIP). It is designed for those with more understanding of the science and is therefore labeled as intermediate level.

-

The code is used to estimate the annual net terrestrial carbon stock loss (Ξ”Closs) and net carbon exchange (NCE) for a given country using the β€œtop-down” NCE outputs from the Carbon Observatory (OCO-2) modeling intercomparison project (MIP). Several standardized experiments are studied in this notebook based on the OCO-2 MIP dataset including flux estimates from in situ COβ‚‚ measurements (IS), flux estimates from OCO-2 land COβ‚‚ data (LNLG), combined in situ and OCO-2 land COβ‚‚ data (LNLGIS), and combined in situ and OCO-2 land and ocean COβ‚‚ data (LNLGOGIS). Estimates and uncertainties associated with fossil fuels, riverine fluxes, and wood and crop fluxes are also graphed along with the Ξ”Closs and NCE variables.

-

For more information about this data collection, please visit the OCO-2 MIP Top-Down CO2 Budgets data overview page.

-

For more information regarding this dataset, please visit the U.S. Greenhouse Gas Center.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Import required modules

-

First we will need to import the relevant python modules:

-
-
import pandas as pd # for manipulating csv dataset
-import numpy as np
-import matplotlib.pyplot as plt # make plots
-from scipy.stats import norm # We will use this for understanding significance
-
-
-
-

Read the CO2 National budget dataset

-

Now we will read in the CSV dataset from https://ceos.org/gst/carbon-dioxide.html

-
-
url ='https://ceos.org/gst/files/pilot_topdown_CO2_Budget_countries_v1.csv'
-df_all = pd.read_csv(url, skiprows=52)
-
-
-
-

Sub-select a single top-down dataset (experiment)

-

To simplify the analysis, let’s subselect the results for a single experiment. The experiments are: - IS: estimates fluxes from in situ CO2 measurements - LNLG: estimates fluxes from OCO-2 land CO2 data - LNLGIS: combines in situ and OCO-2 land CO2 data - LNLGOGIS: combines in situ and OCO-2 land and ocean CO2 data

-

We would like to use the experiment that uses the most high-quality CO2 data. There are some concerns about small residual biases in OCO-2 ocean data (Byrne et al., 2023), so let’s use the LNLGIS experiment.

-
-
# Choose one experiment from the list ['IS', 'LNLG', 'LNLGIS', 'LNLGOGIS']
-experiment = 'LNLGIS'
-
-# Subset of columns for a given experiment
-if experiment == 'IS':
-    df = df_all.drop(df_all.columns[[4,5,6,7,8,9,12,13,14,15,16,17,20,21,22,23,24,25,34,35,36]], axis=1)
-if experiment == 'LNLG':
-    df = df_all.drop(df_all.columns[[2,3,6,7,8,9,10,11,14,15,16,17,18,19,22,23,24,25,33,35,36]], axis=1)
-if experiment == 'LNLGIS':
-    df = df_all.drop(df_all.columns[[2,3,4,5,8,9,10,11,12,13,16,17,18,19,20,21,24,25,33,34,36]], axis=1)
-if experiment == 'LNLGOGIS':
-    df = df_all.drop(df_all.columns[[2,3,4,5,6,7,10,11,12,13,14,15,18,19,20,21,22,23,33,34,35]], axis=1)
-
-# We can now look at the columns of data
-df.head()
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Alpha 3 CodeYearLNLGIS dC_loss (TgCO2)LNLGIS dC_loss unc (TgCO2)LNLGIS NBE (TgCO2)LNLGIS NBE unc (TgCO2)LNLGIS NCE (TgCO2)LNLGIS NCE unc (TgCO2)Rivers (TgCO2)River unc (TgCO2)Wood+Crop (TgCO2)Wood+Crop unc (TgCO2)FF (TgCO2)FF unc (TgCO2)Z-statisticFUR LNLGIS
0AFG201539.3407153.74640.9643153.74660.3537153.744-2.432861.698324.056481.2169419.38940.7976980.370.19
1AFG201650.6167175.45452.5114175.45473.0333175.452-2.161852.240334.056481.2169420.52200.6780800.310.19
2AFG201754.5096179.79456.4726179.79477.5355179.793-2.093492.377054.056481.2169421.06290.6958560.470.19
3AFG2018116.4260243.057118.4610243.057143.9580243.056-2.021992.520054.056481.2169425.49740.6958560.390.19
4AFG201964.0162181.51666.0388181.51693.8974181.514-2.033832.496374.056481.2169427.85850.7976980.490.19
- -
-
-
-
-
-

Sub-select a single country

-

Let’s further filter the dataset to look at a specific country. Choose a country by entering the alpha code in the country_name variable below

-
-
# Choose a country
-country_name = 'USA' 
-
-# We can sub-select the data for the country
-country_data = df[df['Alpha 3 Code'] == country_name]
-
-# Now we can look at the data for a specific experiment and country
-country_data.head()
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Alpha 3 CodeYearLNLGIS dC_loss (TgCO2)LNLGIS dC_loss unc (TgCO2)LNLGIS NBE (TgCO2)LNLGIS NBE unc (TgCO2)LNLGIS NCE (TgCO2)LNLGIS NCE unc (TgCO2)Rivers (TgCO2)River unc (TgCO2)Wood+Crop (TgCO2)Wood+Crop unc (TgCO2)FF (TgCO2)FF unc (TgCO2)Z-statisticFUR LNLGIS
1232USA2015-1031.83721.213-1346.46721.2134017.31713.897-165.43071.7453-149.196-44.75895363.77102.4670-0.810.91
1233USA2016-1419.92399.738-1743.80399.7383529.45387.079-174.68453.2375-149.196-44.75895273.2499.80120.040.91
1234USA2017-1375.121034.010-1696.631034.0103515.141029.250-172.30857.9894-149.196-44.75895211.7699.09810.670.91
1235USA2018-1018.89784.463-1333.83784.4634036.65778.179-165.74771.1117-149.196-44.75895370.4899.0981-0.200.91
1236USA2019-1161.41718.054-1504.61718.0543728.95710.705-194.00514.5948-149.196-44.75895233.56102.4670-0.380.91
- -
-
-
-

This dataset contains fluxes over a five year period, 2015-2020.

-

Let’s look at a plot of the annual net terrestrial carbon stock loss (Ξ”Closs) for each year.

-
-
# Make plot
-fig, ax1 = plt.subplots(1, 1, figsize=(6, 4))
-ax1.errorbar(
-    country_data['Year'],
-    country_data[experiment+' dC_loss (TgCO2)'],
-    yerr=country_data[experiment+' dC_loss unc (TgCO2)'],
-    label=experiment,
-    capsize=10
-)
-ax1.legend(loc='upper right')
-ax1.set_ylabel('$\Delta$C$_\mathrm{loss}$ (TgCO$_2$ year$^{-1}$)')
-ax1.set_xlabel('Year')
-ax1.set_title('$\Delta$C$_\mathrm{loss}$ for '+country_name)
-
-# Set y-axis limits to be symmetrical about zero
-ymin, ymax = ax1.get_ylim()
-max_abs_y = max(abs(ymin), abs(ymax))
-ax1.set_ylim([-max_abs_y, max_abs_y])
-
-# Add a zero line for reference
-xmin, xmax = ax1.get_xlim()
-ax1.plot([xmin,xmax],[0,0],'k',linewidth=0.5)
-
-# Reset x-axis limits
-ax1.set_xlim([xmin, xmax])
-
-
<>:11: SyntaxWarning: invalid escape sequence '\D'
-<>:13: SyntaxWarning: invalid escape sequence '\D'
-<>:11: SyntaxWarning: invalid escape sequence '\D'
-<>:13: SyntaxWarning: invalid escape sequence '\D'
-/tmp/ipykernel_2439/2429321417.py:11: SyntaxWarning: invalid escape sequence '\D'
-  ax1.set_ylabel('$\Delta$C$_\mathrm{loss}$ (TgCO$_2$ year$^{-1}$)')
-/tmp/ipykernel_2439/2429321417.py:13: SyntaxWarning: invalid escape sequence '\D'
-  ax1.set_title('$\Delta$C$_\mathrm{loss}$ for '+country_name)
-
-
-
-
-

-
-
-
-
-

Next, we can look at the full carbon budget for a given year.

-

The code below creates a plot similar to Fig 13 of Byrne et al. (2023). Each of the bars on the left side of the dashed vertical line (Fossil fuel emissions, lateral C transport by rivers, lateral C transport in crop and wood products, and the net terrestrial carbon stock loss combined to give the net carbon exchange (net surface-atmosphere CO2 flux) shown on the right.

-
-
# Pick a specifc year (or mean year)
-year='mean'
-
-# Make plot
-country_data_mean = country_data[country_data['Year'] == year]
-a=country_data_mean['Wood+Crop (TgCO2)']
-b=country_data_mean['Wood+Crop unc (TgCO2)']
-print(b)
-# Add individual bars
-plt.bar(1, country_data_mean['FF (TgCO2)'], yerr=country_data_mean['FF unc (TgCO2)'], label='FF', alpha=0.5)
-plt.bar(2, country_data_mean['Rivers (TgCO2)'], yerr=country_data_mean['River unc (TgCO2)'], label='Rivers', alpha=0.5)
-plt.bar(3, country_data_mean['Wood+Crop (TgCO2)'], yerr=abs(country_data_mean['Wood+Crop unc (TgCO2)']), label='WoodCrop', alpha=0.5)
-plt.bar(4, country_data_mean[experiment+' dC_loss (TgCO2)'], yerr=country_data_mean['LNLGIS dC_loss unc (TgCO2)'], label='dC', alpha=0.5)
-plt.bar(6, country_data_mean[experiment+' NCE (TgCO2)'], yerr=country_data_mean['LNLGIS NCE unc (TgCO2)'], label='NCE', alpha=0.5)
-# Add dotted line between final two bars
-ax = plt.gca()
-ymin, ymax = ax.get_ylim()
-plt.plot([5,5],[ymin,ymax],'k:')
-# Add zero line for reference
-xmin, xmax = ax.get_xlim()
-plt.plot([xmin,xmax],[0,0],'k',linewidth=0.5)
-plt.xlim([xmin,xmax])
-plt.ylim([ymin,ymax])
-# Add x tick labels
-plt.xticks([1,2,3,4,6], ['Fossil\nFuels','Rivers','Wood+\nCrops','$\mathrm{\Delta C _{loss}}$','NCE'])
-# Add title and Y axis label
-plt.title(country_name+' '+year)
-plt.ylabel('CO$_2$ Flux (TgCO$_2$ year$^{-1}$)')
-
-
1238   -44.7589
-Name: Wood+Crop unc (TgCO2), dtype: float64
-
-
-
<>:25: SyntaxWarning: invalid escape sequence '\m'
-<>:25: SyntaxWarning: invalid escape sequence '\m'
-/tmp/ipykernel_2439/923689232.py:25: SyntaxWarning: invalid escape sequence '\m'
-  plt.xticks([1,2,3,4,6], ['Fossil\nFuels','Rivers','Wood+\nCrops','$\mathrm{\Delta C _{loss}}$','NCE'])
-
-
-
Text(0, 0.5, 'CO$_2$ Flux (TgCO$_2$ year$^{-1}$)')
-
-
-
-
-

-
-
-
-
-

Uncertainty is an important consideration when analyzing the flux estimates provided by Byrne et al. (2023).

-

Each flux estimate is provided with an error estimate representing the standard deviation, and assuming the errors are well prepresented by a normal distribution. This probability dirtribution provided by this uncertainty can be visualized below. We can further quantify the

-
-

-# Select NCE, NBE or dC_loss
-quantity = 'dC_loss'
-
-# Value for comparison
-comparison_value = 1000 # TgCO2/year
-
-
-MIP_mean = country_data_mean[experiment+' '+quantity+' (TgCO2)'].item()
-MIP_std = country_data_mean[experiment+' '+quantity+' unc (TgCO2)'].item()
-
-# Perform t-test
-t_value = abs(MIP_mean - comparison_value)/(MIP_std / np.sqrt(11))
-crtical_value = 2.23 # use p=0.05 significance
-if t_value > crtical_value:
-    ttest = 'statistically different'
-if t_value < crtical_value:
-    ttest = 'not statistically\ndifferent'
-
-# Make plot
-xbounds = abs(MIP_mean)+MIP_std*4
-if abs(crtical_value) > xbounds:
-    xbounds = abs(crtical_value)
-x_axis = np.arange(-1.*xbounds, xbounds, 1) 
-plt.plot(x_axis, norm.pdf(x_axis, MIP_mean, MIP_std)) 
-ax = plt.gca()
-ymin, ymax = ax.get_ylim()
-xmin, xmax = ax.get_xlim()
-plt.plot([0,0],[ymin,ymax*1.2],'k:',linewidth=0.5)
-plt.plot([xmin,xmax],[0,0],'k:',linewidth=0.5)
-plt.plot([comparison_value,comparison_value],[ymin,ymax*1.2],'k')
-plt.text(comparison_value+(xmax-xmin)*0.01,ymax*0.96,'value = '+str(comparison_value),ha='left',va='top')
-plt.text(comparison_value+(xmax-xmin)*0.01,ymax*0.9,ttest,ha='left',va='top')
-plt.ylim([ymin,ymax*1.2])
-plt.xlim([xmin,xmax])
-plt.plot(MIP_mean,ymax*1.03,'ko')
-plt.plot([MIP_mean-MIP_std,
-         MIP_mean+MIP_std],
-         [ymax*1.03,ymax*1.03],'k')
-plt.plot([MIP_mean-MIP_std,
-         MIP_mean-MIP_std],
-         [ymax*1.005,ymax*1.055],'k')
-plt.plot([MIP_mean+MIP_std,
-         MIP_mean+MIP_std],
-         [ymax*1.005,ymax*1.055],'k')
-plt.text(MIP_mean,ymax*1.115,
-         str(round(MIP_mean))+' $\pm$ '+
-         str(round(MIP_std))+' TgCO$_2$',ha='center')
-plt.title(country_name+' '+year+' '+quantity+'')
-plt.yticks([])
-plt.ylabel('Probability')
-plt.xlabel(quantity+' (TgCO$_2$ year$^{-1}$)')
-
-
<>:46: SyntaxWarning: invalid escape sequence '\p'
-<>:46: SyntaxWarning: invalid escape sequence '\p'
-/tmp/ipykernel_2439/1293858788.py:46: SyntaxWarning: invalid escape sequence '\p'
-  str(round(MIP_mean))+' $\pm$ '+
-
-
-
Text(0.5, 0, 'dC_loss (TgCO$_2$ year$^{-1}$)')
-
-
-
-
-

-
-
-
-
-

Finally, we will examine two metrics that are useful for understanding the confidence in the top-down results:

-
    -
  • Z-statistic: metric of agreement in NCE estimates across the experiments that assimilate different CO2 datasets. Experiments are considered significantly different if the magnitude exceeds 1.96

  • -
  • Fractional Uncertainty Reduction (FUR): metric of how strongly the assimilated CO2 data on reduce NCE uncertainties. Values range from 0 to 1, with 0 meaning zero error reduction and 1 meaning complete error reduction

  • -
-

Here we will add a plot of the Z-statistic for each year, and add the FUR value for the country.

-
-
# Make plot
-fig, ax1 = plt.subplots(1, 1, figsize=(6, 4))
-ax1.plot(country_data['Year'],country_data['Z-statistic'],label=experiment)
-ax1.legend(loc='upper right')
-ax1.set_ylabel('Z-statistic')
-ax1.set_xlabel('Year')
-ax1.set_title(country_name)
-# Set y axis limits to be symmetrical about zero
-ymin, ymax = ax1.get_ylim()
-max_abs_y = max(abs(ymin), abs(ymax))
-ax1.set_ylim([-3, 3])
-# Add reference lines at 0, +/-1.96
-xmin, xmax = ax1.get_xlim()
-ax1.plot([xmin,xmax],[0,0],'k',linewidth=0.5)
-ax1.plot([xmin,xmax],[-1.96,-1.96],'k--',linewidth=0.5)
-ax1.plot([xmin,xmax],[1.96,1.96],'k--',linewidth=0.5)
-# Reset x-axis limits
-ax1.set_xlim([xmin, xmax])
-# Add text
-ax1.text(xmin+0.12,2.6,'Fractional error reduction: '+str(country_data['FUR '+experiment].iloc[1]))
-
-
Text(-0.18000000000000005, 2.6, 'Fractional error reduction: 0.91')
-
-
-
-
-

-
-
-
-
- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-6-output-2.png b/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-6-output-2.png deleted file mode 100644 index 9f617b4..0000000 Binary files a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-6-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-7-output-4.png b/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-7-output-4.png deleted file mode 100644 index 31eb6bc..0000000 Binary files a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-7-output-4.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-8-output-3.png b/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-8-output-3.png deleted file mode 100644 index b3cbb5e..0000000 Binary files a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-8-output-3.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-9-output-2.png b/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-9-output-2.png deleted file mode 100644 index 1ac991f..0000000 Binary files a/_site/user_data_notebooks/oco2-mip-National-co2budget_files/figure-html/cell-9-output-2.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html b/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html deleted file mode 100644 index df44ee2..0000000 --- a/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook.html +++ /dev/null @@ -1,41786 +0,0 @@ - - - - - - - - - - - - -OCO-2 MIP Top-Down COβ‚‚ Budgets – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 MIP Top-Down COβ‚‚ Budgets

-
- -
-
- Global, 1 degree resolution pilot top-down budgets of carbon dioxide emissions at 5 year intervals and national scales, version 1. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

August 1, 2023

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the OCO-2 MIP Top-down CO2 Budgets notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1Β° x 1Β°
  • -
  • Temporal extent: 2015 – 2020
  • -
  • Temporal resolution: Annual
  • -
  • Unit: Grams of carbon dioxide per square meter per year
  • -
  • Utility: Climate Research
  • -
-

For more, visit the OCO-2 MIP Top-down CO2 Budgets data overview page.

-
-
-

About the Data

-
-

OCO-2 MIP Top-Down COβ‚‚ Budgets

-

The Committee on Earth Observation Satellites (CEOS) Atmospheric Composition - Virtual Constellation (AC-VC) Greenhouse Gas (GHG) team has generated the CEOS COβ‚‚ Budgets dataset, which provides annual top-down carbon dioxide (CO2) emissions and removals from 2015 - 2020 gridded globally at 1Β° resolution, and as national totals. Data is provided in units of grams of carbon dioxide per square meter per year (g CO2/m2/yr). Only a subset of the full dataset is displayed in the GHG Center explore view.

-

For more information regarding this dataset, please visit the OCO-2 MIP Top-Down COβ‚‚ Budgets data overview page.

-
-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 MIP Top-Down COβ‚‚ Budgets data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. OCO-2 MIP Top-Down CO2 Budgets - item: One granule in the dataset, e.g. one year of CO2 fluxes - asset: A variable available within the granule, e.g. CO2 fluxes from crops, wood, or rivers - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-
-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the OCO-2 MIP Top-Down CO2 Budgets dataset is oco2-mip-co2budget-yeargrid-v1.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Define the collection name, used to fetch the dataset from the STAC API
-collection_name = "oco2-mip-co2budget-yeargrid-v1"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to December 2020. By looking at the dashboard:time density, we observe that the periodic frequency of these observations is yearly.

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 6 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["start_datetime"][:4]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus CO2 fluxes from fossil fuels, so our asset of interest is:
-asset_name = "ff"
-
-
-
-
-
-

Creating Maps Using Folium

-

You will now explore changes in the microbial CHβ‚„ flux for two different dates/times. You will visualize the outputs on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates=["2015","2020"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id = first_date.collection_id
-item_id = first_date.id
-# Select relevant asset 
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 26214.189453125,
-   'min': 0.0,
-   'count': 11.0,
-   'buckets': [64514.0, 196.0, 50.0, 25.0, 6.0, 3.0, 1.0, 3.0, 1.0, 1.0]},
-  'statistics': {'mean': 56.14299174917896,
-   'stddev': 442.02880191302614,
-   'maximum': 26214.189453125,
-   'minimum': 0.0,
-   'valid_percent': 0.00154320987654321}}]
-
-
-
-
# Use statistics to generate an appropriate colorbar range.
-rescale_values = {
-    "max": raster_bands[0]['statistics']['mean'] + 4.0*raster_bands[0]['statistics']['stddev'],
-    "min": raster_bands[0]['statistics']['minimum'],
-}
-
-print(rescale_values)
-
-
{'max': 1824.2581994012835, 'min': 0.0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "PuRd" 
-
-
-
# Make a GET request to retrieve information for your first date/time
-co2_flux_1 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-co2_flux_1
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/oco2-mip-co2budget-yeargrid-v1/items/oco2-mip-co2budget-yeargrid-v1-2015/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ff&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C1824.2581994012835'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile, because we want date tiles 1 and 2 to have the same colorbar range for best visual comparison.
-second_date = items_dict[dates[1]]
-
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-
-co2_flux_2 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-co2_flux_2
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/oco2-mip-co2budget-yeargrid-v1/items/oco2-mip-co2budget-yeargrid-v1-2020/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=ff&color_formula=gamma+r+1.05&colormap_name=purd&rescale=0.0%2C1824.2581994012835'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(34, -103), zoom_start=3)
-
-# Define the first map layer
-map_layer_1= TileLayer(
-    tiles=co2_flux_1["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.85, # Adjust the transparency of the layer
-    name=f"{collection.title}, {dates[0]}",
-    overlay=True
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer
-map_layer_2 = TileLayer(
-    tiles=co2_flux_2["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.85, # Adjust the transparency of the layer,
-    name=f"{collection.title}, {dates[1]}",
-    overlay=True
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (g CO2/m2/year)',dark=True)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

-
-
# Give the AOI a name to use in plotting later
-aoi_name = "Dallas-Fort Worth, Texas"
-# Define AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-99, 33.7], # South-east bounding coordinate
-                [-99, 31.85], # North-east bounding coordinate
-                [-94.75,31.85], # North-west bounding coordinate
-                [-94.75,33.7], # South-west bounding coordinate
-                [-99, 33.7]  # South-east bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(32.5, -96.5), zoom_start=7)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name).add_to(map_)
-# Add data layer to visualize number of grid cells within AOI
-map_layer_2.add_to(map_)
-# Add a quick colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (g CO2/m2/year)',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print first five rows of stats from our DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 26.2 ms, sys: 0 ns, total: 26.2 ms
-Wall time: 1.74 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02020-01-01T00:00:00+00:0038.344013214111328125002750.133300781250000000001165.567418107538742333428.170000076293945312509522.685894864327565301211022.806576121625994346691091.0708007812500000000038.3440132141113281250038.3440132141113281250015.00000000000000000000[[6, 2, 0, 1, 1, 1, 0, 0, 1, 3], [38.344013214...100.000000000000000000000.0000000000000000000015.0000000000000000000038.344013214111328125002750.133300781250000000002020-01-01 00:00:00+00:00
12019-01-01T00:00:00+00:0044.854598999023437500003046.957031250000000000001312.263748090246508581918.1700000762939453125010721.194922015092743095011150.118342155281425220891226.6907958984375000000044.8545989990234375000044.8545989990234375000015.00000000000000000000[[6, 2, 0, 1, 1, 1, 0, 0, 1, 3], [44.854598999...100.000000000000000000000.0000000000000000000015.0000000000000000000044.854598999023437500003046.957031250000000000002019-01-01 00:00:00+00:00
22018-01-01T00:00:00+00:0045.942440032958984375003129.081298828125000000001346.561398814862741346598.1700000762939453125011001.406731051909446250651180.238464631637725688051258.8297119140625000000045.9424400329589843750045.9424400329589843750015.00000000000000000000[[6, 2, 0, 1, 1, 1, 0, 0, 1, 3], [45.942440032...100.000000000000000000000.0000000000000000000015.0000000000000000000045.942440032958984375003129.081298828125000000002018-01-01 00:00:00+00:00
32017-01-01T00:00:00+00:0044.661857604980468750003033.763671875000000000001306.594456682841155270588.1700000762939453125010674.876810784058761782941145.148841209361762594201221.3898925781250000000044.6618576049804687500044.6618576049804687500015.00000000000000000000[[6, 2, 0, 1, 1, 1, 0, 0, 1, 3], [44.661857604...100.000000000000000000000.0000000000000000000015.0000000000000000000044.661857604980468750003033.763671875000000000002017-01-01 00:00:00+00:00
42016-01-01T00:00:00+00:0045.047023773193359375003074.269775390625000000001322.022822306783154999728.1700000762939453125010800.926559108755100169221158.778742395728841074741235.7623291015625000000045.0470237731933593750045.0470237731933593750015.00000000000000000000[[6, 2, 0, 1, 1, 1, 0, 0, 1, 3], [45.047023773...100.000000000000000000000.0000000000000000000015.0000000000000000000045.047023773193359375003074.269775390625000000002016-01-01 00:00:00+00:00
- -
-
-
-
-
-

Time-Series Analysis

-

We can now explore the fossil fuel emission time series (January 2015 -December 2020) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

-
-
# Figure size: 10 is width, 5 is height
-fig = plt.figure(figsize=(10,5))
-
-# Sort our df by datetime
-df = df.sort_values(by="datetime")
-
-# Change 'which_stat' below if you would rather look at a different statistic, like minimum or mean.
-which_stat = "mean"
-
-plt.plot(
-    [d[0:4] for d in df["datetime"]], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum COβ‚‚ emission
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label="CO$_2$ emissions", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("gC/$m^2$/year")
-
-# Insert title for the plot
-plt.title(f"{items[0].assets[asset_name].title} for {aoi_name} (2015-2020)")
-
-# Add data citation
-plt.text(
-    min([d[0:4] for d in df["datetime"]]),           # X-coordinate of the text 
-    df[which_stat].min(),                  # Y-coordinate of the text 
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 MIP Top-Down COβ‚‚ Budgets.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Visualizing COβ‚‚ Emissions for two distinctive months/years
  8. -
  9. Generate zonal statistics for a specified region
  10. -
  11. Generate a time-series graph
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook_files/figure-html/cell-19-output-1.png b/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook_files/figure-html/cell-19-output-1.png deleted file mode 100644 index 30d77c2..0000000 Binary files a/_site/user_data_notebooks/oco2-mip-co2budget-yeargrid-v1_User_Notebook_files/figure-html/cell-19-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html b/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html deleted file mode 100644 index 2ad0a08..0000000 --- a/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook.html +++ /dev/null @@ -1,3331 +0,0 @@ - - - - - - - - - - - - -OCO-2 GEOS Column COβ‚‚ Concentrations – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

OCO-2 GEOS Column COβ‚‚ Concentrations

-
- -
-
- Daily, global 0.5 x 0.625 degree column COβ‚‚ concentrations derived from OCO-2 satellite data, version 10r. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

August 22, 2023

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the OCO-2 GEOS Column COβ‚‚ Concentrations notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 0.5Β° x 0.625Β°
  • -
  • Temporal extent: January 1, 2015 - February 28, 2022
  • -
  • Temporal resolution: Daily
  • -
  • Unit: Parts per million
  • -
  • Utility: Climate Research
  • -
-

For more, visit the OCO-2 GEOS Column COβ‚‚ Concentrations data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the OCO-2 GEOS Column COβ‚‚ Concentrations data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, visualize two tiles (side-by-side), allowing time point comparison.
  6. -
  7. After the visualization, perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

OCO-2 GEOS Column CO2 Concentrations

-

In July 2014, NASA successfully launched the first dedicated Earth remote sensing satellite to study atmospheric carbon dioxide (COβ‚‚) from space. The Orbiting Carbon Observatory-2 (OCO-2) is an exploratory science mission designed to collect space-based global measurements of atmospheric COβ‚‚ with the precision, resolution, and coverage needed to characterize sources and sinks (fluxes) on regional scales (β‰₯1000 km). This dataset provides global gridded, daily column-averaged carbon dioxide (XCOβ‚‚) concentrations from January 1, 2015 - February 28, 2022. The data are derived from OCO-2 observations that were input to the Goddard Earth Observing System (GEOS) Constituent Data Assimilation System (CoDAS), a modeling and data assimilation system maintained by NASA’s Global Modeling and Assimilation Office (GMAO). Concentrations are measured in moles of carbon dioxide per mole of dry air (mol COβ‚‚/mol dry) at a spatial resolution of 0.5Β° x 0.625Β°. Data assimilation synthesizes simulations and observations, adjusting modeled atmospheric constituents like COβ‚‚ to reflect observed values. With the support of NASA’s Carbon Monitoring System (CMS) Program and the OCO Science Team, this dataset was produced as part of the OCO-2 mission which provides the highest quality space-based XCOβ‚‚ retrievals to date.

-

For more information regarding this dataset, please visit the OCO-2 GEOS Column COβ‚‚ Concentrations data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. OCO-2 GEOS Column CO2 Concentrations - item: One granule in the dataset, e.g. one daily file of CO2 concentrations - asset: A variable available within the granule, e.g. XCO2 or XCO2 precision - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the OCO-2 GEOS Column CO2 Concentrations dataset is oco2geos-co2-daygrid-v10r.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Please use the collection name similar to the one used in STAC collection.
-# Name of the collection for OCO-2 GEOS Column COβ‚‚ Concentrations. 
-collection_name = "oco2geos-co2-daygrid-v10r"
-
-

Examining the contents of our collection under the temporal variable, we see that the data is available from January 2015 to February 2022. By looking at the dashboard:time density, we can see that these observations are collected daily.

-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-
-
# Check total number of items available
-#items = list(collection.get_items())  # Convert the iterator to a list
-#print(f"Found {len(items)} items")
-
-
-
# Examining the first item in the collection
-#items[0]
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2016-03-01T00:00:00Z','2016-07-31T00:00:00Z']
-)
-# Take a look at the items we found
-for item in search.item_collection():
-    print(item)
-
-
<Item id=oco2geos-co2-daygrid-v10r-20160731>
-<Item id=oco2geos-co2-daygrid-v10r-20160730>
-<Item id=oco2geos-co2-daygrid-v10r-20160729>
-<Item id=oco2geos-co2-daygrid-v10r-20160728>
-<Item id=oco2geos-co2-daygrid-v10r-20160727>
-<Item id=oco2geos-co2-daygrid-v10r-20160726>
-<Item id=oco2geos-co2-daygrid-v10r-20160725>
-<Item id=oco2geos-co2-daygrid-v10r-20160724>
-<Item id=oco2geos-co2-daygrid-v10r-20160723>
-<Item id=oco2geos-co2-daygrid-v10r-20160722>
-<Item id=oco2geos-co2-daygrid-v10r-20160721>
-<Item id=oco2geos-co2-daygrid-v10r-20160720>
-<Item id=oco2geos-co2-daygrid-v10r-20160719>
-<Item id=oco2geos-co2-daygrid-v10r-20160718>
-<Item id=oco2geos-co2-daygrid-v10r-20160717>
-<Item id=oco2geos-co2-daygrid-v10r-20160716>
-<Item id=oco2geos-co2-daygrid-v10r-20160715>
-<Item id=oco2geos-co2-daygrid-v10r-20160714>
-<Item id=oco2geos-co2-daygrid-v10r-20160713>
-<Item id=oco2geos-co2-daygrid-v10r-20160712>
-<Item id=oco2geos-co2-daygrid-v10r-20160711>
-<Item id=oco2geos-co2-daygrid-v10r-20160710>
-<Item id=oco2geos-co2-daygrid-v10r-20160709>
-<Item id=oco2geos-co2-daygrid-v10r-20160708>
-<Item id=oco2geos-co2-daygrid-v10r-20160707>
-<Item id=oco2geos-co2-daygrid-v10r-20160706>
-<Item id=oco2geos-co2-daygrid-v10r-20160705>
-<Item id=oco2geos-co2-daygrid-v10r-20160704>
-<Item id=oco2geos-co2-daygrid-v10r-20160703>
-<Item id=oco2geos-co2-daygrid-v10r-20160702>
-<Item id=oco2geos-co2-daygrid-v10r-20160701>
-<Item id=oco2geos-co2-daygrid-v10r-20160630>
-<Item id=oco2geos-co2-daygrid-v10r-20160629>
-<Item id=oco2geos-co2-daygrid-v10r-20160628>
-<Item id=oco2geos-co2-daygrid-v10r-20160627>
-<Item id=oco2geos-co2-daygrid-v10r-20160626>
-<Item id=oco2geos-co2-daygrid-v10r-20160625>
-<Item id=oco2geos-co2-daygrid-v10r-20160624>
-<Item id=oco2geos-co2-daygrid-v10r-20160623>
-<Item id=oco2geos-co2-daygrid-v10r-20160622>
-<Item id=oco2geos-co2-daygrid-v10r-20160621>
-<Item id=oco2geos-co2-daygrid-v10r-20160620>
-<Item id=oco2geos-co2-daygrid-v10r-20160619>
-<Item id=oco2geos-co2-daygrid-v10r-20160618>
-<Item id=oco2geos-co2-daygrid-v10r-20160617>
-<Item id=oco2geos-co2-daygrid-v10r-20160616>
-<Item id=oco2geos-co2-daygrid-v10r-20160615>
-<Item id=oco2geos-co2-daygrid-v10r-20160614>
-<Item id=oco2geos-co2-daygrid-v10r-20160613>
-<Item id=oco2geos-co2-daygrid-v10r-20160612>
-<Item id=oco2geos-co2-daygrid-v10r-20160611>
-<Item id=oco2geos-co2-daygrid-v10r-20160610>
-<Item id=oco2geos-co2-daygrid-v10r-20160609>
-<Item id=oco2geos-co2-daygrid-v10r-20160608>
-<Item id=oco2geos-co2-daygrid-v10r-20160607>
-<Item id=oco2geos-co2-daygrid-v10r-20160606>
-<Item id=oco2geos-co2-daygrid-v10r-20160605>
-<Item id=oco2geos-co2-daygrid-v10r-20160604>
-<Item id=oco2geos-co2-daygrid-v10r-20160603>
-<Item id=oco2geos-co2-daygrid-v10r-20160602>
-<Item id=oco2geos-co2-daygrid-v10r-20160601>
-<Item id=oco2geos-co2-daygrid-v10r-20160531>
-<Item id=oco2geos-co2-daygrid-v10r-20160530>
-<Item id=oco2geos-co2-daygrid-v10r-20160529>
-<Item id=oco2geos-co2-daygrid-v10r-20160528>
-<Item id=oco2geos-co2-daygrid-v10r-20160527>
-<Item id=oco2geos-co2-daygrid-v10r-20160526>
-<Item id=oco2geos-co2-daygrid-v10r-20160525>
-<Item id=oco2geos-co2-daygrid-v10r-20160524>
-<Item id=oco2geos-co2-daygrid-v10r-20160523>
-<Item id=oco2geos-co2-daygrid-v10r-20160522>
-<Item id=oco2geos-co2-daygrid-v10r-20160521>
-<Item id=oco2geos-co2-daygrid-v10r-20160520>
-<Item id=oco2geos-co2-daygrid-v10r-20160519>
-<Item id=oco2geos-co2-daygrid-v10r-20160518>
-<Item id=oco2geos-co2-daygrid-v10r-20160517>
-<Item id=oco2geos-co2-daygrid-v10r-20160516>
-<Item id=oco2geos-co2-daygrid-v10r-20160515>
-<Item id=oco2geos-co2-daygrid-v10r-20160514>
-<Item id=oco2geos-co2-daygrid-v10r-20160513>
-<Item id=oco2geos-co2-daygrid-v10r-20160512>
-<Item id=oco2geos-co2-daygrid-v10r-20160511>
-<Item id=oco2geos-co2-daygrid-v10r-20160510>
-<Item id=oco2geos-co2-daygrid-v10r-20160509>
-<Item id=oco2geos-co2-daygrid-v10r-20160508>
-<Item id=oco2geos-co2-daygrid-v10r-20160507>
-<Item id=oco2geos-co2-daygrid-v10r-20160506>
-<Item id=oco2geos-co2-daygrid-v10r-20160505>
-<Item id=oco2geos-co2-daygrid-v10r-20160504>
-<Item id=oco2geos-co2-daygrid-v10r-20160503>
-<Item id=oco2geos-co2-daygrid-v10r-20160502>
-<Item id=oco2geos-co2-daygrid-v10r-20160501>
-<Item id=oco2geos-co2-daygrid-v10r-20160430>
-<Item id=oco2geos-co2-daygrid-v10r-20160429>
-<Item id=oco2geos-co2-daygrid-v10r-20160428>
-<Item id=oco2geos-co2-daygrid-v10r-20160427>
-<Item id=oco2geos-co2-daygrid-v10r-20160426>
-<Item id=oco2geos-co2-daygrid-v10r-20160425>
-<Item id=oco2geos-co2-daygrid-v10r-20160424>
-<Item id=oco2geos-co2-daygrid-v10r-20160423>
-<Item id=oco2geos-co2-daygrid-v10r-20160422>
-<Item id=oco2geos-co2-daygrid-v10r-20160421>
-<Item id=oco2geos-co2-daygrid-v10r-20160420>
-<Item id=oco2geos-co2-daygrid-v10r-20160419>
-<Item id=oco2geos-co2-daygrid-v10r-20160418>
-<Item id=oco2geos-co2-daygrid-v10r-20160417>
-<Item id=oco2geos-co2-daygrid-v10r-20160416>
-<Item id=oco2geos-co2-daygrid-v10r-20160415>
-<Item id=oco2geos-co2-daygrid-v10r-20160414>
-<Item id=oco2geos-co2-daygrid-v10r-20160413>
-<Item id=oco2geos-co2-daygrid-v10r-20160412>
-<Item id=oco2geos-co2-daygrid-v10r-20160411>
-<Item id=oco2geos-co2-daygrid-v10r-20160410>
-<Item id=oco2geos-co2-daygrid-v10r-20160409>
-<Item id=oco2geos-co2-daygrid-v10r-20160408>
-<Item id=oco2geos-co2-daygrid-v10r-20160407>
-<Item id=oco2geos-co2-daygrid-v10r-20160406>
-<Item id=oco2geos-co2-daygrid-v10r-20160405>
-<Item id=oco2geos-co2-daygrid-v10r-20160404>
-<Item id=oco2geos-co2-daygrid-v10r-20160403>
-<Item id=oco2geos-co2-daygrid-v10r-20160402>
-<Item id=oco2geos-co2-daygrid-v10r-20160401>
-<Item id=oco2geos-co2-daygrid-v10r-20160331>
-<Item id=oco2geos-co2-daygrid-v10r-20160330>
-<Item id=oco2geos-co2-daygrid-v10r-20160329>
-<Item id=oco2geos-co2-daygrid-v10r-20160328>
-<Item id=oco2geos-co2-daygrid-v10r-20160327>
-<Item id=oco2geos-co2-daygrid-v10r-20160326>
-<Item id=oco2geos-co2-daygrid-v10r-20160325>
-<Item id=oco2geos-co2-daygrid-v10r-20160324>
-<Item id=oco2geos-co2-daygrid-v10r-20160323>
-<Item id=oco2geos-co2-daygrid-v10r-20160322>
-<Item id=oco2geos-co2-daygrid-v10r-20160321>
-<Item id=oco2geos-co2-daygrid-v10r-20160320>
-<Item id=oco2geos-co2-daygrid-v10r-20160319>
-<Item id=oco2geos-co2-daygrid-v10r-20160318>
-<Item id=oco2geos-co2-daygrid-v10r-20160317>
-<Item id=oco2geos-co2-daygrid-v10r-20160316>
-<Item id=oco2geos-co2-daygrid-v10r-20160315>
-<Item id=oco2geos-co2-daygrid-v10r-20160314>
-<Item id=oco2geos-co2-daygrid-v10r-20160313>
-<Item id=oco2geos-co2-daygrid-v10r-20160312>
-<Item id=oco2geos-co2-daygrid-v10r-20160311>
-<Item id=oco2geos-co2-daygrid-v10r-20160310>
-<Item id=oco2geos-co2-daygrid-v10r-20160309>
-<Item id=oco2geos-co2-daygrid-v10r-20160308>
-<Item id=oco2geos-co2-daygrid-v10r-20160307>
-<Item id=oco2geos-co2-daygrid-v10r-20160306>
-<Item id=oco2geos-co2-daygrid-v10r-20160305>
-<Item id=oco2geos-co2-daygrid-v10r-20160304>
-<Item id=oco2geos-co2-daygrid-v10r-20160303>
-<Item id=oco2geos-co2-daygrid-v10r-20160302>
-<Item id=oco2geos-co2-daygrid-v10r-20160301>
-
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020-03-10"
-items = search.item_collection()
-items_dict = {item.properties["datetime"][:10]: item for item in items}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus on XCO2 concentrations:
-asset_name = "xco2"
-
-
-
-

Creating Maps Using Folium

-

In this notebook, we will explore the temporal impacts of COβ‚‚ emissions. We will visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
dates = ["2016-03-01","2016-07-25"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id = first_date.collection_id
-item_id = first_date.id
-# Select relevant asset
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Printer raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float64',
-  'histogram': {'max': 407.97830297378823,
-   'min': 397.2987979068421,
-   'count': 11.0,
-   'buckets': [35994.0,
-    21204.0,
-    28584.0,
-    9807.0,
-    9617.0,
-    29793.0,
-    52299.0,
-    18758.0,
-    1682.0,
-    198.0]},
-  'statistics': {'mean': 401.71009609341064,
-   'stddev': 2.678157330984702,
-   'maximum': 407.97830297378823,
-   'minimum': 397.2987979068421,
-   'valid_percent': 0.00048091720529393656}}]
-
-
-
-
# Use statistics to generate an appropriate color bar range.
-rescale_values = {
-    "max": raster_bands[0].get("histogram", {}).get("max"),
-    "min": raster_bands[0].get("histogram", {}).get("min"),
-}
-
-print(rescale_values)
-
-
{'max': 407.97830297378823, 'min': 397.2987979068421}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "magma" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-tile1 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values["min"]},{rescale_values["max"]}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile1
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/oco2geos-co2-daygrid-v10r/items/oco2geos-co2-daygrid-v10r-20160301/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=xco2&color_formula=gamma+r+1.05&colormap_name=magma&rescale=397.2987979068421%2C407.97830297378823'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.3125, -90.25, 179.6875, 90.25],
- 'center': [-0.3125, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# We want date tiles 1 and 2 to have the same colorbar range for visual comparison
-second_date = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id = second_date.collection_id
-item_id = second_date.id
-
-tile2 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id}/items/{item_id}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values["min"]},{rescale_values["max"]}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile2
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/oco2geos-co2-daygrid-v10r/items/oco2geos-co2-daygrid-v10r-20160725/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=xco2&color_formula=gamma+r+1.05&colormap_name=magma&rescale=397.2987979068421%2C407.97830297378823'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.3125, -90.25, 179.6875, 90.25],
- 'center': [-0.3125, 0.0, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(34, -95), zoom_start=3)
-
-# Define the first map layer (January 2020)
-map_layer_1 = TileLayer(
-    tiles=tile1["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[0]}"
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer (January 2000)
-map_layer_2 = TileLayer(
-    tiles=tile2["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer,
-    overlay=True,
-    name=f"{collection.title}, {dates[1]}"
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (ppm)')
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon in Texas (USA).

-
-
# Give the AOI a name to use in plots later on
-aoi_name = "Los Angeles Area, California"
-# Create AOI polygon as a GEOJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-119.42, 34.43],
-                [-119.42,33.4],
-                [-117,33.4],
-                [-117,34.43],
-                [-119.42,34.43]            
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(34, -118), zoom_start=7)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name).add_to(map_)
-# Add data layer to map to visualize how many grid cells lie within our AOI
-map_layer_2.add_to(map_)
-# Add colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (ppm)')
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

We can generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first five rows of statistics from our DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 470 ms, sys: 49.4 ms, total: 520 ms
-Wall time: 48 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02016-07-31T00:00:00+00:00402.73201375384815037251403.07208473677752635922402.935077344004184851668.189999580383300781253300.038114369107006496050.10187300118277758942402.95861617778427898884402.73201375384815037251402.7320137538481503725115.00000000000000000000[[1, 1, 0, 4, 1, 0, 2, 1, 2, 3], [402.73201375...100.000000000000000000000.0000000000000000000015.00000000000000000000402.73201375384815037251403.072084736777526359222016-07-31 00:00:00+00:00
12016-07-30T00:00:00+00:00402.56199281429871916771403.14309808309189975262402.879681668985256237658.189999580383300781253299.584423813947068993000.18230482625803307029402.89328171638771891594402.56199281429871916771402.5619928142987191677115.00000000000000000000[[2, 1, 2, 0, 3, 1, 0, 2, 2, 2], [402.56199281...100.000000000000000000000.0000000000000000000015.00000000000000000000402.56199281429871916771403.135367378126773019182016-07-30 00:00:00+00:00
22016-07-29T00:00:00+00:00402.74460479849949479103403.47748290514573454857403.081573103146297398788.189999580383300781253301.237914575008744577640.22896203256865310660403.08183815795928239822402.74460479849949479103402.7446047984994947910315.00000000000000000000[[2, 3, 2, 0, 2, 2, 2, 1, 0, 1], [402.74460479...100.000000000000000000000.0000000000000000000015.00000000000000000000402.74460479849949479103403.477482905145734548572016-07-29 00:00:00+00:00
32016-07-28T00:00:00+00:00402.90020115207875051055403.52593350689858198166403.257966675112356824688.189999580383300781253302.682577855393446952800.18016015602694981923403.24078145204111933708402.90020115207875051055402.9002011520787505105515.00000000000000000000[[1, 2, 2, 0, 1, 3, 1, 3, 0, 2], [402.90020115...100.000000000000000000000.0000000000000000000015.00000000000000000000402.90020115207875051055403.525933506898581981662016-07-28 00:00:00+00:00
42016-07-27T00:00:00+00:00403.53622898692265152931404.49955122312525190864404.017339682658928268218.189999580383300781253308.901842468554150400450.27792947176049037639403.96333133685402572155403.53622898692265152931403.5362289869226515293115.00000000000000000000[[1, 3, 0, 2, 3, 1, 1, 1, 2, 1], [403.53622898...100.000000000000000000000.0000000000000000000015.00000000000000000000403.53622898692265152931404.499551223125251908642016-07-27 00:00:00+00:00
- -
-
-
-
-
-

Time-Series Analysis

-

We can now explore the XCOβ‚‚ concentrations time series (January 1, 2015 - February 28, 2022) available for the Dallas, Texas area of the U.S. We can plot the data set using the code below:

-
-
fig = plt.figure(figsize=(10,5))
-df = df.sort_values(by="datetime")
-
-which_stat="mean"
-
-plt.plot(
-    df["datetime"],
-    df[which_stat],
-    color="#F6AA1C",
-    linestyle="-",
-    linewidth=2,
-    label=f"{which_stat.capitalize()} Column COβ‚‚ concentrations",
-)
-
-plt.legend()
-plt.xlabel("Date")
-plt.ylabel("ppm")
-plt.title(f"{which_stat.capitalize()} Column COβ‚‚ concentrations for {aoi_name}")
-# Format x tick frequency and labels
-plt.xticks(df["datetime"][::10])
-ax=plt.gca()
-ax.set_xticklabels([d[0:10] for d in df["datetime"]][::10],rotation=45,ha="right")
-
-# Add data citation
-plt.text(
-    min(df["datetime"]),           # X-coordinate of the text 
-    df[which_stat].min(),                  # Y-coordinate of the text 
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook, we have successfully explored, analyzed, and visualized the STAC collection for OCO-2 GEOS Column COβ‚‚ Concentrations.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the Column-Averaged XCOβ‚‚ Concentrations Levels for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualizing the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook_files/figure-html/cell-20-output-1.png b/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook_files/figure-html/cell-20-output-1.png deleted file mode 100644 index ba6c4e4..0000000 Binary files a/_site/user_data_notebooks/oco2geos-co2-daygrid-v10r_User_Notebook_files/figure-html/cell-20-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html deleted file mode 100644 index 6a3344d..0000000 --- a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook.html +++ /dev/null @@ -1,2607 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

June 29, 2023

-
-
- - -
- - - -
- - -
-

Run this notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below.

-

Launch in the US GHG Center JupyterHub (requires access)

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC COβ‚‚ emissions version 2022.
  2. -
  3. Pass the STAC item into raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint
  4. -
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. -
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-

The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km.

-

For more information regarding this dataset, please visit the ODIAC Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-

Querying the STAC API

-

First, we are going to import the required libraries. Once imported, they allow better executing a query in the GHG Center Spatio Temporal Asset Catalog (STAC) Application Programming Interface (API) where the granules for this collection are stored.

-
-
# Import the following libraries
-import requests
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-from pystac_client import Client
-import branca
-import pandas as pd
-import matplotlib.pyplot as plt
-from stats_module import generate_stats, clean_stats, display_stats
-
-
/Users/rrimal/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py:35: NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
-  warnings.warn(
-
-
-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for ODIAC dataset 
-collection_name = "odiac-ffco2-monthgrid-v2022"
-
-
-
# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'requests' library allows a HTTP request possible
-collection = requests.get(f"{STAC_API_URL}/collections/{collection_name}").json()
-
-# Print the properties of the collection to the console
-collection
-
-
{'id': 'odiac-ffco2-monthgrid-v2022',
- 'type': 'Collection',
- 'links': [{'rel': 'items',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022/items'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022'}],
- 'title': 'ODIAC Fossil Fuel COβ‚‚ Emissions v2022',
- 'extent': {'spatial': {'bbox': [[-180.0, -90.0, 180.0, 90.0]]},
-  'temporal': {'interval': [['2000-01-01T00:00:00+00:00',
-     '2021-12-31T00:00:00+00:00']]}},
- 'license': 'CC-BY-4.0',
- 'renders': {'dashboard': {'assets': ['co2-emissions'],
-   'nodata': 0,
-   'rescale': [[-10, 60]],
-   'colormap_name': 'jet'},
-  'co2-emissions': {'assets': ['co2-emissions'],
-   'nodata': 0,
-   'rescale': [[-10, 60]],
-   'colormap_name': 'jet'}},
- 'providers': [{'url': 'https://www.nies.go.jp',
-   'name': 'National Institute for Environmental Studies',
-   'roles': ['producer', 'licensor']}],
- 'summaries': {'datetime': ['2000-01-01T00:00:00Z', '2021-12-31T00:00:00Z']},
- 'description': 'The Open-source Data Inventory for Anthropogenic COβ‚‚ (ODIAC) data product is a monthly high-resolution global data product of modeled fossil fuel carbon dioxide (COβ‚‚) emissions. A complex model incorporates and combines space-based nighttime light data and individual power plant emission/location profiles from the latest country fossil fuel COβ‚‚ estimates (2000-2019) made by the Carbon Dioxide Information Analysis Center (CDIAC) team at the Appalachian State University (CDIAC at AppState, Gilfillan et al. 2021, Hefner et al. 2022). The ODIAC estimated global spatial extent of fossil fuel COβ‚‚ emissions is produced on a 1 km by 1 km grid that details variations in urban regions where emissions are most intense. The ODIAC COβ‚‚ emission data is widely used by the international research community for applications such as COβ‚‚ flux inversion, urban emission estimation, and observing system design experiments. The ODIAC product was first created in 2009 by Dr. Tomohiro Oda with support from the National Institute for Environmental Studies (NIES) GOSAT project. The ODIAC team is now supported by NASA Goddard Space Flight Center, NASA Carbon Monitoring System program, the NASA Orbiting Carbon Observatory mission and NIES. The US GHG Center displays the ODIAC 2022 version containing monthly data from January 2000 to December 2021 that replaces all previous versions. The source dataset can be found at https://doi.org/10.17595/20170411.001',
- 'item_assets': {'co2-emissions': {'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': 'Fossil Fuel COβ‚‚ Emissions',
-   'description': 'Model-estimated monthly, 1 km resolution COβ‚‚ emissions from fossil fuel combustion, cement production and gas flaring created using space-based nighttime light data and individual power plant emission/location profiles.'}},
- 'stac_version': '1.0.0',
- 'stac_extensions': ['https://stac-extensions.github.io/render/v1.0.0/schema.json',
-  'https://stac-extensions.github.io/item-assets/v1.0.0/schema.json'],
- 'dashboard:is_periodic': True,
- 'dashboard:time_density': 'month'}
-
-
-

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2021. By looking at the dashboard:time density we observe that the periodic frequency of these observations is monthly.

-
-
# Create a function that would search for a data collection in the US GHG Center STAC API
-
-# First, we need to define the function
-# The name of the function = "get_item_count"
-# The argument that will be passed through the defined function = "collection_id"
-def get_item_count(collection_id):
-
-    # Set a counter for the number of items existing in the collection
-    count = 0
-
-    # Define the path to retrieve the granules (items) of the collection of interest in the STAC API
-    items_url = f"{STAC_API_URL}/collections/{collection_id}/items"
-
-    # Run a while loop to make HTTP requests until there are no more URLs associated with the collection in the STAC API
-    while True:
-
-        # Retrieve information about the granules by sending a "get" request to the STAC API using the defined collection path
-        response = requests.get(items_url)
-
-        # If the items do not exist, print an error message and quit the loop
-        if not response.ok:
-            print("error getting items")
-            exit()
-
-        # Return the results of the HTTP response as JSON
-        stac = response.json()
-
-        # Increase the "count" by the number of items (granules) returned in the response
-        count += int(stac["context"].get("returned", 0))
-
-        # Retrieve information about the next URL associated with the collection in the STAC API (if applicable)
-        next = [link for link in stac["links"] if link["rel"] == "next"]
-
-        # Exit the loop if there are no other URLs
-        if not next:
-            break
-        
-        # Ensure the information gathered by other STAC API links associated with the collection are added to the original path
-        # "href" is the identifier for each of the tiles stored in the STAC API
-        items_url = next[0]["href"]
-
-    # Return the information about the total number of granules found associated with the collection
-    return count
-
-
-
# Apply the function created above "get_item_count" to the data collection
-number_of_items = get_item_count(collection_name)
-
-# Get the information about the number of granules found in the collection
-items = requests.get(f"{STAC_API_URL}/collections/{collection_name}/items?limit={number_of_items}").json()["features"]
-
-# Print the total number of items (granules) found
-print(f"Found {len(items)} items")
-
-
Found 264 items
-
-
-

This makes sense as there are 22 years between 2000 - 2021, with 12 months per year, meaning 264 records in total.

-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
-
{'id': 'odiac-ffco2-monthgrid-v2022-202112',
- 'bbox': [-180.0, -90.0, 180.0, 90.0],
- 'type': 'Feature',
- 'links': [{'rel': 'collection',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'},
-  {'title': 'Map of Item',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112/map?assets=co2-emissions&nodata=0&rescale=-10%2C60&colormap_name=jet',
-   'rel': 'preview',
-   'type': 'text/html'}],
- 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',
-   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': 'Fossil Fuel COβ‚‚ Emissions',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326.0,
-   'proj:shape': [21600.0, 43200.0],
-   'description': 'Model-estimated monthly, 1 km resolution COβ‚‚ emissions from fossil fuel combustion, cement production and gas flaring created using space-based nighttime light data and individual power plant emission/location profiles.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -9999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 2497.01904296875,
-      'min': -138.71914672851562,
-      'count': 11.0,
-      'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
-     'statistics': {'mean': 0.9804128408432007,
-      'stddev': 14.766693454324674,
-      'maximum': 2497.01904296875,
-      'minimum': -138.71914672851562,
-      'valid_percent': 100.0}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137.0,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.008333333333333333,
-    0.0,
-    -180.0,
-    0.0,
-    -0.008333333333333333,
-    90.0,
-    0.0,
-    0.0,
-    1.0]},
-  'rendered_preview': {'title': 'Rendered preview',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112/preview.png?assets=co2-emissions&nodata=0&rescale=-10%2C60&colormap_name=jet',
-   'rel': 'preview',
-   'roles': ['overview'],
-   'type': 'image/png'}},
- 'geometry': {'type': 'Polygon',
-  'coordinates': [[[-180, -90],
-    [180, -90],
-    [180, 90],
-    [-180, 90],
-    [-180, -90]]]},
- 'collection': 'odiac-ffco2-monthgrid-v2022',
- 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',
-  'start_datetime': '2021-12-01T00:00:00+00:00'},
- 'stac_version': '1.0.0',
- 'stac_extensions': []}
-
-
-
-
-

Exploring Changes in Carbon Dioxide (COβ‚‚) levels using the Raster API

-

We will explore changes in fossil fuel emissions in urban egions. In this notebook, we’ll explore the impacts of these emissions and explore these changes over time. We’ll then visualize the outputs on a map using folium.

-
-
# Now we create a dictionary where the start datetime values for each granule is queried more explicitly by year and month (e.g., 2020-02)
-items = {item["properties"]["start_datetime"][:7]: item for item in items} 
-
-# Next, we need to specify the asset name for this collection
-# The asset name is referring to the raster band containing the pixel values for the parameter of interest
-# For the case of the ODIAC Fossil Fuel COβ‚‚ Emissions collection, the parameter of interest is β€œco2-emissions”
-asset_name = "co2-emissions"
-
-

Below, we are entering the minimum and maximum values to provide our upper and lower bounds in rescale_values.

-
-
# Fetching the min and max values for a specific item
-rescale_values = {"max":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["max"], "min":items[list(items.keys())[0]]["assets"][asset_name]["raster:bands"][0]["histogram"]["min"]}
-
-

Now, we will pass the item id, collection name, asset name, and the rescaling factor to the Raster API endpoint. We will do this twice, once for January 2020 and again for January 2000, so that we can visualize each event independently.

-
-
# Choose a color map for displaying the first observation (event)
-# Please refer to matplotlib library if you'd prefer choosing a different color ramp.
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "rainbow" 
-
-# Make a GET request to retrieve information for the 2020 tile
-# 2020
-january_2020_tile = requests.get(
-
-    # Pass the collection name, the item number in the list, and its ID
-    f"{RASTER_API_URL}/collections/{items['2020-01']['collection']}/items/{items['2020-01']['id']}/tilejson.json?"
-
-    # Pass the asset name
-    f"&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-
-# Return the response in JSON format
-).json()
-
-# Print the properties of the retrieved granule to the console
-january_2020_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Make a GET request to retrieve information for the 2000 tile
-# 2000
-january_2000_tile = requests.get(
-
-    # Pass the collection name, the item number in the list, and its ID
-    f"{RASTER_API_URL}/collections/{items['2000-01']['collection']}/items/{items['2000-01']['id']}/tilejson.json?"
-
-    # Pass the asset name
-    f"&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}", 
-
-# Return the response in JSON format
-).json()
-
-# Print the properties of the retrieved granule to the console
-january_2000_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-200001/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Visualizing COβ‚‚ emissions

-
-
# To change the location, you can simply insert the latitude and longitude of the area of your interest in the "location=(LAT, LONG)" statement
-
-# Set the initial zoom level and center of map for both tiles
-# 'folium.plugins' allows mapping side-by-side
-map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
-
-# Define the first map layer (January 2020)
-map_layer_2020 = TileLayer(
-    tiles=january_2020_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-)
-
-# Add the first layer to the Dual Map
-map_layer_2020.add_to(map_.m1)
-
-# Define the second map layer (January 2000)
-map_layer_2000 = TileLayer(
-    tiles=january_2000_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-)
-
-# Add the second layer to the Dual Map
-map_layer_2000.add_to(map_.m2)
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon.

-
-
# Texas, USA
-texas_aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                # [13.686159004559698, -21.700046934333145],
-                # [13.686159004559698, -23.241974326585833],
-                # [14.753560168039911, -23.241974326585833],
-                # [14.753560168039911, -21.700046934333145],
-                # [13.686159004559698, -21.700046934333145],
-                [-95, 29], # South-east bounding coordinate
-                [-95, 33], # North-east bounding coordinate
-                [-104,33], # North-west bounding coordinate
-                [-104,29], # South-west bounding coordinate
-                [-95, 29]  # South-east bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Create a new map to display the generated polygon
-# We'll plug in the coordinates for a location
-# central to the study area and a reasonable zoom level
-aoi_map = Map(
-
-    # Base map is set to OpenStreetMap
-    tiles="OpenStreetMap",
-
-    # Define the spatial properties for the map
-    location=[
-        30,-100
-    ],
-
-    # Set the zoom value
-    zoom_start=6,
-)
-
-# Insert the polygon to the map
-folium.GeoJson(texas_aoi, name="Texas, USA").add_to(aoi_map)
-
-# Visualize the map
-aoi_map
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
# Check total number of items available within the collection
-items = requests.get(
-    f"{STAC_API_URL}/collections/{collection_name}/items?limit=300"
-).json()["features"]
-
-# Print the total number of items (granules) found
-print(f"Found {len(items)} items")
-
-
Found 264 items
-
-
-
-
# Examine the first item in the collection
-items[0]
-
-
{'id': 'odiac-ffco2-monthgrid-v2022-202112',
- 'bbox': [-180.0, -90.0, 180.0, 90.0],
- 'type': 'Feature',
- 'links': [{'rel': 'collection',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
-  {'rel': 'parent',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022'},
-  {'rel': 'root',
-   'type': 'application/json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/'},
-  {'rel': 'self',
-   'type': 'application/geo+json',
-   'href': 'https://earth.gov/ghgcenter/api/stac/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112'},
-  {'title': 'Map of Item',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112/map?assets=co2-emissions&nodata=0&rescale=-10%2C60&colormap_name=jet',
-   'rel': 'preview',
-   'type': 'text/html'}],
- 'assets': {'co2-emissions': {'href': 's3://ghgc-data-store/odiac-ffco2-monthgrid-v2022/odiac2022_1km_excl_intl_202112.tif',
-   'type': 'image/tiff; application=geotiff; profile=cloud-optimized',
-   'roles': ['data', 'layer'],
-   'title': 'Fossil Fuel COβ‚‚ Emissions',
-   'proj:bbox': [-180.0, -90.0, 180.0, 90.0],
-   'proj:epsg': 4326.0,
-   'proj:shape': [21600.0, 43200.0],
-   'description': 'Model-estimated monthly, 1 km resolution COβ‚‚ emissions from fossil fuel combustion, cement production and gas flaring created using space-based nighttime light data and individual power plant emission/location profiles.',
-   'raster:bands': [{'scale': 1.0,
-     'nodata': -9999.0,
-     'offset': 0.0,
-     'sampling': 'area',
-     'data_type': 'float32',
-     'histogram': {'max': 2497.01904296875,
-      'min': -138.71914672851562,
-      'count': 11.0,
-      'buckets': [523457.0, 691.0, 95.0, 28.0, 11.0, 2.0, 2.0, 1.0, 0.0, 1.0]},
-     'statistics': {'mean': 0.9804128408432007,
-      'stddev': 14.766693454324674,
-      'maximum': 2497.01904296875,
-      'minimum': -138.71914672851562,
-      'valid_percent': 100.0}}],
-   'proj:geometry': {'type': 'Polygon',
-    'coordinates': [[[-180.0, -90.0],
-      [180.0, -90.0],
-      [180.0, 90.0],
-      [-180.0, 90.0],
-      [-180.0, -90.0]]]},
-   'proj:projjson': {'id': {'code': 4326.0, 'authority': 'EPSG'},
-    'name': 'WGS 84',
-    'type': 'GeographicCRS',
-    'datum': {'name': 'World Geodetic System 1984',
-     'type': 'GeodeticReferenceFrame',
-     'ellipsoid': {'name': 'WGS 84',
-      'semi_major_axis': 6378137.0,
-      'inverse_flattening': 298.257223563}},
-    '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json',
-    'coordinate_system': {'axis': [{'name': 'Geodetic latitude',
-       'unit': 'degree',
-       'direction': 'north',
-       'abbreviation': 'Lat'},
-      {'name': 'Geodetic longitude',
-       'unit': 'degree',
-       'direction': 'east',
-       'abbreviation': 'Lon'}],
-     'subtype': 'ellipsoidal'}},
-   'proj:transform': [0.008333333333333333,
-    0.0,
-    -180.0,
-    0.0,
-    -0.008333333333333333,
-    90.0,
-    0.0,
-    0.0,
-    1.0]},
-  'rendered_preview': {'title': 'Rendered preview',
-   'href': 'https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202112/preview.png?assets=co2-emissions&nodata=0&rescale=-10%2C60&colormap_name=jet',
-   'rel': 'preview',
-   'roles': ['overview'],
-   'type': 'image/png'}},
- 'geometry': {'type': 'Polygon',
-  'coordinates': [[[-180, -90],
-    [180, -90],
-    [180, 90],
-    [-180, 90],
-    [-180, -90]]]},
- 'collection': 'odiac-ffco2-monthgrid-v2022',
- 'properties': {'end_datetime': '2021-12-31T00:00:00+00:00',
-  'start_datetime': '2021-12-01T00:00:00+00:00'},
- 'stac_version': '1.0.0',
- 'stac_extensions': []}
-
-
-

Now that we created the polygon for the area of interest, we need to develop a function that runs through the data collection and generates the statistics for a specific item (granule) within the boundaries of the AOI polygon.

-
-
# The bounding box should be passed to the geojson param as a geojson Feature or FeatureCollection
-# Create a function that retrieves information regarding a specific granule using its asset name and raster identifier and generates the statistics for it
-
-# The function takes an item (granule) and a JSON (polygon) as input parameters
-def generate_stats(item, geojson):
-
-    # A POST request is made to submit the data associated with the item of interest (specific observation) within the boundaries of the polygon to compute its statistics
-    result = requests.post(
-
-        # Raster API Endpoint for computing statistics
-        f"{RASTER_API_URL}/cog/statistics",
-
-        # Pass the URL to the item, asset name, and raster identifier as parameters
-        params={"url": item["assets"][asset_name]["href"]},
-
-        # Send the GeoJSON object (polygon) along with the request
-        json=geojson,
-
-    # Return the response in JSON format
-    ).json()
-
-    # Return a dictionary containing the computed statistics along with the item's datetime information.
-    return {
-        **result["properties"],
-        "start_datetime": item["properties"]["start_datetime"][:7],
-    }
-
-

With the function above we can generate the statistics for the AOI.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Generate statistics using the created function "generate_stats" within the bounding box defined by the polygon
-# This process may take a few minutes to complete 
-stats = [generate_stats(item, texas_aoi) for item in items]
-
-
CPU times: user 2.39 s, sys: 525 ms, total: 2.91 s
-Wall time: 5min 22s
-
-
-
-
# Print the stats for the first item in the collection
-stats[0]
-
-
{'statistics': {'b1': {'min': 0.0,
-   'max': 404594.21875,
-   'mean': 12.983534812927246,
-   'count': 518400.0,
-   'sum': 6730664.5,
-   'std': 1073.4786327635964,
-   'median': 0.0,
-   'majority': 0.0,
-   'minority': 0.7153176665306091,
-   'unique': 160223.0,
-   'histogram': [[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
-    [0.0,
-     40459.421875,
-     80918.84375,
-     121378.265625,
-     161837.6875,
-     202297.109375,
-     242756.53125,
-     283215.9375,
-     323675.375,
-     364134.8125,
-     404594.21875]],
-   'valid_percent': 100.0,
-   'masked_pixels': 0.0,
-   'valid_pixels': 518400.0,
-   'percentile_2': 0.0,
-   'percentile_98': 120.91593933105469}},
- 'start_datetime': '2021-12'}
-
-
-

Create a function that goes through every single item in the collection and populates their properties - including the minimum, maximum, and sum of their values - in a table.

-
-
# Create a function that converts statistics in JSON format into a pandas DataFrame
-def clean_stats(stats_json) -> pd.DataFrame:
-
-    # Normalize the JSON data
-    df = pd.json_normalize(stats_json)
-
-    # Replace the naming "statistics.b1" in the columns
-    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
-
-    # Set the datetime format
-    df["date"] = pd.to_datetime(df["start_datetime"])
-
-    # Return the cleaned format
-    return df
-
-# Apply the generated function on the stats data
-df = clean_stats(stats)
-
-# Display the stats for the first 5 granules in the collection in the table
-# Change the value in the parenthesis to show more or a smaller number of rows in the table
-df.head(5)
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
start_datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02021-120.0404594.2187512.983535518400.06730664.51073.4786330.00.00.715318160223.0[[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0,...100.00.0518400.00.0120.9159392021-12-01
12021-110.0379500.7187512.181822518400.06315056.51006.9004420.00.00.671284160209.0[[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0,...100.00.0518400.00.0113.4725272021-11-01
22021-100.0365564.1250011.742121518400.06087115.5969.9247070.00.00.647386160210.0[[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0,...100.00.0518400.00.0109.4328692021-10-01
32021-090.0369532.5312511.863684518400.06150133.5980.4529250.00.00.653934160213.0[[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0,...100.00.0518400.00.0110.5230562021-09-01
42021-080.0412252.3437513.224326518400.06855490.51093.7968850.00.00.728647160224.0[[518384.0, 9.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0,...100.00.0518400.00.0123.0584032021-08-01
- -
-
-
-
-

Visualizing the Data as a Time Series

-

We can now explore the ODIAC fossil fuel emission time series available (January 2000 -December 2021) for the Texas, Dallas area of USA. We can plot the data set using the code below:

-
-
# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(20, 10))
-
-
-plt.plot(
-    df["date"], # X-axis: sorted datetime
-    df["max"], # Y-axis: maximum COβ‚‚ level
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=0.5, # Line width
-    label="Max monthly COβ‚‚ emissions", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("CO2 emissions gC/m2/d")
-
-# Insert title for the plot
-plt.title("CO2 emission Values for Texas, Dallas (2000-2021)")
-
-###
-# Add data citation
-plt.text(
-    df["date"].iloc[0],           # X-coordinate of the text
-    df["max"].min(),              # Y-coordinate of the text
-
-
-
-
-    # Text to be displayed
-    "Source: NASA ODIAC Fossil Fuel COβ‚‚ Emissions",                  
-    fontsize=12,                             # Font size
-    horizontalalignment="right",             # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
# Print the properties of the 3rd item in the collection
-print(items[2]["properties"]["start_datetime"])
-
-
2021-10-01T00:00:00+00:00
-
-
-
-
# A GET request is made for the October tile
-october_tile = requests.get(
-
-    # Pass the collection name, the item number in the list, and its ID
-    f"{RASTER_API_URL}/collections/{items[2]['collection']}/items/{items[2]['id']}/tilejson.json?"
-
-    # Pass the asset name
-    f"&assets={asset_name}"
-
-    # Pass the color formula and colormap for custom visualization
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-
-    # Pass the minimum and maximum values for rescaling
-    f"&rescale={rescale_values['min']},{rescale_values['max']}",
-
-# Return the response in JSON format
-).json()
-
-# Print the properties of the retrieved granule to the console
-october_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2022/items/odiac-ffco2-monthgrid-v2022-202110/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=-138.71914672851562%2C2497.01904296875'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Create a new map to display the October tile
-aoi_map_bbox = Map(
-
-    # Base map is set to OpenStreetMap
-    tiles="OpenStreetMap",
-
-    # Set the center of the map
-    location=[
-        30,-100
-    ],
-
-    # Set the zoom value
-    zoom_start=8,
-)
-
-# Define the map layer
-map_layer = TileLayer(
-
-    # Path to retrieve the tile
-    tiles=october_tile["tiles"][0],
-
-    # Set the attribution and adjust the transparency of the layer
-    attr="GHG", opacity = 0.5
-)
-
-# Add the layer to the map
-map_layer.add_to(aoi_map_bbox)
-
-# Visualize the map
-aoi_map_bbox
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-
-
-

Summary

-

In this notebook we have successfully explored, analysed and visualized STAC collecetion for ODIAC C02 fossisl fuel emission (2022).

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the COβ‚‚ levels for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualizing the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-21-output-1.png b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-21-output-1.png deleted file mode 100644 index c5c2e10..0000000 Binary files a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2022_User_Notebook_files/figure-html/cell-21-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook.html b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook.html deleted file mode 100644 index f13f182..0000000 --- a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook.html +++ /dev/null @@ -1,5074 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

June 29, 2023

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the ODIAC Fossil Fuel COβ‚‚ Emissions notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1 km x 1 km
  • -
  • Temporal extent: January 2000 - December 2022
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Metric tonnes of carbon per 1 km x 1 km cell per month
  • -
  • Utility: Climate Research
  • -
-

For more, visit the ODIAC Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC COβ‚‚ emissions version 2023.
  2. -
  3. Pass the STAC item into raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint
  4. -
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. -
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-

The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km.

-

For more information regarding this dataset, please visit the ODIAC Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. ODIAC Fossil Fuel CO2 Emissions - item: One granule in the dataset, e.g. one monthly file of CO2 emissions - asset: A variable available within the granule, e.g. fossil fuel CO2 emisisons - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the ODIAC Fossil Fuel CO2 Emissions dataset is odiac-ffco2-monthgrid-v2023.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for ODIAC dataset 
-collection_name = "odiac-ffco2-monthgrid-v2023"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2022. By looking at the dashboard:time density we observe that the periodic frequency of these observations is monthly.

-
-
#items = list(collection.get_items())  # Convert the iterator to a list
-#print(f"Found {len(items)} items")
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2010-01-01T00:00:00Z','2015-12-31T00:00:00Z']
-)
-items = search.item_collection()
-# Take a look at the items we found
-for item in items:
-    print(item)
-
-
<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201512>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201511>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201510>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201509>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201508>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201507>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201506>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201505>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201504>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201503>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201502>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201501>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201412>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201411>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201410>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201409>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201408>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201407>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201406>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201405>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201404>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201403>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201402>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201401>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201312>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201311>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201310>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201309>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201308>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201307>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201306>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201305>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201304>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201303>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201302>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201301>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201212>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201211>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201210>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201209>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201208>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201207>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201206>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201205>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201204>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201203>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201202>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201201>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201112>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201111>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201110>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201109>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201108>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201107>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201106>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201105>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201104>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201103>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201102>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201101>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201012>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201011>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201010>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201009>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201008>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201007>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201006>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201005>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201004>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201003>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201002>
-<Item id=odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201001>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items_dict = {item.properties["start_datetime"][:7]: item for item in items}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# This dataset only has one asset:
-asset_name = "co2-emissions"
-
-
-
-

Creating Maps Using Folium

-

We will explore changes in fossil fuel emissions in urban regions, visualizing the data on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2015-01","2015-04"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id_1 = first_date.collection_id
-item_id_1 = first_date.id
-# Select relevant asset
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 38934.10546875,
-   'min': -768.0534057617188,
-   'count': 11,
-   'buckets': [14879, 6, 0, 1, 0, 0, 0, 0, 0, 1]},
-  'statistics': {'mean': 35.59434825686841,
-   'stddev': 360.9807471537631,
-   'maximum': 38934.10546875,
-   'minimum': -768.0534057617188,
-   'valid_percent': 2.8394699096679688}}]
-
-
-
-
# Use statistics to generate an appropriate colorbar range
-rescale_values = {
-    "max": raster_bands[0]["statistics"]["mean"] + 2*raster_bands[0]["statistics"]["stddev"],
-    "min": 0,
-}
-
-print(rescale_values)
-
-
{'max': 757.5558425643947, 'min': 0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-tile1 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_1}/items/{item_id_1}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile1
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2023/items/odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201501/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C757.5558425643947'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# We want date tiles 1 and 2 to have the same colorbar range for visual comparison.
-second_date = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id_2 = second_date.collection_id
-item_id_2 = second_date.id
-
-tile2 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_2}/items/{item_id_2}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile2
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2023/items/odiac-ffco2-monthgrid-v2023-odiac2023_1km_excl_intl_201504/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C757.5558425643947'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(41.8, -87.6), zoom_start=9)
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_1 = TileLayer(
-    tile1["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[0]}"
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_2 = TileLayer(
-    tile2["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[1]}"
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (tonne C/km2/month)')
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Observe that fossil fuel CO2 emissions are much higher in January than in April in Chicago. This is due in large part to the use of central heating, which often relies on burning oil or natural gas, during the cold Midwestern months.

-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon.

-
-
# We'll start with an AOI over Chicago. Give it a name for use later
-aoi_name = "Chicago, USA"
-# Define the AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-88.5, 42.2], # South-east bounding coordinate
-                [-88.5, 41.4], # North-east bounding coordinate
-                [-87.5,41.4], # North-west bounding coordinate
-                [-87.5,42.2], # South-west bounding coordinate
-                [-88.5, 42.2]  # South-east bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(41.8, -88), zoom_start=8)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name,style_function=lambda feature:{"fillColor":"none","color":"#E467E8"}).add_to(map_)
-# Add data layer to visualize number of grid cells within AOI
-map_layer_1.add_to(map_)
-# Add a colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='tonne CO2/km2/month',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

We can generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first 5 rows of our statistics DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 212 ms, sys: 34.5 ms, total: 247 ms
-Wall time: 32.3 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02015-12-01T00:00:00+00:004.67938470840454101562167770.23437500000000000000243.4835052490234375000010410.000000000000000000002534663.250000000000000000002459.67121786632287694374165.95074462890625000000581.763854980468750000004.679384708404541015629074.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.679384...90.359999999999999431571110.0000000000000000000010410.000000000000000000007.64125776290893554688693.570312500000000000002015-12-01 00:00:00+00:00
12015-11-01T00:00:00+00:004.16928482055664062500149296.93750000000000000000218.5712280273437500000010410.000000000000000000002275326.500000000000000000002188.83553516475967626320149.50103759765625000000518.345764160156250000004.169284820556640625009024.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.169284...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.80828428268432617188617.964233398437500000002015-11-01 00:00:00+00:00
22015-10-01T00:00:00+00:004.12834739685058593750147730.53125000000000000000216.5518188476562500000010410.000000000000000000002254304.500000000000000000002165.87615066051284884452148.14408874511718750000513.256225585937500000004.128347396850585937508954.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.128347...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.74143505096435546875611.896545410156250000002015-10-01 00:00:00+00:00
32015-09-01T00:00:00+00:004.02172708511352539062143930.67187500000000000000211.3594360351562500000010410.000000000000000000002200251.750000000000000000002110.16598873169232319924144.87901306152343750000500.000671386718750000004.021727085113525390629109.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.021727...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.56732845306396484375596.093505859375000000002015-09-01 00:00:00+00:00
42015-08-01T00:00:00+00:004.37767410278320312500156797.85937500000000000000228.7375640869140625000010410.000000000000000000002381158.000000000000000000002298.80653818454220527201156.43536376953125000000544.253784179687500000004.377674102783203125008924.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.377674...90.359999999999999431571110.0000000000000000000010410.000000000000000000007.14857625961303710938648.851379394531250000002015-08-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

We can now explore the ODIAC fossil fuel emission time series available for our AOI. We can plot the data set using the code below.

-
-
# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(10,5))
-
-# Use which_stat to pick which statisticm from our DataFrame to visualize
-which_stat = "mean"
-
-plt.plot(
-    df["date"], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum COβ‚‚ level
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{which_stat.capitalize()} {items[0].assets[asset_name].title}" # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("tonne CO$_2$/km2/month")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} for {aoi_name}")
-
-###
-# Add data citation
-plt.text(
-    df["date"].iloc[40],           # X-coordinate of the text
-    df[which_stat].min(),              # Y-coordinate of the text
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=9,                             # Font size
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-

You can see emissions peak in winter in this time series, similarly to the Dual Map in the previous section!

-
-
-

Summary

-

In this notebook we have successfully explored, analysed and visualized STAC collecetion for ODIAC C02 fossisl fuel emission (2023).

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the COβ‚‚ levels for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualizing the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook_files/figure-html/cell-20-output-1.png b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook_files/figure-html/cell-20-output-1.png deleted file mode 100644 index fc7cca5..0000000 Binary files a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2023_User_Notebook_files/figure-html/cell-20-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook.html b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook.html deleted file mode 100644 index 5c4ee3e..0000000 --- a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook.html +++ /dev/null @@ -1,4901 +0,0 @@ - - - - - - - - - - - - -ODIAC Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-
- -
-
- The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

July 1, 2025

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the ODIAC Fossil Fuel COβ‚‚ Emissions notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 1 km x 1 km
  • -
  • Temporal extent: January 2000 - December 2023
  • -
  • Temporal resolution: Monthly
  • -
  • Unit: Metric tonnes of carbon per 1 km x 1 km cell per month
  • -
  • Utility: Climate Research
  • -
-

For more, visit the ODIAC Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is ODIAC COβ‚‚ emissions version 2024.
  2. -
  3. Pass the STAC item into raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint
  4. -
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. -
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

ODIAC Fossil Fuel COβ‚‚ Emissions

-

The Open-Data Inventory for Anthropogenic Carbon dioxide (ODIAC) is a high-spatial resolution global emission data product of COβ‚‚ emissions from fossil fuel combustion (Oda and Maksyutov, 2011). ODIAC pioneered the combined use of space-based nighttime light data and individual power plant emission/location profiles to estimate the global spatial extent of fossil fuel COβ‚‚ emissions. With the innovative emission modeling approach, ODIAC achieved the fine picture of global fossil fuel COβ‚‚ emissions at a 1x1km.

-

For more information regarding this dataset, please visit the ODIAC Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. ODIAC Fossil Fuel CO2 Emissions - item: One granule in the dataset, e.g. one monthly file of CO2 emissions - asset: A variable available within the granule, e.g. fossil fuel CO2 emisisons - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the ODIAC Fossil Fuel CO2 Emissions dataset is odiac-ffco2-monthgrid-v2024.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for ODIAC dataset 
-collection_name = "odiac-ffco2-monthgrid-v2024"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2023. By looking at the dashboard:time density we observe that the periodic frequency of these observations is monthly.

-
-
#items = list(collection.get_items())  # Convert the iterator to a list
-#print(f"Found {len(items)} items")
-
-
-
# The search function lets you search for items within a specific date/time range
-search = catalog.search(
-    collections=collection_name,
-    datetime=['2010-01-01T00:00:00Z','2015-12-31T00:00:00Z']
-)
-items = search.item_collection()
-# Take a look at the items we found
-for item in items:
-    print(item)
-
-
<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201512>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201511>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201510>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201509>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201508>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201507>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201506>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201505>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201504>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201503>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201502>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201501>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201412>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201411>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201410>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201409>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201408>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201407>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201406>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201405>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201404>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201403>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201402>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201401>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201312>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201311>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201310>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201309>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201308>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201307>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201306>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201305>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201304>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201303>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201302>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201301>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201212>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201211>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201210>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201209>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201208>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201207>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201206>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201205>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201204>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201203>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201202>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201201>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201112>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201111>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201110>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201109>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201108>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201107>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201106>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201105>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201104>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201103>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201102>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201101>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201012>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201011>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201010>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201009>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201008>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201007>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201006>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201005>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201004>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201003>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201002>
-<Item id=odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201001>
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items_dict = {item.properties["start_datetime"][:7]: item for item in items}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# This dataset only has one asset:
-asset_name = "co2-emissions"
-
-
-
-

Creating Maps Using Folium

-

We will explore changes in fossil fuel emissions in urban regions, visualizing the data on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2015-01","2015-04"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id_1 = first_date.collection_id
-item_id_1 = first_date.id
-# Select relevant asset
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 38934.10546875,
-   'min': -768.0534057617188,
-   'count': 11,
-   'buckets': [14879, 6, 0, 1, 0, 0, 0, 0, 0, 1]},
-  'statistics': {'mean': 35.59434825686841,
-   'stddev': 360.9807471537631,
-   'maximum': 38934.10546875,
-   'minimum': -768.0534057617188,
-   'valid_percent': 2.8394699096679688}}]
-
-
-
-
# Use statistics to generate an appropriate colorbar range
-rescale_values = {
-    "max": raster_bands[0]["statistics"]["mean"] + 2*raster_bands[0]["statistics"]["stddev"],
-    "min": 0,
-}
-
-print(rescale_values)
-
-
{'max': 757.5558425643947, 'min': 0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-tile1 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_1}/items/{item_id_1}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile1
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2024/items/odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201501/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C757.5558425643947'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# We want date tiles 1 and 2 to have the same colorbar range for visual comparison.
-second_date = items_dict[dates[1]]
-# Extract collection name and item ID
-collection_id_2 = second_date.collection_id
-item_id_2 = second_date.id
-
-tile2 = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_2}/items/{item_id_2}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-tile2
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/odiac-ffco2-monthgrid-v2024/items/odiac-ffco2-monthgrid-v2024-odiac2024_1km_excl_intl_201504/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=co2-emissions&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0%2C757.5558425643947'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 180.0, 90.0],
- 'center': [0.0, 0.0, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(41.8, -87.6), zoom_start=9)
-
-# Define the first map layer using the tile fetched for the first date
-# The TileLayer library helps in manipulating and displaying raster layers on a map
-map_layer_1 = TileLayer(
-    tile1["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[0]}"
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer using the tile fetched for the second date
-map_layer_2 = TileLayer(
-    tile2["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[1]}"
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label=f'{items[0].assets[asset_name].title} (tonne C/km2/month)')
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

Observe that fossil fuel CO2 emissions are much higher in January than in April in Chicago. This is due in large part to the use of central heating, which often relies on burning oil or natural gas, during the cold Midwestern months.

-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon.

-
-
# We'll start with an AOI over Chicago. Give it a name for use later
-aoi_name = "Chicago, USA"
-# Define the AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-88.5, 42.2], # South-east bounding coordinate
-                [-88.5, 41.4], # North-east bounding coordinate
-                [-87.5,41.4], # North-west bounding coordinate
-                [-87.5,42.2], # South-west bounding coordinate
-                [-88.5, 42.2]  # South-east bounding coordinate (closing the polygon)
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(41.8, -88), zoom_start=8)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name,style_function=lambda feature:{"fillColor":"none","color":"#E467E8"}).add_to(map_)
-# Add data layer to visualize number of grid cells within AOI
-map_layer_1.add_to(map_)
-# Add a colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,rescale_values,label='tonne CO2/km2/month',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

We can generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print the first 5 rows of our statistics DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 332 ms, sys: 108 ms, total: 440 ms
-Wall time: 35.5 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02015-12-01T00:00:00Z4.67938470840454101562167770.23437500000000000000243.4835052490234375000010410.000000000000000000002534663.250000000000000000002459.67121786632287694374165.95074462890625000000581.763854980468750000004.679384708404541015629074.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.679384...90.359999999999999431571110.0000000000000000000010410.000000000000000000007.64125776290893554688693.570312500000000000002015-12-01 00:00:00+00:00
12015-11-01T00:00:00Z4.16928482055664062500149296.93750000000000000000218.5712280273437500000010410.000000000000000000002275326.500000000000000000002188.83553516475967626320149.50103759765625000000518.345764160156250000004.169284820556640625009024.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.169284...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.80828428268432617188617.964233398437500000002015-11-01 00:00:00+00:00
22015-10-01T00:00:00Z4.12834739685058593750147730.53125000000000000000216.5518188476562500000010410.000000000000000000002254304.500000000000000000002165.87615066051284884452148.14408874511718750000513.256225585937500000004.128347396850585937508954.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.128347...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.74143505096435546875611.896545410156250000002015-10-01 00:00:00+00:00
32015-09-01T00:00:00Z4.02172708511352539062143930.67187500000000000000211.3594360351562500000010410.000000000000000000002200251.750000000000000000002110.16598873169232319924144.87901306152343750000500.000671386718750000004.021727085113525390629109.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.021727...90.359999999999999431571110.0000000000000000000010410.000000000000000000006.56732845306396484375596.093505859375000000002015-09-01 00:00:00+00:00
42015-08-01T00:00:00Z4.37767410278320312500156797.85937500000000000000228.7375640869140625000010410.000000000000000000002381158.000000000000000000002298.80653818454220527201156.43536376953125000000544.253784179687500000004.377674102783203125008924.00000000000000000000[[10403, 1, 2, 0, 1, 1, 0, 0, 1, 1], [4.377674...90.359999999999999431571110.0000000000000000000010410.000000000000000000007.14857625961303710938648.851379394531250000002015-08-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

We can now explore the ODIAC fossil fuel emission time series available for our AOI. We can plot the data set using the code below.

-
-
# Figure size: 20 representing the width, 10 representing the height
-fig = plt.figure(figsize=(10,5))
-
-# Use which_stat to pick which statisticm from our DataFrame to visualize
-which_stat = "mean"
-
-plt.plot(
-    df["date"], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum COβ‚‚ level
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{which_stat.capitalize()} {items[0].assets[asset_name].title}" # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Years")
-
-# Insert label for the Y-axis
-plt.ylabel("tonne CO$_2$/km2/month")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} for {aoi_name}")
-
-###
-# Add data citation
-plt.text(
-    df["date"].iloc[40],           # X-coordinate of the text
-    df[which_stat].min(),              # Y-coordinate of the text
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=9,                             # Font size
-    color="blue",                            # Text color
-)
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-

You can see emissions peak in winter in this time series, similarly to the Dual Map in the previous section!

-
-
-

Summary

-

In this notebook we have successfully explored, analyzed and visualized the STAC collection for ODIAC fossil fuel COβ‚‚ emissions (v2024)

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the COβ‚‚ levels for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualize the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook_files/figure-html/cell-20-output-1.png b/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook_files/figure-html/cell-20-output-1.png deleted file mode 100644 index ef1e5e1..0000000 Binary files a/_site/user_data_notebooks/odiac-ffco2-monthgrid-v2024_User_Notebook_files/figure-html/cell-20-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html b/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html deleted file mode 100644 index f0a3c29..0000000 --- a/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook.html +++ /dev/null @@ -1,4970 +0,0 @@ - - - - - - - - - - - - -SEDAC Gridded World Population Density – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

SEDAC Gridded World Population Density

-
- -
-
- Global, 1 km resolution human population density estimates based on national censuses and population registers, version 4.11. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Vishal Gaur

-
-
- -
-
Published
-
-

June 29, 2023

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the SEDAC Gridded World Population Density notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Global
  • -
  • Spatial resolution: 30 arc-seconds (~1 km at equator)
  • -
  • Temporal extent: 2000 - 2020
  • -
  • Temporal resolution: Annual, every 5 years
  • -
  • Unit: Number of persons per square kilometer
  • -
  • Utility: Climate Research
  • -
-

For more, visit the SEDAC Gridded World Population Density data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. Collection processed in this notebook is SEDAC gridded population density.
  2. -
  3. Pass the STAC item into raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint
  4. -
  5. We’ll visualize two tiles (side-by-side) allowing for comparison of each of the time points using folium.plugins.DualMap
  6. -
  7. After the visualization, we’ll perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

SEDAC Gridded World Population Density

-

The SEDAC Gridded Population of the World: Population Density, v4.11 dataset provides annual estimates of population density for the years 2000, 2005, 2010, 2015, and 2020 on a 30 arc-second (~1 km) grid. These data can be used for assessing disaster impacts, risk mapping, and any other applications that include a human dimension. This population density dataset is provided by NASA’s Socioeconomic Data and Applications Center (SEDAC) hosted by the Center for International Earth Science Information Network (CIESIN) at Columbia University. The population estimates are provided as a continuous raster for the entire globe.

-

For more information regarding this dataset, please visit the SEDAC Gridded World Population Density data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. SEDAC Gridded World Population Density - item: One granule in the dataset, e.g. one annual file of population density - asset: A variable available within the granule, e.g. population density - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the SEDAC Gridded World Population Density dataset is sedac-popdensity-yeargrid5yr-v4.11.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide the STAC and RASTER API endpoints
-# The endpoint is referring to a location within the API that executes a request on a data collection nesting on the server.
-
-# The STAC API is a catalog of all the existing data collections that are stored in the GHG Center.
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-
-# The RASTER API is used to fetch collections for visualization
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# The collection name is used to fetch the dataset from the STAC API. First, we define the collection name as a variable
-# Name of the collection for SEDAC population density dataset 
-collection_name = "sedac-popdensity-yeargrid5yr-v4.11"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examining the contents of our collection under summaries we see that the data is available from January 2000 to December 2020. By looking at the dashboard:time density we observe that the data is available for the years 2000, 2005, 2010, 2015, 2020.

-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 5 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["start_datetime"][:7]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# This dataset only has one available asset:
-asset_name = "population-density"
-
-
-
-
-

Creating Maps Using Folium

-

You will explore changes in population density in urban regions and visualize the outputs on a map using folium.

-
-

Fetch Imagery Using Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2000-01","2020-01"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id_1 = first_date.collection_id
-item_id_1 = first_date.id
-# Select relevant asset
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 20757.5234375,
-   'min': -800.1041259765625,
-   'count': 11,
-   'buckets': [129058, 321, 40, 21, 10, 3, 1, 0, 1, 2]},
-  'statistics': {'mean': 42.60443622206601,
-   'stddev': 234.09900050691866,
-   'maximum': 20757.5234375,
-   'minimum': -800.1041259765625,
-   'valid_percent': 24.69196319580078}}]
-
-
-
-
rescale_values = {
-    "max": raster_bands[0]["statistics"]["maximum"],
-    "min": 0,
-}
-
-print(rescale_values)
-
-
{'max': 20757.5234375, 'min': 0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "rainbow" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-month1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_1}/items/{item_id_1}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/sedac-popdensity-yeargrid5yr-v4.11/items/sedac-popdensity-yeargrid5yr-v4.11-gpw_v4_population_density_rev11_2000_30_sec_2000/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=population-density&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=0%2C20757.5234375'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 179.99999999999983, 89.99999999999991],
- 'center': [-8.526512829121202e-14, -4.263256414560601e-14, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# We want date tiles 1 and 2 to have the same colorbar range for best visual comparison.
-second_date = items_dict[dates[1]]
-collection_id_2 = second_date.collection_id
-item_id_2 = second_date.id
-
-month2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_2}/items/{item_id_2}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map}"
-    f"&rescale={rescale_values['min']},{rescale_values['max']}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/sedac-popdensity-yeargrid5yr-v4.11/items/sedac-popdensity-yeargrid5yr-v4.11-gpw_v4_population_density_rev11_2020_30_sec_2020/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=population-density&color_formula=gamma+r+1.05&colormap_name=rainbow&rescale=0%2C20757.5234375'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-180.0, -90.0, 179.99999999999983, 89.99999999999991],
- 'center': [-8.526512829121202e-14, -4.263256414560601e-14, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(38.97, -77), zoom_start=9) #Los Angeles
-
-# Define the first map layer
-map_layer_1 = TileLayer(
-    tiles=month1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[0]}"
-)
-
-# Add the first layer to the Dual Map
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer
-map_layer_2 = TileLayer(
-    tiles=month2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution
-    opacity=0.8, # Adjust the transparency of the layer
-    overlay=True,
-    name=f"{collection.title}, {dates[1]}"
-)
-
-# Add the second layer to the Dual Map
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# First we'll rescale our numbers to make the colorbar labels nicer
-re_rescale_values = {
-    "min":rescale_values["min"]/1e3,
-    "max":rescale_values["max"]/1e3
-}
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,re_rescale_values,label=f'{items[0].assets[asset_name].title} (10^3 persons/km2)',dark=True)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-# Visualize the Dual Map
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

This comparison indicates a slight increase in population density in Washington, D.C. from 2000 to 2020.

-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon around Los Angeles, USA.

-
-
# Give the area of interest (AOI) a name, to be used in plotting later
-aoi_name = "Washington, D.C."
-# Define the AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-77.25, 39],
-                [-77.25,38.8],
-                [-76.8,38.8],
-                [-76.8,39],
-                [-77.25,39]            
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(38.9, -77.1), zoom_start=10)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name,style_function=lambda feature: {"fillColor":"none","color":"#E467E8"}).add_to(map_)
-# Add data layer (created in previous section) to visualize number of grid cells within AOI
-map_layer_1.add_to(map_)
-# Add a quick colorbar
-legend_html = ghgc_utils.generate_html_colorbar(color_map,re_rescale_values,label='10^3 persons/km2',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

We can generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print first five rows of our statistics DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 20.6 ms, sys: 674 Β΅s, total: 21.2 ms
-Wall time: 1.69 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02020-01-01T00:00:00+00:000.0000000000000000000018091.923828125000000000002342.920654296875000000001296.000000000000000000003036425.250000000000000000002331.324730705699039390311712.988159179687500000000.000000000000000000000.070858657360076904301261.00000000000000000000[[682, 351, 143, 57, 38, 13, 5, 2, 2, 3], [0.0...94.2500000000000000000079.000000000000000000001296.000000000000000000000.000000000000000000009013.316406250000000000002020-01-01 00:00:00+00:00
12015-01-01T00:00:00+00:000.0000000000000000000017640.751953125000000000002253.185546875000000000001296.000000000000000000002920128.500000000000000000002254.506487016615210450251643.980834960937500000000.000000000000000000000.067099183797836303711261.00000000000000000000[[690, 351, 138, 55, 37, 13, 5, 2, 2, 3], [0.0...94.2500000000000000000079.000000000000000000001296.000000000000000000000.000000000000000000008628.781250000000000000002015-01-01 00:00:00+00:00
22010-01-01T00:00:00+00:000.0000000000000000000017200.832031250000000000002167.177001953125000000001296.000000000000000000002808661.500000000000000000002180.982118221054861351151570.850219726562500000000.000000000000000000000.063539177179336547851261.00000000000000000000[[701, 344, 138, 53, 36, 12, 5, 2, 2, 3], [0.0...94.2500000000000000000079.000000000000000000001296.000000000000000000000.000000000000000000008385.787109375000000000002010-01-01 00:00:00+00:00
32005-01-01T00:00:00+00:000.0000000000000000000016771.882812500000000000002084.728759765625000000001296.000000000000000000002701808.500000000000000000002110.573263357612177060221506.443725585937500000000.000000000000000000000.060168046504259109501261.00000000000000000000[[714, 341, 129, 53, 35, 13, 4, 2, 2, 3], [0.0...94.2500000000000000000079.000000000000000000001296.000000000000000000000.000000000000000000008039.709472656250000000002005-01-01 00:00:00+00:00
42000-01-01T00:00:00+00:000.0000000000000000000016353.629882812500000000002005.682495117187500000001296.000000000000000000002599364.500000000000000000002043.112637619375163922091428.247436523437500000000.000000000000000000000.056975774466991424561261.00000000000000000000[[722, 337, 131, 49, 35, 11, 4, 2, 2, 3], [0.0...94.2500000000000000000079.000000000000000000001296.000000000000000000000.000000000000000000007813.979980468750000000002000-01-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

We can now explore the SEDAC population density dataset time series available for our AOI. We can plot the dataset using the code below:

-
-
# Figure size: 10 is width, 5 is height
-fig = plt.figure(figsize=(10,5))
-
-# Use which_stat to choose any statistic from our DataFrame to visualize.
-which_stat = "mean"
-
-plt.plot(
-    df["date"], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum pop density
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width
-    label=f"{which_stat.capitalize()} {items[0].assets[asset_name].title}", # Legend label,
-    marker='o' # Add circles to mark each data point
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Year")
-
-# Insert label for the Y-axis
-plt.ylabel("persons/km$^2$")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} over {aoi_name}")
-
-
-# Add data citation
-plt.text(
-    df["date"].iloc[0],           # X-coordinate of the text
-    df[which_stat].min(),              # Y-coordinate of the text
-    # Text to be displayed
-    f"Source: {collection.title}",                  
-    fontsize=9,                             # Font size
-    horizontalalignment="right",             # Horizontal alignment
-    verticalalignment="bottom",              # Vertical alignment
-    color="blue",                            # Text color
-)
-
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully explored, analyzed and visualized the STAC collection for the SEDAC Gridded World Population Density dataset.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare population density for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualizing the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook_files/figure-html/cell-19-output-1.png b/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook_files/figure-html/cell-19-output-1.png deleted file mode 100644 index d837b65..0000000 Binary files a/_site/user_data_notebooks/sedac-popdensity-yeargrid5yr-v4.11_User_Notebook_files/figure-html/cell-19-output-1.png and /dev/null differ diff --git a/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook.html b/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook.html deleted file mode 100644 index 6a84227..0000000 --- a/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook.html +++ /dev/null @@ -1,19913 +0,0 @@ - - - - - - - - - - - - -Vulcan Fossil Fuel COβ‚‚ Emissions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

Vulcan Fossil Fuel COβ‚‚ Emissions

-
- -
-
- Annual (2010 - 2021), 1 km resolution estimates of carbon dioxide emissions from fossil fuels and cement production over the contiguous United States, version 4.0. -
-
- - -
- -
-
Author
-
-

Siddharth Chaudhary, Paridhi Parajuli

-
-
- -
-
Published
-
-

August 30, 2024

-
-
- - -
- - - -
- - -
-

Access this Notebook

-

You can launch this notebook in the US GHG Center JupyterHub by clicking the link below. If you are a new user, you should first sign up for the hub by filling out this request form and providing the required information.

-

Access the Vulcan Fossil Fuel COβ‚‚ Emissions notebook in the US GHG Center JupyterHub.

-
-
-

Table of Contents

- -
-
-

Data Summary and Application

-
    -
  • Spatial coverage: Contiguous United States
  • -
  • Spatial resolution: 1 km x 1 km
  • -
  • Temporal extent: 2010 - 2021
  • -
  • Temporal resolution: Annual
  • -
  • Unit: Metric tons of carbon dioxide per 1 km x 1 km grid cell per year
  • -
  • Utility: Climate Research
  • -
-

For more, visit the Vulcan Fossil Fuel COβ‚‚ Emissions data overview page.

-
-
-

Approach

-
    -
  1. Identify available dates and temporal frequency of observations for the given collection using the GHGC API /stac endpoint. The collection processed in this notebook is the Vulcan Fossil Fuel COβ‚‚ Emissions Data product.
  2. -
  3. Pass the STAC item into the raster API /collections/{collection_id}/items/{item_id}/tilejson.json endpoint.
  4. -
  5. Using folium.plugins.DualMap, we will visualize two tiles (side-by-side), allowing us to compare time points.
  6. -
  7. After the visualization, we will perform zonal statistics for a given polygon.
  8. -
-
-
-

About the Data

-
-

Vulcan Fossil Fuel CO2 Emissions, Version 4

-

The Vulcan version 4.0 data product represents total carbon dioxide (CO2) emissions resulting from the combustion of fossil fuel (ff) for the contiguous United States and District of Columbia. Referred to as ffCO2, the emissions from Vulcan are also categorized into 10 source sectors including; airports, cement production, commercial marine vessels, commercial, power plants, industrial, non-road, on-road, residential and railroads. Data are gridded annually on a 1-km grid for the years 2010 to 2021. These data are annual sums of hourly estimates. Shown is the estimated total annual ffCO2 for the United States, as well as the estimated total annual ffCO2 per sector.

-

For more information regarding this dataset, please visit the Vulcan Fossil Fuel COβ‚‚ Emissions, Version 4 data overview page.

-
-
-
-

Terminology

-

Navigating data via the GHGC API, you will encounter terminology that is different from browsing in a typical filesystem. We’ll define some terms here which are used throughout this notebook. - catalog: All datasets available at the /stac endpoint - collection: A specific dataset, e.g. Vulcan v4.0 - item: One granule in the dataset, e.g. one annual file of fossil fuel CO2 emissions - asset: A variable available within the granule, e.g. CO2 emissions from residential buildings, airports, or cement - STAC API: SpatioTemporal Asset Catalogs - Endpoint for fetching metadata about available datasets - Raster API: Endpoint for fetching data itself, for imagery and statistics

-
-
-

Install the Required Libraries

-

Required libraries are pre-installed on the GHG Center Hub. If you need to run this notebook elsewhere, please install them with this line in a code cell:

-

%pip install requests folium rasterstats pystac_client pandas matplotlib –quiet

-
-
# Import the following libraries
-# For fetching from the Raster API
-import requests
-# For making maps
-import folium
-import folium.plugins
-from folium import Map, TileLayer
-# For talking to the STAC API
-from pystac_client import Client
-# For working with data
-import pandas as pd
-# For making time series
-import matplotlib.pyplot as plt
-# For formatting date/time data
-import datetime
-# Custom functions for working with GHGC data via the API
-import ghgc_utils
-
-
-

Query the STAC API

-

STAC API Collection Names

-

Now, you must fetch the dataset from the STAC API by defining its associated STAC API collection ID as a variable. The collection ID, also known as the collection name, for the Vulcan Fossil Fuel CO2 Emissions, Version 4 dataset is vulcan-ffco2-yeargrid-v4.*

-

**You can find the collection name of any dataset on the GHGC data portal by navigating to the dataset landing page within the data catalog. The collection name is the last portion of the dataset landing page’s URL, and is also listed in the pop-up box after clicking β€œACCESS DATA.”*

-
-
# Provide STAC and RASTER API endpoints
-STAC_API_URL = "https://earth.gov/ghgcenter/api/stac"
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Please use the collection name similar to the one used in the STAC collection.
-# Name of the collection for Vulcan Fossil Fuel COβ‚‚ Emissions, Version 4. 
-collection_name = "vulcan-ffco2-yeargrid-v4"
-
-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library enables an HTTP request
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-

Examiningthe contents of the collection under the temporal variable, we see that the data is available from January 2011 to December 2021. Looking at the dashboard:time density, the data is periodic with year time density.

-
-
# Using PySTAC client
-# Fetch the collection from the STAC API using the appropriate endpoint
-# The 'pystac' library allows a HTTP request possible
-catalog = Client.open(STAC_API_URL)
-collection = catalog.get_collection(collection_name)
-
-# Print the properties of the collection to the console
-collection
-
- - - - -
-
-
-
items = list(collection.get_items())  # Convert the iterator to a list
-print(f"Found {len(items)} items")
-
-
Found 12 items
-
-
-
-
# Examine the first item in the collection
-# Keep in mind that a list starts from 0, 1, 2... therefore items[0] is referring to the first item in the list/collection
-items[0]
-
- - - - -
-
-
-
# Restructure our items into a dictionary where keys are the datetime items
-# Then we can query more easily by date/time, e.g. "2020"
-items_dict = {item.properties["start_datetime"][:4]: item for item in collection.get_items()}
-
-
-
# Before we go further, let's pick which asset to focus on for the remainder of the notebook.
-# We'll focus on total CO2 emissions here, so our asset of interest is:
-asset_name = "total-co2"
-
-
-
-
-

Creating Maps Using Folium

-

You will now explore changes in CO2 emissions at a given location and time and visualize the outputs on a map using folium.

-
-

Fetch Imagery from Raster API

-

Here we get information from the Raster API which we will add to our map in the next section.

-
-
# Specify two date/times that you would like to visualize, using the format of items_dict.keys()
-dates = ["2021","2011"]
-
-

Below, we use some statistics of the raster data to set upper and lower limits for our color bar. These are saved as the rescale_values, and will be passed to the Raster API in the following step(s).

-
-
# Extract collection name and item ID for the first date
-first_date = items_dict[dates[0]]
-collection_id_1 = first_date.collection_id
-item_id_1 = first_date.id
-# Select relevant asset
-object = first_date.assets[asset_name]
-raster_bands = object.extra_fields.get("raster:bands", [{}])
-# Print raster bands' information
-raster_bands
-
-
[{'scale': 1.0,
-  'nodata': -9999.0,
-  'offset': 0.0,
-  'sampling': 'area',
-  'data_type': 'float32',
-  'histogram': {'max': 272530.15625,
-   'min': 1.7858106104995386e-07,
-   'count': 11,
-   'buckets': [227843, 81, 36, 7, 3, 6, 1, 4, 1, 1]},
-  'statistics': {'mean': 162.91311194255712,
-   'stddev': 2080.549384731812,
-   'maximum': 272530.15625,
-   'minimum': 1.7858106104995386e-07,
-   'valid_percent': 47.7767485917382}}]
-
-
-
-
# Use statistics to generate an appropriate colorbar range
-rescale_values = {
-    "max": raster_bands[0]["statistics"]["mean"]+ 4.0*raster_bands[0]["statistics"]["stddev"],
-    "min": 0.,
-}
-
-print(rescale_values)
-
-
{'max': 8485.110650869805, 'min': 0.0}
-
-
-

Now, you will pass the item id, collection name, asset name, and the rescale values to the Raster API endpoint, along with a colormap. This step is done twice, one for each date/time you will visualize, and tells the Raster API which collection, item, and asset you want to view, specifying the colormap and colorbar ranges to use for visualization. The API returns a JSON with information about the requested image. Each image will be referred to as a tile.

-
-
# Choose a colormap for displaying the data
-# Make sure to capitalize per Matplotlib standard colormap names
-# For more information on Colormaps in Matplotlib, please visit https://matplotlib.org/stable/users/explain/colors/colormaps.html
-color_map = "Spectral_r" 
-
-
-
# Make a GET request to retrieve information for the date mentioned below
-month1_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_1}/items/{item_id_1}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values["min"]},{rescale_values["max"]}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month1_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/vulcan-ffco2-yeargrid-v4/items/vulcan-ffco2-yeargrid-v4-2021/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=total-co2&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0.0%2C8485.110650869805'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-128.22654896758996,
-  22.857766529124284,
-  -65.30917199495289,
-  51.44087947724907],
- 'center': [-96.76786048127143, 37.14932300318668, 0]}
-
-
-
-
# Repeat the above for your second date/time
-# Note that we do not calculate new rescale_values for this tile
-# We want date tiles 1 and 2 to have the same colorbar range for visual comparison
-second_date = items_dict[dates[1]]
-collection_id_2 = second_date.collection_id
-item_id_2 = second_date.id
-
-month2_tile = requests.get(
-    f"{RASTER_API_URL}/collections/{collection_id_2}/items/{item_id_2}/tilejson.json?"
-    f"&assets={asset_name}"
-    f"&color_formula=gamma+r+1.05&colormap_name={color_map.lower()}"
-    f"&rescale={rescale_values["min"]},{rescale_values["max"]}"
-).json()
-
-# Print the properties of the retrieved granule to the console
-month2_tile
-
-
{'tilejson': '2.2.0',
- 'version': '1.0.0',
- 'scheme': 'xyz',
- 'tiles': ['https://earth.gov/ghgcenter/api/raster/collections/vulcan-ffco2-yeargrid-v4/items/vulcan-ffco2-yeargrid-v4-2011/tiles/WebMercatorQuad/{z}/{x}/{y}@1x?assets=total-co2&color_formula=gamma+r+1.05&colormap_name=spectral_r&rescale=0.0%2C8485.110650869805'],
- 'minzoom': 0,
- 'maxzoom': 24,
- 'bounds': [-128.22654896758996,
-  22.857766529124284,
-  -65.30917199495289,
-  51.44087947724907],
- 'center': [-96.76786048127143, 37.14932300318668, 0]}
-
-
-
-
-

Generate Map

-
-
# Initialize the map, specifying the center of the map and the starting zoom level.
-# 'folium.plugins' allows mapping side-by-side via 'DualMap'
-# Map is centered on the position specified by "location=(lat,lon)"
-map_ = folium.plugins.DualMap(location=(34, -118), zoom_start=6)
-
-# Define the first map layer
-map_layer_1 = TileLayer(
-    tiles=month1_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution 
-    name=f'{dates[0]} {items[0].assets[asset_name].title}', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.8, # Adjust the transparency of the layer
-)
-# Add the first layer to the Dual Map 
-map_layer_1.add_to(map_.m1)
-
-# Define the second map layer
-map_layer_2 = TileLayer(
-    tiles=month2_tile["tiles"][0], # Path to retrieve the tile
-    attr="GHG", # Set the attribution 
-    name=f'{dates[1]} {items[0].assets[asset_name].title}', # Title for the layer
-    overlay=True, # The layer can be overlaid on the map
-    opacity=0.8, # Adjust the transparency of the layer
-)
-# Add the second layer to the Dual Map 
-map_layer_2.add_to(map_.m2)
-
-# Add a layer control to switch between map layers
-folium.LayerControl(collapsed=False).add_to(map_)
-
-# Add colorbar
-# First we'll rescale our numbers to make the labels nicer.
-re_rescale_values = {
-    "min":rescale_values["min"]/1e3,
-    "max":rescale_values["max"]/1e3
-}
-# We can use 'generate_html_colorbar' from the 'ghgc_utils' module 
-# to create an HTML colorbar representation.
-legend_html = ghgc_utils.generate_html_colorbar(color_map,re_rescale_values,label=f'{items[0].assets[asset_name].title} (10^3 tonne CO2/km2/year)',dark=True)
-
-# Add colorbar to the map
-map_.get_root().html.add_child(folium.Element(legend_html))
-
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

This map indicates an overall decrease in total CO2 emissions over the LA basin between 2011 and 2021.

-
-
-
-

Calculating Zonal Statistics

-

To perform zonal statistics, first we need to create a polygon. In this use case we are creating a polygon over the Los Angeles basin.

-
-
# Give the area of interest (AOI) a name for use in plotting later
-aoi_name = "LA Basin"
-# Define AOI as a GeoJSON
-aoi = {
-    "type": "Feature", # Create a feature object
-    "properties": {},
-    "geometry": { # Set the bounding coordinates for the polygon
-        "coordinates": [
-            [
-                [-119, 34.34],
-                [-119,33.4],
-                [-117,33.4],
-                [-117,34.34],
-                [-119,34.34]            
-            ]
-        ],
-        "type": "Polygon",
-    },
-}
-
-
-
# Quick Folium map to visualize this AOI
-map_ = folium.Map(location=(33.6, -118), zoom_start=8)
-# Add AOI to map
-folium.GeoJson(aoi, name=aoi_name, style_function=lambda feature: {"fillColor":"none","color":"#FFA1F8"}).add_to(map_)
-# Add data layer to visualize number of grid cells within AOI
-# (Created in previous section)
-map_layer_2.add_to(map_)
-# Add a quick colorbar
-# (Also utilizes values defined in previous section)
-legend_html = ghgc_utils.generate_html_colorbar(color_map,re_rescale_values,label='10^3 tonne CO2/km2/year',dark=True)
-map_.get_root().html.add_child(folium.Element(legend_html))
-map_
-
-
Make this Notebook Trusted to load map: File -> Trust Notebook
-
-
-

We can generate the statistics for the AOI using a function from the ghgc_utils module, which fetches the data and its statistics from the Raster API.

-
-
%%time
-# %%time = Wall time (execution time) for running the code below
-
-# Statistics will be returned as a Pandas DataFrame
-df = ghgc_utils.generate_stats(items,aoi,url=RASTER_API_URL,asset=asset_name)
-# Print first five rows of the statistics DataFrame
-df.head(5)
-
-
Generating stats...
-Done!
-CPU times: user 37.5 ms, sys: 7.61 ms, total: 45.1 ms
-Wall time: 4.58 s
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
datetimeminmaxmeancountsumstdmedianmajorityminorityuniquehistogramvalid_percentmasked_pixelsvalid_pixelspercentile_2percentile_98date
02021-01-01T00:00:00+00:000.00668263202533125877527346.375000000000000000001541.0662841796875000000012719.5996093750000000000019601746.000000000000000000008869.79233127811130543705191.9095764160156250000044.108810424804687500000.0066826320253312587710874.00000000000000000000[[12893, 9, 3, 0, 3, 1, 0, 2, 0, 1], [0.006682...78.890000000000000568433456.0000000000000000000012912.000000000000000000002.728958845138549804698424.976562500000000000002021-01-01 00:00:00+00:00
12020-01-01T00:00:00+00:000.00668263202533125877534765.000000000000000000001477.2769775390625000000012719.5996093750000000000018790372.000000000000000000008195.37479313789481238928184.7875518798828125000039.908550262451171875000.0066826320253312587710873.00000000000000000000[[12893, 11, 2, 2, 1, 1, 0, 1, 0, 1], [0.00668...78.890000000000000568433456.0000000000000000000012912.000000000000000000002.471331119537353515628111.030273437500000000002020-01-01 00:00:00+00:00
22019-01-01T00:00:00+00:000.00623192684724926949525756.687500000000000000001679.6674804687500000000012719.5996093750000000000021364698.000000000000000000008402.02404186038984335028201.1569061279296875000048.326385498046875000000.0062319268472492694911030.00000000000000000000[[12891, 10, 5, 1, 1, 0, 3, 0, 0, 1], [0.00623...78.890000000000000568433456.0000000000000000000012912.000000000000000000003.019144773483276367199459.760742187500000000002019-01-01 00:00:00+00:00
32018-01-01T00:00:00+00:000.00859073270112276077530198.250000000000000000001700.6760253906250000000012719.5996093750000000000021631918.000000000000000000008430.08991648369010363240202.4296112060546875000047.736652374267578125000.0085907327011227607711028.00000000000000000000[[12892, 9, 2, 4, 2, 0, 2, 0, 0, 1], [0.008590...78.890000000000000568433456.0000000000000000000012912.000000000000000000003.023925065994262695319656.160156250000000000002018-01-01 00:00:00+00:00
42017-01-01T00:00:00+00:000.00748746469616889954529617.500000000000000000001744.4998779296875000000012719.5996093750000000000022189340.000000000000000000009290.73947541313827969134203.8123931884765625000047.772426605224609375000.0074874646961688995411032.00000000000000000000[[12891, 10, 2, 3, 1, 1, 2, 0, 1, 1], [0.00748...78.890000000000000568433456.0000000000000000000012912.000000000000000000003.021260976791381835949737.143554687500000000002017-01-01 00:00:00+00:00
- -
-
-
-
-

Time-Series Analysis

-

We can now explore the total fossil fuel emission time series for our AOI. We can plot the data set using the code below:

-
-
# Figure size: 10 is width, 5 is height.
-fig = plt.figure(figsize=(10,5))
-df = df.sort_values(by="datetime")
-
-# Use which_stat to pick any statistic from our DataFrame to visualize
-which_stat = "mean"
-
-plt.plot(
-    [d[0:4] for d in df["datetime"]], # X-axis: sorted datetime
-    df[which_stat], # Y-axis: maximum COβ‚‚
-    color="red", # Line color
-    linestyle="-", # Line style
-    linewidth=2, # Line width,
-    marker='o', # Add circle markers at location of data points
-    label=f"{which_stat.capitalize()} {items[0].assets[asset_name].title}", # Legend label
-)
-
-# Display legend
-plt.legend()
-
-# Insert label for the X-axis
-plt.xlabel("Year")
-
-# Insert label for the Y-axis
-plt.ylabel("tonne C/kmΒ²/year")
-
-# Insert title for the plot
-plt.title(f"{which_stat.capitalize()} {items[0].assets[asset_name].title} for {aoi_name}")
-
-# Add data citation
-plt.text(
-    min([d[0:4] for d in df["datetime"]]),           # X-coordinate of the text
-    df[which_stat].min(),                  # Y-coordinate of the text
-    # Text to be displayed
-    f"Source: {collection.title}",      #example text            
-    fontsize=9,                             # Font size
-    horizontalalignment="left",              # Horizontal alignment
-    verticalalignment="top",                 # Vertical alignment
-    color="blue",                            # Text color
-)
-
-
-# Plot the time series
-plt.show()
-
-
-
-

-
-
-
-
-
-
-

Summary

-

In this notebook we have successfully explored, analyzed, and visualized the STAC collection for Vulcan Fossil Fuel COβ‚‚ Emissions, Version 4 dataset.

-
    -
  1. Install and import the necessary libraries
  2. -
  3. Fetch the collection from STAC collections using the appropriate endpoints
  4. -
  5. Count the number of existing granules within the collection
  6. -
  7. Map and compare the total fossil fuel COβ‚‚ emissions for two distinctive months/years
  8. -
  9. Generate zonal statistics for the area of interest (AOI)
  10. -
  11. Visualizing the Data as a Time Series
  12. -
-

If you have any questions regarding this user notebook, please contact us using the feedback form.

- - -
-
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook_files/figure-html/cell-20-output-1.png b/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook_files/figure-html/cell-20-output-1.png deleted file mode 100644 index 987c88b..0000000 Binary files a/_site/user_data_notebooks/vulcan-ffco2-yeargrid-v4_User_Notebook_files/figure-html/cell-20-output-1.png and /dev/null differ diff --git a/_site/utility.html b/_site/utility.html deleted file mode 100644 index 9a0efe8..0000000 --- a/_site/utility.html +++ /dev/null @@ -1,1564 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Data Usage Notebooks Utility Functions – U.S. Greenhouse Gas Center Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Data Usage Notebooks Utility Functions

-
- - - -
- - - - -
- - - -
- - -

Welcome to the U.S. Greenhouse Gas (GHG) Center data usage notebooks utility functions, your gateway to exploring and analyzing curated datasets on greenhouse gas emissions. Our cloud-based system offers seamless access to GHG curated datasets. Dive into the data with our utility functions, which demonstrate how to explore, access, visualize, and conduct basic data analysis for each GHG Center dataset in a code notebook environment.

-

Join us in our mission to make data-driven environmental solutions. Explore, analyze, and make a difference with the US GHG Center.

-

View the US GHG Center Data Catalog

-
-

Utilities

-

Section contains multiple utility functions

-
-
import requests
-import pandas as pd
-import datetime
-import matplotlib.pyplot as plt
-from matplotlib.colors import rgb2hex
-import numpy as np
-import sys
-
-RASTER_API_URL = "https://earth.gov/ghgcenter/api/raster"
-
-# Functions mentioned below are defined in stats_module.py
-
-def generate_stats(item, geojson, asset_name):
-    """
-    Retrieve statistics for a specific granule (item) within a GeoJSON-defined polygon.
-
-    Args:
-        item (dict): The granule containing item details (including assets and metadata).
-        geojson (dict): A GeoJSON Feature or FeatureCollection specifying the bounding box.
-        asset_name (str): The asset name or raster identifier to be used.
-
-    Returns:
-        dict: A dictionary with computed statistics and the item's datetime information.
-    """
-    result = requests.post(
-        f"{RASTER_API_URL}/cog/statistics",
-        params={"url": item["assets"][asset_name]["href"]},
-        json=geojson,
-    ).json()
-
-    print(result)
-
-    # Handle cases where either "start_datetime" or "datetime" is present
-    datetime_value = item["properties"].get("start_datetime", item["properties"].get("datetime"))
-
-    return {
-        **result["properties"],
-        "datetime": datetime_value,
-    }
-
-
-
-def clean_stats(stats_json):
-    """
-    Clean and normalize the statistics JSON data and convert it into a pandas DataFrame.
-
-    Args:
-        stats_json (list of dict): List of statistics dictionaries for each granule.
-
-    Returns:
-        pd.DataFrame: A DataFrame with flattened and cleaned statistics.
-    """
-    df = pd.json_normalize(stats_json)
-    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
-    df["date"] = pd.to_datetime(df["datetime"])
-    return df
-
-
-def display_stats(df, num_rows=5):
-    """
-    Display the top rows of the cleaned statistics DataFrame.
-
-    Args:
-        df (pd.DataFrame): DataFrame containing the cleaned statistics.
-        num_rows (int): Number of rows to display (default is 5).
-    """
-    print(df.head(num_rows))
-
-# Functions mentioned below are defined in ghgc_utlis.py
-
-def raster_stats(item, geojson,**kwargs):
-    """
-    Returns Raster API statistics for an item. Inputs: item, geojson, url = Raster API url, asset = asset name within item. Outputs: dictionary containing statistics over the bounding box and item's datetime information.
-    """
-
-    try:
-        url = item["assets"][kwargs["asset"]]["href"]
-    except TypeError as err:
-        url = item.assets[kwargs["asset"]].href
-    except KeyError as err:
-        print('KeyError in raster_stats: Make sure you include \'url\' and \'asset\' as keyword arguments!')
-        sys.exit()      
-    
-    # A POST request is made to submit the data associated with the item of interest (specific observation) within the boundaries of the polygon to compute its statistics
-    result = requests.post(
-
-        # Raster API Endpoint for computing statistics
-        f"{kwargs['url']}/cog/statistics",
-
-        # Pass the URL to the item, asset name, and raster identifier as parameters
-        params={"url": url},
-
-        # Send the GeoJSON object (polygon) along with the request
-        json=geojson,
-
-    # Return the response in JSON format
-    ).json()
-
-
-    # Print the result
-    ##print(result)
-
-    # Return a dictionary containing the computed statistics along with the item's datetime information.
-    try:
-        return {
-            **result["properties"],
-            "datetime": item["properties"]["start_datetime"],
-        }
-    except KeyError as err:
-        try:
-            return {
-                **result["features"][0]["properties"],
-                'datetime': item["properties"]["start_datetime"],
-            }
-        except TypeError as err:
-            return {
-                **result["features"][0]["properties"],
-                "datetime": item.properties["start_datetime"]
-            }
-    except TypeError as err:
-        return {
-            **result["properties"],
-            "datetime": item.properties["start_datetime"]
-        }
-
-def clean_stats(stats_json) -> pd.DataFrame:
-    """
-    Takes dictionary output from generate_stats() and returns a neater, more intuitively-titled pandas DataFrame.
-    """
-    pd.set_option('display.float_format', '{:.20f}'.format)
-    stats_json_ = [stats_json[datetime] for datetime in stats_json] 
-    # Normalize the JSON data 
-    df = pd.json_normalize(stats_json_)
-
-    # Replace the naming "statistics.b1" in the columns
-    df.columns = [col.replace("statistics.b1.", "") for col in df.columns]
-
-    # Set the datetime format
-    df["date"] = pd.to_datetime(df["datetime"])
-
-    # Return the cleaned format
-    return df
-
-def generate_stats(items,geojson,**kwargs):
-    """
-    Runs raster_stats() and clean-stats() on all items. Inputs: List containing multiple items; geojson; url = URL for Raster API, asset = asset name for item field. Outputs: Pandas DataFrame of cleaned statistics for all items in list.
-    """
-    stats = {}
-    print('Generating stats...')
-    for item in items:
-        try:
-            date = item["properties"]["start_datetime"]  # Get the associated date
-        except TypeError:
-            date = item.properties["start_datetime"]
-        year_month = date[:7].replace('-', '')  # Convert datetime to year-month
-        stats[year_month] = raster_stats(item, geojson,**kwargs)
-    df = clean_stats(stats)
-    print('Done!')
-    return df
-
-def generate_html_colorbar(color_map,rescale_values,label=None,dark=False):
-    """
-    Creates html-formatted string which can be added to Folium maps to display a colorbar. Required inputs: colormap (matplotlib-accepted string), rescale_values in the form of a dictionary containing keys 'max' and 'min' which specify the desired colorbar range. Optional inputs: label, which will display above the colorbar. Output: html-formatted string detailing construction of the colorbar.
-    """
-    # Pull out colors from our chosen colormap
-    cmap = plt.get_cmap(color_map)
-    colors = cmap(np.linspace(0,1,11))
-    colors = [rgb2hex(c) for c in colors]
-    # Define custom tick values for the legend bar
-    tick_val = np.round(np.linspace(rescale_values['min'],rescale_values['max'],5),decimals=6)
-    # Create a HTML representation
-    legend_html = cmap._repr_html_()
-
-    # Create a customized HTML structure for the legend
-#    legend_html = f'''
-#    <div style="position: fixed; bottom: 50px; left: 175px; z-index: 1000; width: 400px; height: auto; #background-color: rgba(255, 255, 255, 0.8);
-#             border-radius: 5px; border: 1px solid grey; padding: 10px; font-size: 12px; color: black;">
-#        <b>{label}</b><br>
-#        <div style="display: flex; justify-content: space-between;">
-#            <div>{tick_val[0]}</div> 
-#            <div>{tick_val[1]}</div> 
-#            <div>{tick_val[2]}</div> 
-#            <div>{tick_val[3]}</div> 
-#            <div>{tick_val[4]}</div> 
-#        </div>
-#        <div style="background: linear-gradient(to right,
-#                {colors[0]}, {colors[1]} {20}%,
-#                {colors[1]} {20}%, {colors[2]} {40}%,
-#                {colors[2]} {40}%, {colors[3]} {50}%,
-#                {colors[3]} {50}%, {colors[4]} {80}%,
-#                {colors[4]} {80}%, {colors[5]}); height: 10px;"></div>
-#    </div>
-#    '''
-    if dark:
-        bg_color = "rgba(0, 0, 0, 0.8)"
-        font_color="white"
-    else:
-        bg_color = "rgba(255, 255, 255, 0.8)"
-        font_color="black"
-    
-    legend_html = f'''
-    <div style="position: fixed; bottom: 50px; left: 175px; z-index: 1000; width: 400px; height: auto; background-color: {bg_color};
-             border-radius: 5px; border: 1px solid grey; padding: 10px; font-size: 12px; color: {font_color};">
-        <b>{label}</b><br>
-        <div style="display: flex; justify-content: space-between;">
-            <div>{tick_val[0]}</div> 
-            <div>{tick_val[1]}</div> 
-            <div>{tick_val[2]}</div> 
-            <div>{tick_val[3]}</div> 
-            <div>{tick_val[4]}</div>
-        </div>
-        <div style="background: linear-gradient(to right,
-                {colors[0]}, {colors[1]} {10}%,
-                {colors[1]} {10}%, {colors[2]} {20}%,
-                {colors[2]} {20}%, {colors[3]} {30}%,
-                {colors[3]} {30}%, {colors[4]} {40}%,
-                {colors[4]} {40}%, {colors[5]} {50}%,
-                {colors[5]} {50}%, {colors[6]} {60}%,
-                {colors[6]} {60}%, {colors[7]} {70}%,
-                {colors[7]} {70}%, {colors[8]} {80}%,
-                {colors[8]} {80}%, {colors[9]} {90}%,
-                {colors[9]} {90}%, {colors[10]}); height: 10px;"></div>
-    </div>
-    '''
-    return legend_html    
-
-
-
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- -
- - - - - - \ No newline at end of file diff --git a/_site/workflow.html b/_site/workflow.html deleted file mode 100644 index 12c22b4..0000000 --- a/_site/workflow.html +++ /dev/null @@ -1,1460 +0,0 @@ - - - - - - - - - -U.S. Greenhouse Gas Center: Data Flow Diagrams – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

U.S. Greenhouse Gas Center: Data Flow Diagrams

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for U.S. Greenhouse Gas (GHG) Center data flow diagrams. These diagrams summarize the process a dataset goes through from acquisition to integration in the U.S. GHG Center.

-

Click on a dataset name to view the data flow diagram for that dataset.

-

View the US GHG Center Data Catalog

- -
-

Contact

-

For technical help or general questions, please contact the support team using the feedback form.

- - -
- - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/workflow2.html b/_site/workflow2.html deleted file mode 100644 index 5f05ef6..0000000 --- a/_site/workflow2.html +++ /dev/null @@ -1,1495 +0,0 @@ - - - - - - - - - -NASA Disasters: Data Flow Diagrams – NASA Disasters Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- - -
- - - -
- - -
-
-

NASA Disasters: Data Flow Diagrams

-
- - - -
- - - - -
- - - -
- - -

Welcome to the homepage for NASA Disasters data flow diagrams. These diagrams summarize the process of how to find, download, and process data for NASA Disasters.

-

Click on a dataset name to view the data flow diagram for that dataset.

-

View the NASA Disasters Resources

- - - - - Back to top
- - -
- - - - - - \ No newline at end of file diff --git a/_site/workflow2.qmd b/_site/workflow2.qmd deleted file mode 100644 index e69de29..0000000 diff --git a/workflow.qmd b/workflow.qmd index c6572af..df2c26f 100644 --- a/workflow.qmd +++ b/workflow.qmd @@ -1,52 +1,13 @@ --- -title: "U.S. Greenhouse Gas Center: Data Flow Diagrams" +title: "NASA Disasters: Data Flow Diagrams" --- -Welcome to the homepage for [U.S. Greenhouse Gas (GHG) Center](https://earth.gov/ghgcenter) data flow diagrams. These diagrams summarize the process a dataset goes through from acquisition to integration in the U.S. GHG Center. +Welcome to the homepage for [NASA Disasters](https://appliedsciences.nasa.gov/what-we-do/disasters) data flow diagrams. These diagrams summarize the process of how to find, download, and process data for NASA Disasters. Click on a dataset name to view the data flow diagram for that dataset. -[View the US GHG Center Data Catalog](https://earth.gov/ghgcenter/data-catalog) +[View the NASA Disasters Resources](https://appliedsciences.nasa.gov/what-we-do/disasters/practitioner-resources#portal) -- [Air-Sea COβ‚‚ Flux, ECCO-Darwin Model v5 Data Flow Diagram](data_workflow/eccodarwin-co2flux-monthgrid-v5_Data_Flow.qmd) +- [NRT Data Download](data_workflow2/NRT_data_download.qmd) -- [Atmospheric Carbon Dioxide Concentrations from the NOAA Global Monitoring Laboratory Data Flow Diagram](data_workflow/noaa-gggrn-co2-concentrations_Data_Flow.qmd) - -- [Atmospheric Methane Concentrations from the NOAA Global Monitoring Laboratory Data Flow Diagram](data_workflow/noaa-gggrn-ch4-concentrations_Data_Flow.qmd) - -- [Carbon Dioxide and Methane Concentrations from the Indianapolis Flux Experiment (INFLUX) Data Flow Diagram](data_workflow/influx-testbed-ghg-concentrations_Data_Flow.qmd) - -- [Carbon Dioxide and Methane Concentrations from the Los Angeles Megacity Carbon Project Data Flow Diagram](data_workflow/lam-testbed-ghg-concentrations_Data_Flow.qmd) - -- [Carbon Dioxide and Methane Concentrations from the Northeast Corridor (NEC) Urban Test Bed Data Flow Diagram](data_workflow/nec-testbed-ghg-concentrations_Data_Flow.qmd) - -- [CarbonTracker-CHβ‚„ Isotopic Methane Inverse Fluxes Data Flow Diagram](data_workflow/ct-ch4-monthgrid-v2023_Data_Flow.qmd) - -- [EMIT Methane Point Source Plume Complexes Data Flow Diagram](data_workflow/emit-ch4plume-v1_Data_Flow.qmd) - -- [Geostationary Satellite Observations of Extreme and Transient Methane Emissions from Oil and Gas Infrastructure Complexes Data Flow Diagram](data_workflow/goes-ch4plume-v1_Data_Flow.qmd) - -- [GOSAT-based Top-down Total and Natural Methane Emissions Data Flow Diagram](data_workflow/gosat-based-ch4budget-yeargrid-v1_Data_Flow.qmd) - -- [GRAΒ²PES Greenhouse Gas and Air Quality Species Data Flow Diagram](data_workflow/gra2pes-ghg-monthgrid-v1_Data_Flow.qmd) - -- [MiCASA Land Carbon Flux Data Flow Diagram](data_workflow/micasa-carbonflux-daygrid-v1_Data_Flow.qmd) - -- [OCO-2 GEOS Column COβ‚‚ Concentrations Data Flow Diagram](data_workflow/oco2geos-co2-daygrid-v10r_Data_Flow.qmd) - -- [OCO-2 MIP Top-Down COβ‚‚ Budgets Data Flow Diagram](data_workflow/oco2-mip-co2budget-yeargrid-v1_Data_Flow.qmd) - -- [ODIAC Fossil Fuel COβ‚‚ Emissions Data Flow Diagram](data_workflow/odiac-ffco2-monthgrid-v2024_Data_Flow.qmd) - -- [SEDAC Gridded World Population Density Data Flow Diagram](data_workflow/sedac-popdensity-yeargrid5yr-v4.11_Data_Flow.qmd) - -- [U.S. Gridded Anthropogenic Methane Emissions Inventory Data Flow Diagram](data_workflow/epa-ch4emission-grid-v2express_Data_Flow.qmd) - -- [Vulcan Fossil Fuel COβ‚‚ Emissions Data Flow Diagram](data_workflow/vulcan-ffco2-yeargrid-v4_Data_Flow.qmd) - -- [Wetland Methane Emissions, LPJ-EOSIM Model Data Flow Diagram](data_workflow/lpjeosim-wetlandch4-grid-v1_Data_Flow.qmd) - - -## Contact - -For technical help or general questions, please contact the support team using the [feedback form](https://docs.google.com/forms/d/e/1FAIpQLSeVWCrnca08Gt_qoWYjTo6gnj1BEGL4NCUC9VEiQnXA02gzVQ/viewform). \ No newline at end of file +- [NRT Directory Structure](data_workflow2/NRT_directory_structure.qmd) \ No newline at end of file diff --git a/workflow2.qmd b/workflow2.qmd deleted file mode 100644 index df2c26f..0000000 --- a/workflow2.qmd +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "NASA Disasters: Data Flow Diagrams" ---- - -Welcome to the homepage for [NASA Disasters](https://appliedsciences.nasa.gov/what-we-do/disasters) data flow diagrams. These diagrams summarize the process of how to find, download, and process data for NASA Disasters. - -Click on a dataset name to view the data flow diagram for that dataset. - -[View the NASA Disasters Resources](https://appliedsciences.nasa.gov/what-we-do/disasters/practitioner-resources#portal) - -- [NRT Data Download](data_workflow2/NRT_data_download.qmd) - -- [NRT Directory Structure](data_workflow2/NRT_directory_structure.qmd) \ No newline at end of file