diff --git a/lesson7_files/EDA_Refactored.ipynb b/lesson7_files/EDA_Refactored.ipynb
index 6571c8a..96983a9 100644
--- a/lesson7_files/EDA_Refactored.ipynb
+++ b/lesson7_files/EDA_Refactored.ipynb
@@ -4,22 +4,20 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# E-commerce Business Analytics Dashboard\n",
+ "# E-commerce Business Intelligence Analysis\n",
"\n",
- "A comprehensive analysis of e-commerce sales data focusing on business performance metrics, customer satisfaction, and operational efficiency.\n",
+ "A comprehensive exploratory data analysis of e-commerce sales data focusing on business metrics, performance trends, and strategic insights.\n",
"\n",
"## Table of Contents\n",
- "\n",
"1. [Introduction & Business Objectives](#introduction)\n",
- "2. [Data Loading & Configuration](#data-loading)\n",
- "3. [Data Dictionary](#data-dictionary)\n",
- "4. [Data Preparation & Transformation](#data-preparation)\n",
- "5. [Business Metrics Analysis](#business-metrics)\n",
- " - [Revenue Performance Analysis](#revenue-analysis)\n",
- " - [Product Category Performance](#product-analysis)\n",
- " - [Geographic Performance Analysis](#geographic-analysis)\n",
- " - [Customer Experience Analysis](#customer-analysis)\n",
- "6. [Summary of Key Observations](#summary)\n",
+ "2. [Configuration & Setup](#configuration)\n",
+ "3. [Data Loading & Validation](#data-loading)\n",
+ "4. [Data Dictionary](#data-dictionary)\n",
+ "5. [Revenue Performance Analysis](#revenue-analysis)\n",
+ "6. [Product Category Performance](#product-analysis)\n",
+ "7. [Geographic Performance Analysis](#geographic-analysis)\n",
+ "8. [Customer Experience Analysis](#customer-analysis)\n",
+ "9. [Executive Summary & Recommendations](#summary)\n",
"\n",
"---"
]
@@ -30,71 +28,56 @@
"source": [
"## 1. Introduction & Business Objectives {#introduction}\n",
"\n",
- "This analysis provides insights into e-commerce business performance through comprehensive examination of sales data. The primary objectives are:\n",
- "\n",
- "- **Revenue Performance**: Analyze total revenue, growth trends, and order patterns\n",
- "- **Product Strategy**: Identify top-performing categories and optimization opportunities\n",
- "- **Geographic Insights**: Understand regional performance variations\n",
- "- **Customer Satisfaction**: Evaluate delivery performance and review metrics\n",
- "- **Operational Efficiency**: Assess delivery times and fulfillment quality\n",
- "\n",
- "### Analysis Configuration\n",
- "\n",
- "The analysis can be configured for different time periods by adjusting the parameters below:"
+ "This analysis provides comprehensive business intelligence insights for e-commerce operations, focusing on key performance indicators and strategic metrics.\n",
+ "\n",
+ "### Primary Business Questions:\n",
+ "- How has revenue performance changed over time?\n",
+ "- Which product categories drive the most revenue?\n",
+ "- What are the geographic patterns in sales performance?\n",
+ "- How satisfied are customers with our service?\n",
+ "- What delivery performance metrics indicate operational efficiency?\n",
+ "\n",
+ "### Key Performance Indicators (KPIs):\n",
+ "- **Revenue Metrics**: Total revenue, growth rates, average order value\n",
+ "- **Product Performance**: Category revenue distribution, top performers\n",
+ "- **Geographic Insights**: State-level performance analysis\n",
+ "- **Customer Satisfaction**: Review scores and delivery experience\n",
+ "- **Operational Efficiency**: Delivery times and fulfillment rates"
]
},
{
- "cell_type": "code",
- "execution_count": 1,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Analysis Period: 2023\n",
- "Comparison Period: 2022\n",
- "Month Filter: Full Year\n"
- ]
- }
- ],
"source": [
- "# Analysis Configuration\n",
- "ANALYSIS_YEAR = 2023\n",
- "COMPARISON_YEAR = 2022\n",
- "ANALYSIS_MONTH = None # Set to specific month (1-12) or None for full year\n",
- "DATA_PATH = 'ecommerce_data/'\n",
+ "## 2. Configuration & Setup {#configuration}\n",
"\n",
- "print(f\"Analysis Period: {ANALYSIS_YEAR}\")\n",
- "print(f\"Comparison Period: {COMPARISON_YEAR}\")\n",
- "if ANALYSIS_MONTH:\n",
- " print(f\"Month Filter: {ANALYSIS_MONTH}\")\n",
- "else:\n",
- " print(\"Month Filter: Full Year\")"
+ "Configure analysis parameters to customize the time period and comparison metrics."
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
+ "outputs": [],
"source": [
- "## 2. Data Loading & Configuration {#data-loading}\n",
+ "# Analysis Configuration Parameters\n",
+ "ANALYSIS_YEAR = 2023 # Primary year to analyze\n",
+ "COMPARISON_YEAR = 2022 # Comparison year for growth calculations\n",
+ "ANALYSIS_MONTH = None # Specific month (1-12) or None for full year\n",
+ "DATA_PATH = 'ecommerce_data/'\n",
"\n",
- "Loading all required datasets and initializing the analysis framework."
+ "# Display configuration\n",
+ "print(f\"Analysis Period: {ANALYSIS_YEAR}\")\n",
+ "print(f\"Comparison Period: {COMPARISON_YEAR}\")\n",
+ "print(f\"Month Filter: {'Full Year' if ANALYSIS_MONTH is None else f'Month {ANALYSIS_MONTH}'}\")\n",
+ "print(f\"Data Source: {DATA_PATH}\")"
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Libraries imported successfully\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Import required libraries\n",
"import pandas as pd\n",
@@ -111,1874 +94,672 @@
"from business_metrics import BusinessMetricsCalculator, MetricsVisualizer, print_metrics_summary\n",
"\n",
"# Configure display options\n",
- "warnings.filterwarnings('ignore')\n",
- "plt.style.use('default')\n",
- "sns.set_palette(\"husl\")\n",
"pd.set_option('display.max_columns', None)\n",
- "pd.set_option('display.precision', 2)\n",
+ "pd.set_option('display.float_format', '{:.2f}'.format)\n",
+ "warnings.filterwarnings('ignore')\n",
+ "plt.style.use('seaborn-v0_8')\n",
+ "\n",
+ "print(\"Libraries and modules loaded successfully\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Data Loading & Validation {#data-loading}\n",
"\n",
- "print(\"Libraries imported successfully\")"
+ "Load and validate all e-commerce datasets using the modular data loading framework."
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Loaded orders: 10000 records\n",
- "Loaded order_items: 16047 records\n",
- "Loaded products: 6000 records\n",
- "Loaded customers: 8000 records\n",
- "Loaded reviews: 6571 records\n",
- "Loaded payments: 14091 records\n",
- "Dataset Summary:\n",
- "==================================================\n",
- "ORDERS:\n",
- " Rows: 10,000\n",
- " Columns: 11\n",
- " Memory: 2.9 MB\n",
- " Date Range: 2021-12-31 to 2024-01-01\n",
- "\n",
- "ORDER_ITEMS:\n",
- " Rows: 16,047\n",
- " Columns: 8\n",
- " Memory: 4.2 MB\n",
- "\n",
- "REVIEWS:\n",
- " Rows: 6,571\n",
- " Columns: 7\n",
- " Memory: 2.3 MB\n",
- "\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "# Load and process all data\n",
+ "# Load and process all data using the data loader module\n",
+ "print(\"Loading e-commerce datasets...\")\n",
"loader, processed_data = load_and_process_data(DATA_PATH)\n",
"\n",
"# Display data summary\n",
- "data_summary = loader.get_data_summary()\n",
- "print(\"Dataset Summary:\")\n",
+ "summary = loader.get_data_summary()\n",
+ "print(\"\\nDataset Summary:\")\n",
"print(\"=\" * 50)\n",
- "for dataset, info in data_summary.items():\n",
- " print(f\"{dataset.upper()}:\")\n",
+ "for dataset_name, info in summary.items():\n",
+ " print(f\"{dataset_name.upper()}:\")\n",
" print(f\" Rows: {info['rows']:,}\")\n",
" print(f\" Columns: {info['columns']}\")\n",
- " print(f\" Memory: {info['memory_usage_mb']:.1f} MB\")\n",
+ " print(f\" Memory Usage: {info['memory_usage_mb']:.1f} MB\")\n",
" if info['date_range']:\n",
" print(f\" Date Range: {info['date_range']['start'].date()} to {info['date_range']['end'].date()}\")\n",
" print()"
]
},
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3. Data Dictionary {#data-dictionary}\n",
- "\n",
- "### Key Business Terms and Column Definitions\n",
- "\n",
- "| Column | Description | Business Impact |\n",
- "|--------|-------------|----------------|\n",
- "| **order_id** | Unique identifier for each customer order | Primary key for order-level analysis |\n",
- "| **price** | Item price excluding shipping | Core revenue metric |\n",
- "| **freight_value** | Shipping cost for the item | Additional revenue and cost analysis |\n",
- "| **order_status** | Current status of the order | Operational efficiency indicator |\n",
- "| **order_purchase_timestamp** | When the order was placed | Time-based analysis and trends |\n",
- "| **order_delivered_customer_date** | When order was delivered to customer | Delivery performance metric |\n",
- "| **product_category_name** | Product category classification | Product strategy and inventory planning |\n",
- "| **customer_state** | Customer's state location | Geographic market analysis |\n",
- "| **review_score** | Customer satisfaction rating (1-5) | Customer experience indicator |\n",
- "\n",
- "### Calculated Metrics\n",
- "\n",
- "- **Total Revenue**: Sum of all item prices for delivered orders\n",
- "- **Average Order Value (AOV)**: Average total value per order\n",
- "- **Delivery Days**: Time between order placement and delivery\n",
- "- **Revenue Growth**: Year-over-year percentage change in revenue\n",
- "- **Customer Satisfaction**: Distribution and average of review scores"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 4. Data Preparation & Transformation {#data-preparation}\n",
- "\n",
- "Creating the comprehensive sales dataset for analysis with configurable time filters."
- ]
- },
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Analysis Dataset Summary:\n",
- "Total Records: 7,448\n",
- "Unique Orders: 4,635\n",
- "Date Range: 2023-01-01 to 2023-12-31\n",
- "Total Revenue: $3,360,294.74\n",
- "\n",
- "Available columns: ['order_id', 'price', 'purchase_year', 'purchase_month', 'product_category_name', 'customer_state', 'review_score', 'delivery_days']\n",
- "\n",
- "Sample Data:\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " order_id \n",
- " price \n",
- " purchase_year \n",
- " purchase_month \n",
- " product_category_name \n",
- " customer_state \n",
- " review_score \n",
- " delivery_days \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " ord_5fa044951857e02fd1347b47 \n",
- " 111.91 \n",
- " 2023 \n",
- " 4 \n",
- " grocery_gourmet_food \n",
- " TN \n",
- " 5.0 \n",
- " 6 \n",
- " \n",
- " \n",
- " 1 \n",
- " ord_5fa044951857e02fd1347b47 \n",
- " 878.42 \n",
- " 2023 \n",
- " 4 \n",
- " electronics \n",
- " TN \n",
- " 5.0 \n",
- " 6 \n",
- " \n",
- " \n",
- " 2 \n",
- " ord_43b53981d951f855231d09ec \n",
- " 749.83 \n",
- " 2023 \n",
- " 12 \n",
- " sports_outdoors \n",
- " FL \n",
- " 5.0 \n",
- " 9 \n",
- " \n",
- " \n",
- " 3 \n",
- " ord_e60b1e267fd32d93c4d0745b \n",
- " 361.54 \n",
- " 2023 \n",
- " 4 \n",
- " home_garden \n",
- " PA \n",
- " 5.0 \n",
- " 11 \n",
- " \n",
- " \n",
- " 4 \n",
- " ord_e60b1e267fd32d93c4d0745b \n",
- " 25.59 \n",
- " 2023 \n",
- " 4 \n",
- " grocery_gourmet_food \n",
- " PA \n",
- " 5.0 \n",
- " 11 \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " order_id price purchase_year purchase_month \\\n",
- "0 ord_5fa044951857e02fd1347b47 111.91 2023 4 \n",
- "1 ord_5fa044951857e02fd1347b47 878.42 2023 4 \n",
- "2 ord_43b53981d951f855231d09ec 749.83 2023 12 \n",
- "3 ord_e60b1e267fd32d93c4d0745b 361.54 2023 4 \n",
- "4 ord_e60b1e267fd32d93c4d0745b 25.59 2023 4 \n",
- "\n",
- " product_category_name customer_state review_score delivery_days \n",
- "0 grocery_gourmet_food TN 5.0 6 \n",
- "1 electronics TN 5.0 6 \n",
- "2 sports_outdoors FL 5.0 9 \n",
- "3 home_garden PA 5.0 11 \n",
- "4 grocery_gourmet_food PA 5.0 11 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
- "# Create sales dataset for analysis period\n",
+ "# Create comprehensive sales dataset for analysis\n",
+ "print(\"Creating comprehensive sales dataset...\")\n",
"sales_data = loader.create_sales_dataset(\n",
- " year_filter=ANALYSIS_YEAR,\n",
+ " year_filter=None, # Load all years for comparison\n",
" month_filter=ANALYSIS_MONTH,\n",
- " status_filter='delivered'\n",
+ " status_filter='delivered' # Focus on completed orders\n",
")\n",
"\n",
- "print(f\"Analysis Dataset Summary:\")\n",
- "print(f\"Total Records: {len(sales_data):,}\")\n",
- "print(f\"Unique Orders: {sales_data['order_id'].nunique():,}\")\n",
- "print(f\"Date Range: {sales_data['order_purchase_timestamp'].min().date()} to {sales_data['order_purchase_timestamp'].max().date()}\")\n",
- "print(f\"Total Revenue: ${sales_data['price'].sum():,.2f}\")\n",
- "\n",
- "# Display sample of the dataset - only show available columns\n",
- "available_columns = ['order_id', 'price', 'purchase_year', 'purchase_month']\n",
- "optional_columns = ['product_category_name', 'customer_state', 'review_score', 'delivery_days']\n",
+ "print(f\"Sales dataset created with {len(sales_data):,} records\")\n",
+ "print(f\"Date range: {sales_data['order_purchase_timestamp'].min().date()} to {sales_data['order_purchase_timestamp'].max().date()}\")\n",
"\n",
- "# Add optional columns if they exist\n",
- "for col in optional_columns:\n",
- " if col in sales_data.columns:\n",
- " available_columns.append(col)\n",
+ "# Display sample data\n",
+ "print(\"\\nSample sales data:\")\n",
+ "display(sales_data.head())\n",
"\n",
- "print(f\"\\nAvailable columns: {available_columns}\")\n",
- "print(\"\\nSample Data:\")\n",
- "display(sales_data[available_columns].head())"
+ "print(f\"\\nData quality check:\")\n",
+ "print(f\"Unique orders: {sales_data['order_id'].nunique():,}\")\n",
+ "print(f\"Unique products: {sales_data['product_id'].nunique():,}\")\n",
+ "print(f\"Unique customers: {sales_data['customer_id'].nunique():,}\")\n",
+ "print(f\"Average order value: ${sales_data.groupby('order_id')['price'].sum().mean():.2f}\")"
]
},
{
- "cell_type": "code",
- "execution_count": 5,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Comparison Dataset (2022):\n",
- "Total Records: 7,641\n",
- "Unique Orders: 4,749\n",
- "Total Revenue: $3,445,076.96\n"
- ]
- }
- ],
"source": [
- "# Create comparison dataset if comparison year is specified\n",
- "comparison_data = None\n",
- "if COMPARISON_YEAR:\n",
- " comparison_data = loader.create_sales_dataset(\n",
- " year_filter=COMPARISON_YEAR,\n",
- " month_filter=ANALYSIS_MONTH,\n",
- " status_filter='delivered'\n",
- " )\n",
- " \n",
- " print(f\"Comparison Dataset ({COMPARISON_YEAR}):\")\n",
- " print(f\"Total Records: {len(comparison_data):,}\")\n",
- " print(f\"Unique Orders: {comparison_data['order_id'].nunique():,}\")\n",
- " print(f\"Total Revenue: ${comparison_data['price'].sum():,.2f}\")\n",
+ "## 4. Data Dictionary {#data-dictionary}\n",
"\n",
- "# Create combined dataset for year-over-year analysis\n",
- "if COMPARISON_YEAR:\n",
- " combined_data = loader.create_sales_dataset(\n",
- " month_filter=ANALYSIS_MONTH,\n",
- " status_filter='delivered'\n",
- " )\n",
- " # Filter to only include analysis and comparison years\n",
- " combined_data = combined_data[\n",
- " combined_data['purchase_year'].isin([ANALYSIS_YEAR, COMPARISON_YEAR])\n",
- " ]\n",
- "else:\n",
- " combined_data = sales_data"
+ "Understanding key columns and business terms used throughout the analysis."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "## 5. Business Metrics Analysis {#business-metrics}\n",
+ "### Key Business Metrics\n",
+ "\n",
+ "| Metric | Definition | Business Significance |\n",
+ "|--------|------------|----------------------|\n",
+ "| **Revenue** | Sum of delivered order item prices | Core business performance indicator |\n",
+ "| **Average Order Value (AOV)** | Total revenue divided by number of orders | Customer spending behavior metric |\n",
+ "| **Revenue Growth Rate** | Year-over-year percentage change in revenue | Business expansion indicator |\n",
+ "| **Customer Satisfaction** | Average review score (1-5 scale) | Service quality measurement |\n",
+ "| **Delivery Performance** | Average days from purchase to delivery | Operational efficiency indicator |\n",
+ "\n",
+ "### Data Schema\n",
+ "\n",
+ "| Column | Description | Data Type |\n",
+ "|--------|-------------|----------|\n",
+ "| `order_id` | Unique identifier for each order | String |\n",
+ "| `customer_id` | Unique identifier for each customer | String |\n",
+ "| `product_id` | Unique identifier for each product | String |\n",
+ "| `price` | Item price in USD | Float |\n",
+ "| `order_purchase_timestamp` | Date and time of order placement | Datetime |\n",
+ "| `order_status` | Current status of the order | String |\n",
+ "| `product_category_name` | Product category classification | String |\n",
+ "| `customer_state` | Customer's state location | String |\n",
+ "| `review_score` | Customer satisfaction rating (1-5) | Integer |\n",
+ "| `delivery_days` | Days from order to delivery | Integer |\n",
+ "\n",
+ "### Order Status Categories\n",
+ "- **delivered**: Successfully completed orders (primary focus)\n",
+ "- **shipped**: Orders in transit\n",
+ "- **processing**: Orders being prepared\n",
+ "- **canceled**: Canceled orders\n",
+ "- **pending**: Orders awaiting processing\n",
+ "- **returned**: Returned orders"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 5. Revenue Performance Analysis {#revenue-analysis}\n",
"\n",
- "Comprehensive analysis of key business performance indicators."
+ "Comprehensive analysis of revenue trends, growth patterns, and key financial metrics."
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============================================================\n",
- "BUSINESS METRICS SUMMARY - 2023\n",
- "============================================================\n",
- "\n",
- "REVENUE PERFORMANCE:\n",
- " Total Revenue: $3,360,294.74\n",
- " Total Orders: 4,635\n",
- " Average Order Value: $724.98\n",
- " Revenue Growth: -2.5%\n",
- " Order Growth: -2.4%\n",
- "\n",
- "CUSTOMER SATISFACTION:\n",
- " Average Review Score: 4.10/5.0\n",
- " High Satisfaction (4+): 51.6%\n",
- "\n",
- "DELIVERY PERFORMANCE:\n",
- " Average Delivery Time: 8.0 days\n",
- " Fast Delivery (≤3 days): 7.2%\n",
- "============================================================\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "# Initialize metrics calculator\n",
- "metrics_calc = BusinessMetricsCalculator(combined_data)\n",
+ "# Initialize business metrics calculator\n",
+ "metrics_calculator = BusinessMetricsCalculator(sales_data)\n",
"\n",
- "# Generate comprehensive report\n",
- "business_report = metrics_calc.generate_comprehensive_report(\n",
+ "# Calculate comprehensive revenue metrics\n",
+ "print(f\"Calculating revenue metrics for {ANALYSIS_YEAR}...\")\n",
+ "revenue_metrics = metrics_calculator.calculate_revenue_metrics(\n",
" current_year=ANALYSIS_YEAR,\n",
" previous_year=COMPARISON_YEAR\n",
")\n",
"\n",
- "# Print executive summary\n",
- "print_metrics_summary(business_report)"
+ "# Display revenue performance summary\n",
+ "print(\"\\nREVENUE PERFORMANCE SUMMARY\")\n",
+ "print(\"=\" * 40)\n",
+ "print(f\"Analysis Period: {ANALYSIS_YEAR}\")\n",
+ "print(f\"Total Revenue: ${revenue_metrics['total_revenue']:,.2f}\")\n",
+ "print(f\"Total Orders: {revenue_metrics['total_orders']:,}\")\n",
+ "print(f\"Average Order Value: ${revenue_metrics['average_order_value']:.2f}\")\n",
+ "print(f\"Total Items Sold: {revenue_metrics['total_items_sold']:,}\")\n",
+ "\n",
+ "if COMPARISON_YEAR:\n",
+ " print(f\"\\nCOMPARISON TO {COMPARISON_YEAR}:\")\n",
+ " print(f\"Revenue Growth: {revenue_metrics['revenue_growth_rate']:.2f}%\")\n",
+ " print(f\"Order Growth: {revenue_metrics['order_growth_rate']:.2f}%\")\n",
+ " print(f\"AOV Growth: {revenue_metrics['aov_growth_rate']:.2f}%\")\n",
+ "\n",
+ "print(\"\\n\" + \"=\"*40)"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
+ "outputs": [],
"source": [
- "### 5.1 Revenue Performance Analysis {#revenue-analysis}\n",
+ "# Monthly revenue trend analysis\n",
+ "monthly_trends = metrics_calculator.calculate_monthly_trends(ANALYSIS_YEAR)\n",
+ "\n",
+ "print(f\"Monthly Revenue Trends for {ANALYSIS_YEAR}:\")\n",
+ "display(monthly_trends)\n",
"\n",
- "Analyzing overall revenue trends, growth patterns, and key performance indicators."
+ "# Calculate average monthly growth\n",
+ "avg_monthly_growth = monthly_trends['revenue_growth'].mean()\n",
+ "print(f\"\\nAverage Monthly Growth Rate: {avg_monthly_growth:.2f}%\")"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "DETAILED REVENUE ANALYSIS - 2023\n",
- "==================================================\n",
- "Total Revenue: $3,360,294.74\n",
- "Total Orders: 4,635\n",
- "Total Items Sold: 7,448\n",
- "Average Order Value: $724.98\n",
- "\n",
- "YEAR-OVER-YEAR COMPARISON:\n",
- "Revenue Growth: -2.46%\n",
- "Order Growth: -2.40%\n",
- "AOV Growth: -0.06%\n",
- "\n",
- "⚠️ Negative revenue growth requires attention\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "# Revenue metrics deep dive\n",
- "revenue_metrics = business_report['revenue_metrics']\n",
- "\n",
- "print(f\"DETAILED REVENUE ANALYSIS - {ANALYSIS_YEAR}\")\n",
- "print(\"=\" * 50)\n",
- "print(f\"Total Revenue: ${revenue_metrics['total_revenue']:,.2f}\")\n",
- "print(f\"Total Orders: {revenue_metrics['total_orders']:,}\")\n",
- "print(f\"Total Items Sold: {revenue_metrics['total_items_sold']:,}\")\n",
- "print(f\"Average Order Value: ${revenue_metrics['average_order_value']:,.2f}\")\n",
- "\n",
- "if COMPARISON_YEAR and 'revenue_growth_rate' in revenue_metrics:\n",
- " print(f\"\\nYEAR-OVER-YEAR COMPARISON:\")\n",
- " print(f\"Revenue Growth: {revenue_metrics['revenue_growth_rate']:+.2f}%\")\n",
- " print(f\"Order Growth: {revenue_metrics['order_growth_rate']:+.2f}%\")\n",
- " print(f\"AOV Growth: {revenue_metrics['aov_growth_rate']:+.2f}%\")\n",
- " \n",
- " # Growth interpretation\n",
- " if revenue_metrics['revenue_growth_rate'] > 0:\n",
- " print(\"\\n✅ Positive revenue growth indicates business expansion\")\n",
- " else:\n",
- " print(\"\\n⚠️ Negative revenue growth requires attention\")"
+ "# Create revenue trend visualization\n",
+ "fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(15, 12))\n",
+ "\n",
+ "# Monthly revenue trend\n",
+ "ax1.plot(monthly_trends['month'], monthly_trends['revenue'], \n",
+ " marker='o', linewidth=3, markersize=8, color='#1f77b4')\n",
+ "ax1.set_title(f'Monthly Revenue Trend - {ANALYSIS_YEAR}', fontsize=16, fontweight='bold', pad=20)\n",
+ "ax1.set_xlabel('Month', fontsize=12)\n",
+ "ax1.set_ylabel('Revenue ($)', fontsize=12)\n",
+ "ax1.grid(True, alpha=0.3)\n",
+ "ax1.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'${x:,.0f}'))\n",
+ "\n",
+ "# Add data labels\n",
+ "for i, v in enumerate(monthly_trends['revenue']):\n",
+ " ax1.annotate(f'${v:,.0f}', (monthly_trends['month'].iloc[i], v), \n",
+ " textcoords=\"offset points\", xytext=(0,10), ha='center', fontsize=9)\n",
+ "\n",
+ "# Monthly growth rate\n",
+ "colors = ['green' if x > 0 else 'red' for x in monthly_trends['revenue_growth'].dropna()]\n",
+ "ax2.bar(monthly_trends['month'].iloc[1:], monthly_trends['revenue_growth'].dropna(), color=colors, alpha=0.7)\n",
+ "ax2.set_title(f'Month-over-Month Revenue Growth Rate - {ANALYSIS_YEAR}', fontsize=16, fontweight='bold', pad=20)\n",
+ "ax2.set_xlabel('Month', fontsize=12)\n",
+ "ax2.set_ylabel('Growth Rate (%)', fontsize=12)\n",
+ "ax2.grid(True, alpha=0.3)\n",
+ "ax2.axhline(y=0, color='black', linestyle='-', alpha=0.5)\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
]
},
{
- "cell_type": "code",
- "execution_count": 8,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAMVCAYAAAAMNtYlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QV41XX7x/F7nWz0gu7BhoAgIaAgCKKiIiIWIVIqduvf9nl87MZAJFQUsVswkJCUHDC6Y+TYxjr+1/09O2dnY8DG4tT7dbFrv9/J787OGdt97t/n9srPz88XAAAAAAAAAIBT8Hb0AgAAAAAAAAAAhSjaAgAAAAAAAIAToWgLAAAAAAAAAE6Eoi0AAAAAAAAAOBGKtgAAAAAAAADgRCjaAgAAAAAAAIAToWgLAAAAAAAAAE6Eoi0AAAAAAAAAOBGKtgAAAAAAAADgRCjaAgAAp+bl5XXSxx133HHKy7/88sslXmfHjh3ianTN9l9Dr169ynT9uXPnFrn+yJEjK22tp7tf+w8/Pz+pXbu2dO3aVR577DHZu3dvlawJZ0efc6f6Xp7pQ58H7sD+a2rcuHGV3/++ffvkk08+kfHjx0uXLl3MGkJCQiQoKMhsDxkyRH788ccz3s6SJUtk+PDh0qRJE3Pd6tWrS8eOHeXJJ5+UY8eOVcp9T58+XUaPHi2dOnWS+vXrm+sFBARInTp15Pzzzzc/A3bv3l2uxwcAAHfllZ+fn+/oRQAAAJyKFkqKq1atmuzZs0fCwsKKnJ6bmyvNmjWTnTt3nnSd7du3O6TgUpKpU6fKzTffbNvXoslTTz1VYtFWCyxWF154YZkKYXrZ3r172/ZHjBhh7ruyFb/f0wkNDZVff/1VunfvXunrwtkVbf/++++zuu5ff/1V5jcanP1nUKNGjar8DaAJEybIO++8c8bLDR48WGbMmCH+/v4nnfd///d/8t///ldO9aefFlF/+uknOe+88yr0vps3by5bt2497XWDg4Nl1qxZcumll57xfgAA8CS+jl4AAABAWaWkpMiUKVPkrrvuKnL6d999V2LBFo6lRZkBAwaYgpF21i5dutRWPEpNTZVRo0bJxo0bHb1MlEDfKNDOaHv6Glu+fLltX8/Xy5VUCETF0se6Q4cO5g0q/R4kJyfbzvvqq6/MG0DPP/98keto0fU///lPkdfjBRdcIIcPH7Z9Hw8dOiT9+/eX9evXS2RkZIXdt7Xo3bRpU9Npq2/SbNu2TTZs2GA7Py0tzbyhpD8bSio4AwDgqSjaAgAAl/T222/LnXfeWaQL7o033nDomlAyLd59+eWXtv0ffvhBrrjiCtv+pk2bZMuWLaYrD87l6aefPmOneGxsbJHvLype37595cEHH5Q+ffqIt7e3rdB62WWXybJly2yX++CDD0yB1noZfYPrkUcesZ2v0QZacI2JiTH7zz33nDz++ONmWyMSNK5g8uTJFXLf6sUXX5Ru3bpJVFRUkdvU54tGK1hpAXnt2rUmrgEAAFiQaQsAAFxKvXr1zGct8v3888+201etWiXz5s0z25qbWKNGjTPeVlZWlilAafEhOjraZC1q9EKrVq3klltuMR2hJdFs2OLZnStXrpRrr71W6tata25HC5BaDMnMzLRdT+9LL29f8LIWxuxvr6SoBKucnBxTnNaON+2YCw8Pl0suuUQWL14spXXixAmpWbOm7f4aNmxouueKe/XVV4usqzSHSZfGwIEDT4q20KJNSfbv3286+DQDV9dszcTVQpIWl7Kzs4tc/vbbby+yZvvniNXx48fNc8R6GWsBy978+fNN91+LFi1Md2BgYKCJqtDT7AtVFfG8sNL4DvvrF6fPC/vzS4q60A5mzRjV+9Tb069Tnyf6nL711lslISFBqkJJecoHDx40edT6OGpHZfHohKSkJHnppZds3b36vdbveY8ePeS1114zz9vS5D7rY6vZ1u3atTNff2leI/qY6XX19a/PzZ49ezpNIfrRRx+VOXPmyMUXX1ykIKpvhmjkgb2jR4+agqrVF198YQq3Vvq8sH++33fffeYxsvr888+LPM7luW919dVXn1SwVddcc43J1LVnvw4AAGD5xQ4AAMBp6a8r9h/PPfecbfviiy+2XW7EiBG208eMGZPfqFGjItfbvn17kdvdsWNHfvv27U+6/eIf99xzT35eXl6R69rfl37ceOON+T4+PiVe/6qrrrJdb8qUKWe8P/148sknzeV1zfand+jQIf+CCy4o8ToBAQH5ixcvLrLOv/76q8hldN1Wjz76aJHzvv7665Mee70/6/khISH5x48fL9X3rPj96veiuLCwsCKX2blz50mX0TUVv1zxj86dO+cfOHDAdp1Vq1YVOX/o0KEn3e6kSZOKXObll1+2nZednZ1/8803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375dGjduLL179zb7ffr0MV3CWrRt06ZNOR4lAIA7dNneeVFhl+3JnbYUbQHA3dFpCwAAXEZiYqLptPXz8zOdru3bt5dWrVoVucz//vc/CQ0NNbEF2mmrhVm1ceNGE5Wg17HS7TVr1pRrTZdffrkEBgaaQqtGLgwaNMh23pIlS+T333+Xhx9++KTr9e/f38QizJkzR/Ly8uS3336TpKQk6dGjR7nWAwBwTX9tPChrCzpo20SFycVtIoqc37ROqAT6Wf6EJx4BANwfnbYAAMBlPProo6ZrVbtstUM1OjraZMLa0wKpfmzYsEE+/fRTiYyMNKenpqZKSEiIKfZaabdtSkpKudb0448/Sm5urolp+Pvvv22dv9nZ2TJmzBiZOHGi+Pv7n3S94OBguemmm0wUg15WO3c/+ugj23oBAB7WZfu7XZetXZatlY+3l7SOCpOVu5Jk55E0Sc7IlrBAPwesFgBQFei0BQAALuOBBx6QVatWSZcuXUwmbMeOHU2ubEk0KqFdu3YmSkFp961GJOTkFE7cPn78uOl2LS8tuF544YWmE/ill14yp73wwgvSuXNnueCCC0q8jhZoX375ZVm8eLHpANa8Xi02//TTT+VeDwDAtczddEhW77F02cZEVpN+xbpsS4pIWE+3LQC4NYq2AADApTRq1MgUbZ944gl577335NVXXz3lZbWD1ZppqzEKGqugkQlWWgC2z6UtL/v701iEWbNmmdxd/dA8XR06poVcpUXnAQMGmMKyZu/q5379+skvv/xSYesBALhel+1dfVqIt3fRLlur2GiGkQGAp6BoCwAAXIYWabVb1vpHrhZgo6KibPEHU6ZMMbmwet7atWvlueeeM9mx1jiCoUOHyuOPP246bLW4ql26o0ePLlJ0zcjIMHEH+qHbeppVr1695KmnnrIVfDWPNj093XTvaoesxjFY708LtuvWrTOX0w+NQbjxxhvl+++/N+d369bN5NjqZZR+1v0OHTpU2eMJAHC8eZsPy6rdSWa7VUQ16R976picuHr2w8jotAUAd0amLQAAcBnLli0zsQNaoNWiamxsrEyaNMmcp9l/M2bMkPvvv18yMzPNILLBgwfL008/bbv+22+/LePGjZP69eub7NkJEybI8OHDbedrBu20adOKXH7EiBEydepUs79r1y4zCE1poVYzdnXAmd5348aNTdevZu6qOnXqFFm7Fo01osGaWasFXL29gQMHysGDB6VWrVoyatQo8wEA8KQu201FsmxP1WWrWkSEip+Pl2Tn5su6fXTaAoA788rX/yXgMpKTkyU8PNx0CIWFFR4aA1Q1nXSuRQYtiuhhvQDKjtfR2dMiqhZJtfO1quzcuVOuu+46WbRoUZXdJ86M1xFQfryOHGf+5kMybPJSs90yIlR+veuC0xZt1aVvzJf1+5NFL7bu6UskyN+nilaL0+F1BJSfp7yOkktZ23PfRwAAAKCCs3Qp2AIAKivL9o6LTt9laxVXz/IHfl6+SMIBIhIAwF0RjwAAAFzOyJEjHb0EAADK5Z+tR2T5zmNmu3ndULm0rSWj/UxiozXXdo/Zjt+XLB0a1qjUdQIAHINOWwAAAAAAHNpl21x8StFla99pq9btJdcWANwVRVsAAAAAAKrQom1HZOmOo2a7WZ0Qufyc6FJft3VUmHgV1HfX7SMeAQDcFUVbAAAAAACqUPEs29J22apgf19pWjvEbG88kCJZOXmVskYAgGNRtAUAAAAAoIos3nZElmy3dNlq8XVgu9J32VrF1dNcW5Gs3DzZfDClwtcIAHA8BpEBAAAUk5GdKz+v3S+z1yVKUlqWVA/2l36xEWZITKCfj6OXBwBwky7bCWXIsrUXGx0m363aZ4tIsAwnAwC4E4q2AAAAduasT5T7Zq2S5PQc0b+j8/LFfP513QF56od18uqQ9tK3TYSjlwkAcEFLtx81ebaqca1gueIsumxVnF2R1gwj69SgwtYIAHAOxCMAAADYFWzHfrxcUtJzzL4WbO0/6+ljPl5uLgcAQFm98ccm2/aEi1qIr8/Z/Ulu31nLMDIAcE8UbQEAAAoiEbTDVvLNvxKZ0/NF7p+1ylweAIDSWr7jqCzcYumybVQrWK5qf3Zdtio82E/q1wgy2+v3J0uu9d1FAIDboGgLAAAgYjJsNRLhTH/26vnH03Pkl/j9VbQyAIA7eOOPwizb23s3P+su2+IRCWlZubL98Ilyrw8A4Fwo2gIAAIiYoWOlnQWjl/stnogEAEDp/LvzmMzffNhsN6gZJIM61Cv3beowMqt1+46X+/YAAM6Foi0AAICIJKVl2bJrz0Qvl5SeVdlLAgC4YZfthN7Nxa+cXbYqrh65tgDgzijaAgAAiEj1YP8yddpWD/Kv7CUBANzAyl3HZN6mQ2Zbc2ivPrd+hdxubD06bQHAnVG0BQAAEJF+sRFl6rTtHxdR2UsCALhhlm1FdNmqutUCpU61ALMdvzdZ8vMZRgYA7oSiLQAAgIhc2jZKwoJ8pTTNtuFBvjIgLqoKVgUAcGWrdifJ3I2WLtt61YNkcAV12VrFFeTaHk/Plj3H0iv0tgEAjkXRFgAAQEQC/Xzk1SHtRau2ZyrcPnVFnLk8AACn86Zdl+1tvZuJv2/F/gkeG02uLQC4K4q2AAAABfq2iZAPhnU6qSBbPOv2t/gDHIYKADitNXuS5M+Eg2Y7OjxQhnRsUOH3EUeuLQC4LYq2AAAAdi5uEyGDz61n228TFSb92kTK01e0kepBvua0X9cdkK9W7HXgKgEArtRle2vv5hXeZavotAUA92X5ywMAAAA2mw+m2rZnjOki1YP9zXZEWKCM/2SF2X7q+3XSpUlNaVAz2GHrBAA4p/i9x+X3DZYu26jwQLm2U8Vm2VrVrxEk4UF+JtNW7xMA4D7otAUAALCjsQcJB1LMdmRYoK1gqy6Ji7INkUnNzJH7vlgtuXnEJAAAinrDvsu2VzMJ8K2cHHQvLy+JLRhGdjAlUw6mZFTK/QAAqh5FWwAAADsHkjNMx5KKiap20vlPXdHGTABXS3cclQ/nb6vyNQIAnJdmy85Zn2i2I8IC5NpOFZ9lay+uHhEJAOCOKNoCAADYSdhv6bJVMZGFA16sqgX6yavXthOvguFkL8/eKOv5IxkAUFKW7YXNThpuWdGsnbZqHREJAOA2KNoCAADY2XCgsADbuoROW9WlaS0Ze0FTs52dmy/3zFwlGdm5VbZGAIBz2rA/WX5bZ+myrVstQK7r3LDS79N+GFn8Xt5EBAB34bRF25EjRzp6CQAAwANtLMizPVWnrdW9F7eU1lGW8zcmpsgrszdWyfoAAK7RZTu+CrpsVZPaIRJUcD/r9tNpCwDuwmmLtiV56qmnJCYmRkJCQqRGjRrSt29fWbJkSZHLHD16VG688UYJCwuT6tWryy233CKpqYUToNWaNWukZ8+eEhgYKA0aNJAXX3zxjPe9a9cuueyyyyQ4OFjq1q0rDzzwgOTk5BS5zNy5c+Xcc8+VgIAAad68uUydOvWk23nnnXekcePG5r67dOkiS5cuPevHAwAAVF48gp+PlzStE3LKy+lQmdeHthd/H8uvUx8u2C7/bD1cZesEADiXhAPJ8kv8AbNdp1qA3NCl8rtslY+3l7QpiEjYfTRdjqdZctkBAK7NqYq2hw8flhEjRkjDhg3ls88+M4XPIUOGSFZWljm/ZcuW8vbbb8vatWtlwYIFpvjZr18/OXTokO02tGC7bt06mTNnjvz4448yb948GTt2rO385ORkc51GjRrJv//+Ky+99JIpBn/wwQenXFdubq4p2Oo6/vnnH5k2bZopyD7xxBO2y2zfvt1cpnfv3rJq1Sq5++67ZfTo0fLbb7/ZLjNz5ky599575cknn5QVK1ZIu3btpH///nLw4MFKeDQBAEBZZebkytZDljd7m9UJFb+CguyptIqsJg9e0sps5+eL3P/FaknO4I9lAPBEb/2xxbY97oKmVdJlaxVnn2tLty0AuAWv/Hz9E8M5DBs2zHSeagH19ddflzvvvFN+/fVXefrpp01nanFagA0PD5fff/9d+vTpIxs2bJA2bdrIsmXLpFOnTuYyev1LL71U9uzZI9HR0fLuu+/KY489JgcOHBB/f39zmYcffli+/fZbSUhIKHFdv/zyi1x++eWyb98+iYiIMKe999578tBDD5mCsd6Obv/0008SHx9vu951110nSUlJZg1KO2vPO+88U3hWeXl5ptP3jjvuMGsoSWZmpvmw/5r1OseOHTPdxICj6PNXn/916tQRb2+nev8HcBm8jpwzi/Cytxaa7avaR5uBY2eSl5cvwz5aKou2HS3T9VAxeB0B5cfrqPw2JabIgDcXmDfwaof6y9/395Ig/6or2n6xfLc8/LXlb9FHB8TI6J5Nquy+YcHrCCg/T3kdJScnmwSB48ePn7a25ytOZOXKlTJ8+HC58MILZcqUKaZrVT9Kol2vWtzVoq12rKpFixaZSARrwVZphIJ+ozVGYdCgQeYyF1xwga1gq7Tb9YUXXjCFUH3QitPrtG3b1lawtV7n1ltvNV29HTp0MJfR+7Knl9GOW+t6tbP3kUcesZ2v69Lr6HVP5fnnnzdF6+L0SZyRkXHK6wFV8cNUf8Do+z7u/MMUqEy8jpzP0k1HbNv1Q71KfTTMQ73qyY17kuREVp58u2qfdIoOkL4ta1biSmHF6wgoP15H5ffyL9tMwVZd36GupCQdkcKE9MoXHVg4DHP5toNyRatTx/ugcvA6AsrPU15HKSml+x/CqYq23bt3N8VaaxG2JBp5oB2saWlpEhUVZWIQateubc7T7lnNm7Xn6+srNWvWNOdZL9OkSdF3Ha3FWD2vpKKtnm5fsC1+ndNdRqvn6enppiCsMQslXeZUHb5Ki7waqVC801bfdaDTFo7+Yerl5eX274ABlYnXkfPZ/6+lW1Z1ah4ldevWKdX19NePZ6/0kntnrTH7L/21Ry5q21giw08+UggVi9cRUH68jspnc2KK/LH5mNmuFeIv4/q0lmD/qv1Tu3rNPPHzSZDs3HzZdjTzpL+LUfl4HQHl5ymvo8AS0gScvmj76quvyn//+1+55557ZOvWrSYbdvz48ebDypoZq/m3kyZNkmuvvdZ00brrf0o61Ew/itMnrzs/geEa9Icpz0WgfHgdOZeExMLhpa2jw8v0fRl0bn35Y+Mh+WnNfjmeni0Pfb1Wpo/qbL7HqFy8joDy43V09t6ZW9hlO/aCphIaWHhUZ1UJ9Pc2Oevxe5Nl6+ETkpGTV+WFY/A6AiqCJ7yOvEv5tTnVIxASEiL/+c9/ZPPmzXLFFVeY+AHtMrUfEqaX0QFlXbt2lcmTJ5tOWv2sIiMjTzqMMScnR44ePWrOs14mMTGxyGWs+9bLFFea65zqMtoNGxQUZLqBfXx8SrzMqe4XAABUrYT9yeZzjWA/qVvt5DdNz/QL5n+uirNdb/7mwzJ90c5KWScAwDlsOZgqP6zZZ7ZrhvjLsG6NHLaWuOhw81kLyBv2V2U4AwCgMjhV0daeZtOOGzdOBgwYIPPnzz9t67R1UFe3bt3M4C/NjrX6888/zWV0CJj1MvPmzZPs7MLJzhqx0KpVqxKjEazXWbt2bZGCsF5HC7I6+Mx6mT/++KPI9fQyerrSDN2OHTsWuYyuS/etlwEAAI5zJDVTDqZYfqeIiQw7qw7Z6sH+8tKQwpin//68wfxBDwBwT2//udnWZTumZ1OHdrfGRhfG563bd9xh6wAAuGHRVmMR/v77bxM6rPmvf/31l9nXYueJEyfk0UcflcWLF8vOnTtNYXbUqFGyd+9eGTJkiLl+69at5ZJLLpExY8bI0qVLZeHChTJhwgSTgRsdHW0uc8MNN5gC6i233GKGiM2cOVPeeOONIrmxxfXr188UZ4cNGyarV6+W3377Tf7v//5Pbr/9dlt0gUY4bNu2TR588EGTUTtx4kT54osvzNdkpfehkQ7Tpk2TDRs2mE5i/bpuvvnmSn9sAQDA6W08UNiVFBNV7axv58KWdWREQadVZk6e3DNzlWTn5lXIGgEAzmPboVT5fvU+2xEawx3YZati61k6bVX8Xoq2AODqnKpo27BhQ1PY1EFbM2bMkOHDh5vC7B133GGiBbQYOnjwYGnZsqUMHDhQjhw5YrpwY2Njbbfx6aefSkxMjPTp00cuvfRS6dGjR5F4hfDwcJk9e7Zs377dFIPvu+8+eeKJJ2Ts2LG2y8ydO9d01+zYscPs633rADT9rF2xN910k1nbM888Y7uODjf76aefTHetDlJ75ZVX5MMPP5T+/fvbLjN06FB5+eWXzf21b9/eZPP++uuvJw0nAwAAVS/BrmjbOrJ8wz4fHtBamtWxTO5eu/e4vPXH5nKvDwDgXN7+c4vkFXTZju7ZVEICHJshq/93eRccJLJunyXuBwDgurzy860HcziXkSNHytSpUx1y31OmTDED0davXy9+fn7iTJKTk03hWbuRNZ4BcBSN99DIEB0C6M4B4UBl4nXkXB78crV8sXyP2f7u9u7SrkH1ct3emj1JcvXEfyQnL9/8Ef3lrefLuQ1LjmLC2eN1BJQfr6Oy2374hPR5Za4p2lYP9pMFD10koQ4u2qqLX/1bNh9MFT8fL1n39CXi78v3s6rwOgLKz1NeR8mlrO257yNQDj///LMp2jpbwRYAAFR+p61G2baMOPt4BKtz6leXu/q0MNv6R73GJJzIzCn37QIAnKzLtkcTpyjYqriCiITs3HzZlMgwMgBwZU5btHVUl62aNWuWLScXAAC4v9y8fFumbZNaIRLk71Mht3trr2bSoaGlY3fnkTR57qcNFXK7AADH2XnkhHy7aq/ZDg/ykxHnNxZnwTAyAHAfTlu0BQAAqCo7jpwwQ8PKO4SsOF8fb3nt2vYSXFAE/mzpLvljQ2KF3T4AwDFdtvpmn7qlRxOpFug8R2jGRtsPIyPXFgBcGUVbAADg8RL2Fx5CGlPOIWTFNa4dIo9f3sa2/9BXa+RIamaF3gcAoGrsOpImX6+0dNmGBfrKyO7O02Wr2tBpCwBug6ItAADweBsPFHYjtYqsuE5bq+vOayB9Yuqa7cOpWfLI12vFSWfBAgBO452/CrtsR/VoImFO1GVrjWtoWDPYbG/Yn2JbKwDA9VC0BQAAHm9DQZ6tal3BnbbKy8tL/jf4HKkZ4m/2Z69PlFnL91T4/QAAKs/uo2ny1QrLz+5qgb5yc/cm4ozi6ln+H0vPzpXth1MdvRwAwFmiaAsAADxeQkGnbYi/j9SvEVQp91GnWoA8f3Vb2/7TP6wzh9kCAFzDxLlbJMfaZdu9ielqdUbk2gKAe6BoCwAAPFpKRrbsPppui0bw9vaqtPvqHxsp13aqb7ZPZOXKvV+s4tBVAHCRLlvrERLVAnxN0dZZxdrl2sbvJdcWAFwVRVsAAODRNiXaDSGLqvhohOKeGBgrDWpaunmX7zwm78/bWun3CQAon4lzt9q6bG/u3ljCg52zy7Z4p+26fXTaAoCromgLAAA8WoJdnm1MJQwhKy40wFdeu7a9WBt6X5uziU4oAHBie5PS5ct/d9t+husAMmemcTwRYQFmO37fcQZfAoCLomgLAAA8WsJ++6Jt5Xfaqk6Na8r4C5uZ7ezcfLln5irJyM6tkvsGAJTNxL+2mJ/VauT5jaV6sGWopDOLK+i2TcnIsUUAAQBcC0VbAADg0axDyKyZtlXl7r4tbbmDmw+myou/bqyy+wYAlM6+pHT5Yvlu27DKW5y8y7akXNt1+ziaAwBcEUVbAADgsfSQUWunbb3qQVU6Cdzf11teH9refFYfLdwuC7ccrrL7BwCc2btzt9q6bEec31hqhDh/l62KrVeYa6sRCQAA10PRFgAAeHROYUpmTpXl2RbXIqKaPHxJjG3//lmr5XhadpWvAwBwsv3H02XmMkuXbbC/j4zu2VRcRZxd0ZZhZADgmijaAgAAj7XRbghZVUYj2NN8xO7Na5nt/ccz5PHv4h2yDgBAUe/N3SpZuXlme3i3xlLTRbpsVXR4oFQPthw9osMuGUYGAK6Hoi0AAPBYCXZF25ioqhlCVpy3t5e8PKSdhAX6mv3vV++T71btdchaAAAWickZ8llBl22Qn4+M6ekaWbZWXl5etmFkh1Oz5GBKpqOXBAAoI4q2AADAY23YX3jIaGsHddqqqPAgefaqONv+49/Gm8Nygco0depUmTt3rqOXAThtlm1WjrXLtpHUCg0QV8MwMgBwbRRtAQCAeHqnrb+PtzSpHeLQtVzZvp5c0S7abCdn5Jh827w8DmdF1crMzJQxY8ZIkyZNpFq1ahITEyMfffRRkcv8+++/0qNHDwkLC5OmTZvK9OnTi5yvh2E///zz0rhxYwkJCZGWLVvKkiVLSry/xYsXS//+/aV27dpSs2ZNs71+/foil1m4cKG0a9dOgoODpX379rJo0aIi57/++utmHaGhoXLRRRfJli1bKuzxgGc6qF22S3cVdtle4DpZtqccRraXXFsAcDUUbQEAgEfKyM6V7YdPmO0WEaHi6+P4X4uevTJOIsMCzfbCLUdk6j87HL0kuKGlS5dK9+7d5Y477pArr7xSOnToIAsWLDDn5eTkSFRUlPz++++SnJxsunHvu+8+mT17tjk/KSlJLr30Urnpppvk2LFj8tlnn5nbsV5fPfbYY/LTTz+Z20hNTZU5c+ZIw4YNS1yL3sbNN99sCq0HDhyQzp07yyWXXCK5ubnm/KNHj8rll18uEyZMMJe9/fbbzb6uQ+n9v/LKK/Lzzz+b888//3wZOHCg7frA2Xjv722SWdBle1PXhlLbBbtsVRydtgDg0hz/1wkAAIADbDmYKrkFnayOGkJWXHiwn8m3tfrfrwmyObEwdxeoCMOHD5fevXvLq6++Kl999ZVMmTJF6tSpY87TzthnnnlGmjVrZjIxu3btai5rLcr+888/EhAQIOPHjxcfHx/p0qWLXH311fLhhx/aiqx6u9qd27x5c3MbjRo1MoXgkgwYMECuu+46qV69uvj7+8sDDzwgu3fvlp07d5rzv/nmG6lXr57p/tX71c+RkZHmdOv5WvTVjmA/Pz958sknZevWrTJ//vwqejThbg6mZMinSyzPv0A/bxl7QTNxVY1rhUiIv4/ZptMWAFwPRVsAACCePoSsdaRjhpCVpEeL2nJz98ZmW/MU7565yparCFSExMRE02mrRU5fX18TOdCqVasSL5uRkWE6c8855xyzn5eXd9IUej1tzZo1trgDLa5qB2x0dLSJSHjooYckKyurVGv7+++/TQHX2pmrt6vrs6f71vsraT26bz0fKKsP7Lpsb+zSSOpUc80uW+ugyzYF3bZ7k9Ll2InSvQ4BAM6Boi0AAPBICXZDyGKinKPT1uqhS2KkRd1Qs71uX7K88ccmRy8JbuTRRx+VG264Qd5880354YcfZNOmkp9fWvwcPXq0tGjRwnTTqm7dusmJEyfk7bffluzsbJM3q92uGqVg7bTV7c2bN5vbnTdvnvzyyy/ywgsvnHFdu3btknHjxpm4Ay0mK41X0CKuPd1PSbG86XLZZZeZTuF169aZPN7HH3/cRCNY1wOUxaGUTPmkoMs2wNdbxl3omlm29mKjC3Nt19v9vwcAcH4UbQEAgHh6p22ME3XaqkA/H3ltaHvx8/GyTTFfvuOoo5cFN6ERBKtWrTLRBitXrpSOHTvKW2+9dVLB9rbbbpONGzfKt99+K97elj8batWqZQq9M2bMMDEFDz/8sIkn0NOVDgNTTz/9tNnWjtm77rrLXOd09uzZI3369DHZtaNGjbKdrrdx/HjRLE7d1yFpauTIkXLrrbeabN769eubgm2bNm1s6wHKYtL8bZKRbemyvaFLQ6lbzZIx7spi7XJt4/eSawsAroSiLQAA8EgJBywdR7VD/Z3y8Ne4euFyd9+WZlujd+/9YrWkZuY4ellwE5ozq0XbJ554Qt577z2TQ2tfsNWBX0uWLDEDyMLDCzv1lEYraLbtkSNHTHasDhC78MILzXnt2hVmMpeWFmw1N1eHm2kXsD2NZdACsz3db9u2rdnWzFwdfKaDzA4dOmSKyNu2bZMLLrigzOuAZzucmikfL7J02fr7esv4C103y7b4/yVWeuQGAMB1ULQFAAAeeQjs4dQspxpCVhItGnRsVMNs7zqaJs/+sN7RS4Ib0CJtWlqarUC7evXqIoPCtNtVYw/mzJkjNWpYnn/2tDtXowjS09Nl0qRJMnfuXLn77rvNeU2aNJG+ffuaYWZ6H/v27TNdvNoJa6U5t1OnTjXber4WbIcOHWqGiBU3aNAgU9SdPHmyycXVz/v37zenq6SkJNMNrF+H3pZ26V511VUSGxtbCY8c3L3LNj0712zf0LmhRIS5fpetal431BShVfw+Om0BwJVQtAUAAB5noxNHI9jz8faS165tb5v+PXP5bpm97oCjlwUXt2zZMlPU1JiEwYMHy6JFi0zxVe3cuVMmTpxoCqHajavxBPoxfvx42/U1CzciIkLq1Kkjs2bNkj///NMMHbP69NNPTYSBXua8886T/v37y4MPPmjO02Lv4cOHpWvXrmZf71e7ZF9//XXbfemHdvCqmjVrmmiFN954w3T8WnN4rcVkLdpqAVevc+6550rz5s1Nxi1QFkdPZBV22fq4T5et8vPxlpiCNye3Hz4hJzhiAwBchiXhHwAAwAOjEZT1j1ln1bBWsDw5MFYe/GqN2X/k67XSoWENp4x0gGvQblWl3a7a9dqrVy/beVqo1a7V09Gi6OkKo3Xr1jU5uCVZvHixDBw4UGJiYsy+dteW1GFrr0ePHrJmjeX5X5yuf/16OtBR/i7btCxLl+11nRtIZLh7dNnaDyNbs+e46Et7w/5k6dS4pqOXBAAoBTptAQCAx9mwv7DTtnWU83baWg3pVF8ubhNhto+cyJKHv1pzxsIa4Iw0+/azzz5z9DIAm2MnsmT6PztsXba39nKfLlsrhpEBgGuiaAsAADy209bby5L35+x02NLzV7c1Q9PUHwkH5fNlux29LLi4kSNHFumyBTzRhwu2yYmCLttrz6svUeFB4m7sh5HFM4wMAFwGRVsAAOBRcnLzZPPBVLPdpHaIBPpZ8mKdXe3QAPnf1efY9p/9cb3sOHzCoWsCAFeWlJYl0/6xZNn6+XjJrb2aizvSGCDNSFfrKNoCgMugaAsAADzKjiMnJCsnz2zHuEA0gr2+bSLk+s4NzLbmL977xSpThAYAlN3kBdsltWAw15BODaRedffrslX65mTzOpajSjYnpkhmjqWzGADg3CjaAgAAz82zdfIhZCX5v8vaSKNawWZ7xa4kee/vrY5eEgC4nONp2TJ14Q5bl+1tbphlay+2nuVNypy8fNl0wHK0CQDAuVG0BQAAHplnq2IiXavTVoUE+Mqr17Y3ebzq9d83y5o9SY5eFgC4lMkLt0tKQZftNR3rS/0aljfD3FVstH2uLcPIAMAVULQFAAAeJcGu0zYmyvU6bVXHRjXk9t7NbV1T98xcJekFg3QAZ5GRnStfr9gj4z/+V657f5H5rPt6OuBIx9OzZcrC7Wbb11u7bN0zy9ZeXHThm5TxeynaAoAr8HX0AgAAAKpSwgFL0bZagK9L5xfe2aeFzN14SNbuPS5bD52QF35NkKeuiHX0sgBjzvpEuW/WKklOzzFd4Xn5Yj7/uu6APPXDOnl1SHuT0Qw4ghZsUzIsXbaDz60vDWq6d5etamNXtGUYGQC4BjptAQCAx0jOyJa9Selmu1VkNfHyKsgYcEF+Pt7y2tD2EuBr+XVu6j87ZN6mQ45eFmAKtmM/Xi4p6ZaimBZs7T/r6WM+Xm4uBzji/4GPFli6bH28vWxHLbi7aoF+0rggD33D/mSGWAKAC6BoCwAAPMbGgi5bV45GsNe8bqg8emlr2/4DX66WpLQsh64Jnk2jD7TDVvLNvxKZ0/NF7p+1iqgEVDkdPpZc0GV7dYd60rCgkOkJYutZcm0zc/Jk2+ETjl4OAOAMKNoCAACPkbDftYeQlWRY10bSs0Vts52YnCmPfRMv+fmnKpcBlevntftNJMKZnoF6/vH0HPklfn8VrQwQScnIlsl2XbYTLvKMLlurWHJtAcClULQFAAAeY4Ndp21rN+i0Vd7eXvLSNe0kPMjP7P+0dr98t2qfo5cFDzV7XaLJri0Nvdxv8UQkoOpM+2eHGUKmrmpfTxrVChFPEhdt6bRV8XvJtQUAZ0fRFgAAeGQ8QssI9yjaqsjwQPnPoDjb/uPfxduye4GqpPEc1uzaM9HLJaUT54GqkZqZIx8WdNnqGwae1mVbvNN23T46bQHA2VG0BQAAHiEvL99WtK1fI8gMZXEnl58TLYM61DPbOhX9/i9Wm68ZqErVg/3L1GlbPci/spcE2Lpsk9IKu2yb1PasLltVKzRAosIDzfb6fcn8HwEATo6iLQAA8AjaeaqdVu6UZ1vcU1fESnTBH+SLth2RjxZausqAqtKzZe0yddr2j4uo7CUBckK7bOdv8+guW6vYgoiElMwc2X0szdHLAQCcBkVbAADgETbYDSFzlzzb4jTX9uVr29n2X/x1Y5FICKAy7Th8wlYYK42wQF8ZEBdVqWsC1PRFO+VYQZftFe2ipWmdUPFURYeRkWsLAM6Moi0AAPAICXbFS3fttFXnN6sto3s0MdtZuXly98xVkpmT6+hlwc39s/WwXDVxoWw/XPrOvUa1gsW3tFkKQDm6bCcVvJngZbpsW4gni6tnN4yMXFsAcGoUbQEAgEew7zhtFemenbZW9/dvJa0KBq1ph/FrczY7eklwY58u2SnDJy+15YW2qBsq/x3UVsKDfM2+tS5bvD67dm+yPPZNvOTnk6uJyvPJ4p1y9IRl4N3Ac6KleV3P7bJVcfXsh5HRaQsAzszymxQAAICb23DA8sdpgK+3NK4VLO4s0M9HXhvaXq58Z4Fk5+bL+/O2ykUxdaVzk5qOXhrcSE5unjz30waZ+s8O22m9WtWRt67vYAb9XX1uPfklfr/8Fp8oSelZZuiYZtjWDA6QMdOXm07wmct3S2R4oNxzcUuHfi1wT2lZOfLBvMIu2zv7eG6WrVVkWKDUDPE3hex1e4+bN0289MEBADgdirYAAMDtpWflmrxN1TKimvj6uP/BRm2iw+S+fq3kf78kiDYy3jNzlfx6d09TTAPK63h6tkyYsULmbz5sO01jOR65tLX4FLTU6psHgzrUNx/FvXJtO7njs5Vm+40/NpvC7fWdG1bhVwBP8OniXXKkoMv2srZR0ryuex9lURpaoNVcW33t6mNzIDlDosKDHL0sAEAJ3P8vFgAA4PE2H0yxTbSPcfNoBHtjejaVzo0t3bV7k9Ll6R/WO3pJcAPbD5+QQRMX2gq2fj5e8sLgtvJ/l7exFWzPZGC7aPm/y1rb9h/7Zq38sSGx0tYMz3yzTo8yKOyy9ewsW3ux0YW5tusYRgYATouiLQAAcHsJ++2GkEW57xCy4rSAph2NoQGWg6u+/HeP/Bq/39HLggv7Z8thueqdhbLtkKVzvUawn3xySxcZel7Zu2RH92xqG5qnb6rcPmOFrNx1rMLXDM/NWj6caumyvTQuyhxlgZNzbRlGBgDOi6ItAABwewl2Q8g8qdNWNagZLE9dEWvbf+TrtXIwJcOha4LrDnQa/tFSE41gHTj23e09pEvTWmd9m49e2louPyfKbGdk58kt05abTl6gPDKytcvWkmWr7iDLtog4+05bhpEBgNOiaAsAANxeQsEQMk8s2qrB59aTS2IjzfaxtGx58Ms1ZvgMUNqBY09+Fy//92285BTkjPRuVUe+vu18aVjOoX7eBd3gXZtaYjx0ONKIj5bKoZTMClk7PNOMJbtsz6EBcZESE+k5R1iURsOawbYjMHQYGQDAOVG0BQAAbk2Lkxv2W4q2daoFSK3QAPHEwTP/vbqt1C742uduPCSfLtnl6GXBBRxPy5abpy6TaYt22k4b07OJfDjivAobahfg6yPvD+skrQoOX991NE1GTV0mJzJzKuT24Xldtu/9bcmyVWTZlvxmiQ6rVPuOZ5g3SwAAzoeiLQAAcGvabaXdpZ7aZWtVM8RfXrrmHNv+f37aINsOpTp0TXC9gWMvXnOOPHZZ6QeOlVZ4kJ9MHXWeRIUHmv21e4+bjNvs3LwKvR+4v8+X7pKDBV22/WMjpLUH5ZiXRWxB0VatI9cWAJwSRVsAAODWNtjl2Xr6H++9Y+rKjV0sA6PSs3Plni9Wm0PfgeIWWgeOFeTLatH/09Fd5dpODSrtPqPCg2TaqM5SLdDX1hH+6NdrifJAmbps36XLtsy5tvF7ybUFAGdE0RYAALi1jXZ5ttbDrz3ZY5e1lia1Q8z26t1J8s5fhQUOQH28aEeRgWP6uvnu9u7SuYkld7YytYyoJpOGdxJ/H8ufKbP+3SOvzdlU6fcL9/DF8t2SmGzpsr24TYTE2hUmUVRcPfthZHTaAoAzomgLAADcWsL+wk7bmCiKtsH+vvLqte1sh7e/+edmWbU7ydHLghPQrusnvouXx79bJ7kFA8f6xNSVL2/tJg1qlm/gWFl0bVpLXh3aTrwKEhje/HOLGSwFnE5mTq68O7fwTai76LI9rWZ1QiTA11IOWLePTlsAcEYUbQEAgEfEI2iRsnndUEcvxyl0aFhDJvRubra1OHfPzFWSlsXQJ0+mA8dGTlkm0+0Gjo27oKl8MLxThQ0cK4vLz4mWxy9rY9v/v2/Xyu/rE6t8HXAdXyzfI/uPZ5jtvq3rFukkxcl8fbwlpiAySPOrUzIsnfUAAOdB0RYAALgtHWK05WCKXVeRj6OX5DQmXNRc2tUPt/3B/vzPCY5eEhxEB9LpwLEFWwoHjunQukcubV3hA8fKYlSPJjKmZxOzrY2/Ez5bISt2HXPYeuDkXbZ/bbHt39WnpUPX44rDyDbYHZUCAHAOFG0BAIDb2nbohGTnWg7zjon07CFkxfn5eMtrQ9tLoJ/l18GPF++UvzYedPSyUMUWbD554NiMMV1lSCUOHCuLRwa0loHtos12Rnae3DJ1mSkyA/a+/HeP7CvostVIj7YFb0ihLMPIyLUFAGdD0RYAALitBPshZJHk2RbXtE6oPGZ3CPqDX66RoyeyHLomVJ3pi3bIiClLJTkjp8jAsfMaV/7AsdLy9vaSl4ecI92a1jL7x9KyzZoPpViGTQFZOXky0W6g4l19ybItrbh6hW9mkmsLAM6Hoi0AAHBbCQV5tqo1Q8hKdFOXhnJhyzpmWwthj369VvLzLd3JcN/YEM2IfcJu4JhmgH512/lVOnCstDTW5P3hHSWm4I2X3UfT5eapSyU1kxxmiHy1Yo/sTUo3271b1ZFz6ld39JJcRsuIarYIlHX76LQFAGdD0RYAALithP2FnUPEI5TMy8uSX1o92DJs6td1B+TrFXsdvSxUkqS0LBk5Zal8sniX7bRxFzaV94d1ktAAX3FWYYF+MvXmzhIdHmj24/cmy22frjAFaHgu/f6/Y59l25cs27II9PORFgUDOjcfTJWM7FxHLwkAYIeiLQAAcPtO27BAX4kqKPbgZHXDAuX5QW1t+09+v052H01z6JpQ8baagWP/yMItR8y+v4+3vDykncmNdeTAsdKKDA+UqaM6m9ezmrfpkDz8FZ3hnuzrFXtkzzFLl60eMdC+AV22ZRVbkGurXfcb7Y5OAQA4HkVbAADgth2F+wsG08REhZmOUpzagLZRMvjc+mZbDzu/b9Zq26HzcH3zNx8yA8e2Fwwcq2UGjnWRazpavueudDj3hyPOE39fb9uh8a/O2eToZcFBXbZvF+myJcu2vLm28UQkAIBToWgLAADcPs/WmoWJ03vyijZSr3qQ2V66/ah8OH+bo5eEctIu1Gn/7JCRU5ZJSsHAMX09fDehu3RyooFjZdG5SU15fWh7sb4P89afW+STxTsdvSxUsW9W7jX5xqpni9pybsMajl6SS4qrZ+m0VQwjAwDnQtEWAAC4JfvDPMmzLX1u6CvXtrMVw16evVHW80e8iw8cizdxF4UDxyLky1vPl/o1nG/gWFlc2jZKnri8jW3/ie/iZfa6Aw5dE6pOTrEs27vpsj1rrc2RKJbtdXvptAUAZ0LRFgAAuKWEA3ZDyKLotC2trk1rydieTc12dm6+3PvFKobTuGg8yIiPlsqnSwoHjo2/sJl8MKyjUw8cK4ubuzeRcRdYnqtak77z85Xy785jjl4WqsC3q/bJziOW3O0ezWtLx0au2TXuDPTnQZNaIWZ7w4EUhvsBgBOhaAsAANzShv2FnbatIijalsW9/VraIiU0ZoLMUNey5WCqya/9Z2vhwLFXhrSThwfEiLcLDBwri4cuiZEr20eb7YzsPBk9bZkZuAb37rJ9+8/Ntn2ybMsvtiAiISsnj9cPADgRirYAAMDt5NlNwW5UK1hC3KSzsKoE+PrI69e1N8U+NWn+NllUUACEc5u36ZAMmrhQdhR0IdYO9ZfPxnaRwS42cKy0tAj90jXtpHvzWmb/WFq26TA+mGIZQgj38/3qfbbn9/nNasl5LprN7Exio+2Gke0lEgcAnAVFWwAA4HZ2HU2T9IJD+umyPTuaA/xA/1ZmOz9f5L4vVklyRrajl4XTDBybunC7jJyytMjAsW9v7+72h477+3rLuzd1tHWH7zmWLjdPWSapmZbHAe7WZVuYZXtXH7psK0JcdOEwsnhybQHAaVC0BQAAbkcP6beKiWII2dm6pUcT6drUUvDbdzxDnvpunaOXhBJoBuVj38bLUz+sN9mu6uI2EfKVGwwcK8sQvWmjOku96kFmf92+ZLn1k3/J53QzP6zZJ9sOnzDb+rOpS1NLhzUqrtOW4ZMA4Dwo2gIAALceQta6oPsOZ3fo+ctD2km1gniJr1fulZ/W7Hf0smDn2IksGT55qcywGzh2a69m8v5NHT0uFiQiLFCmjTpPwoP8zP78zYfloa/WmC5kuL7cvHx5q0iXbUuHrsed1Ajxt3vD47iJGAIAOB5FWwAA4HYS7IaQ0WlbPtqp+cxVsbb9x75dK4nJ5IU6gy0HU+SqiQtl0bbCgWOvXtvODOdyt4FjpdW8bjX5cEQnE5mgvl6xV16evdHRy0IF+FG7bA9Zumw7N6kp3ZrRZVsZ3bYnsnJl51FLZjAAwLEo2gIAALfttA3y85GGNT3j8PDKdFX7enJZ2yiznZSWLQ98Sfeio/2tA8fe+Ud2Fhk41lWuPtc9B46VhQ6memNoe/EqqFu/89dW+XjxTkcvC+Xssn3zj822/bvJsq1wseTaAoDToWgLAADcSlpWjq1LqGVEqPh4aMdhRfLy8pLnroqTutUCzP68TYcogjmIFss/WrBdbtaBYwWDtlpHhcl3E3pIx0Y1HL08pzGgbZQ8NbCwQ/zJ7+Llt3UHHLomnL2f1u6XrQVdtuc1rkGXbSWIq1d4VEr8Poq2AOAMKNoCAAC3sikxVaxNoDGRRCNUZObhS0Pa2fb/+/MG2XIw1aFr8jRZOXny6Ddr5ZkfCweO9WsTIV+O72bLo0ShEec3lvEXNjPb+njd+dlK+XfnUUcvC2Wk+apv2XXZapatvpGEyuu0ZRgZADgHirYAAMCtJOwv/GMzJoohZBXpwpZ1ZHi3RmY7IztP7v1ilWTn5jl6WR4zcGzY5CXy2dLdttNu791M3vPAgWNl8WD/VnJV+2iznZmTJ7dMW86bDS7m5/j9srnge6bd5N2b02VbGSLCAkzMijUegQgcAHA8irYAAMCtJBywG0JGp22Fe2RAa2laJ8Rsr9lzvMg0d1SOzYkpcuU7C2XJdkuXqA7Zen1oe3mgv+cOHCstfXxevKadrdCnmcwjPloqBxmm5zJdtvZZtnf1aUGXbSXRx9XabXssLVv2H+c1AgCORtEWAAC4lQ32nbaRdNpWtCB/H1Mw9C0oFr7z1xZZseuYo5fltv7aeFCunviP7CrIaa4dGiCfj+0qV3Wo5+iluQwtcmtHsmb/qr1J6TJyyjJJych29NJwBr+uO2Aib1SHhtWlZ4vajl6SW4uNtsu1ZRgZADgcRVsAAOA29HBOa6etHuqpOayoeOfUry53Fkxv16nu985cJScKhmKh4p7Lkxdsl1umLrMNHGtjBo51l3MbMnCsrKoF+snUm8+zZf+u358st36ywuQEwznRZVv14uoV5trGk2sLAA5H0RYAALiNxORMOZ5u6Z4jGqFy3darmbRvUN1s7ziSJv/5eYOjl+Q2tJD4yNdr5Vm7gWP9YyPky1sZOFYeEWGBMm3UeRIe5Gf2F2w5LA9/tYbsTic1e/0B25tw7RpUN5naqLpO2/X76LQFAEejaAsAANzGhgMMIasqvj7e8trQ9hLk52P2ZyzZJX8mJDp6WS7vaMHAsc+XFQ4cm9C7ubx7Y0cJ9mfgWHk1r1tNJo/oJAG+lj+Dvl65V176baOjl4USumzf+KMwL/tuumyrRMOawVIt0PJzJn4vnbYA4GgUbQEAgNtI2F84hKw1nbaVrkntEHn88ja2/Qe/XCtHUjMduiZXHzh2VbGBY29c117u79+KgWMVqFPjmvLGdR3EWgOcOHerTF+0w9HLgp05GxJt+eTn1A+XXq3osq26YWSW/zsPJGfIYX6eA4BDUbQFAABuI4FO2yp3fecGclFMXbOtf+DrYf0cbl52fyUclEF2A8fqVAuQmWO7ypXtGThWGS6Ji5Snr4i17T/5/Tr5Nf6AQ9cEC/35QZat48RGF+bariPXFgAciqItAABwu05bX28vaVo71NHL8QhaTPnf4LZSs2Do2+z1iTLr3z2OXpZLFag+nL9Nbpm2TFILBo5pp9t3t3eXDgwcq1TDuzWWW3s1M9v6PsNdn6+U5TssXc5wnN83HLQVC9vWC7e9KYSqEVev8CiV+L3k2gKAI1G0BQAAbjO8aeuhVLPdvG6oObQcVaNutUB5/uq2tv2nv18nuws6RnH65+zDX62V537aYBs4NiAuUmaN7ybRDByrEg/2byVXd7B0M2fm5Mkt05bLloOFMSuo+jcx3vhjk23/TrpsHdppu55OWwBwKP6aAQAAbkELtjkFla+YSKIRqlr/2Ei5tlN9s30iK1fu/WKV5ForkShx4NhNk5fIzOWFA8fuvKi5vHPDuQwcq/JO8XOkZ4vaZv94eraM+GiZJCZnOHppHunPhIO2AVjacd63NV22Va1p7RAJ9LOUCeL30WkLAI5E0RYAALhhni1DyBzhiYGx0qCmpUN02Y5j8v68rY5eklPalJgiV76zQJYWGzh2bz8GjjmCPv7v3tTRNoBpb1K6jJyyTFIysh29NA/ssi3MsqXL1jF8fbyldcH/oTuPpEkyrwMAcBiKtgAAwK3ybBWdto4RGuArr17bXqx1ltfmbCITsZg/ExLl6on/yO6j6baBY1+M68bAMSd47k4ZeZ7UK4il2LA/WcZ/8q+JsEDVmLvxkKzZY/l5oUXDfm0iHL0kj2V9A0MRkQAAjkPRFgAAuIUNB+yLtnTaOsp5jWvK+Astw52yc/PlnpmrJCM7VzyddhFOmqcDx5bbBo7pwJ/vJ3SX9g2qO3p50GzmsECZNqqzVA/2M/sLtxyRB79cLXnEfFTJ6+N1uy7bu/o0p8vWgeLscm154w0AHIeiLQAAcAsbC+IRtOASERbg6OV4tHv6tpQ2BYfXbj6YKi/9tlE8mXZrPvjlGvnPzxskv6D+d2nbSNNhGxXOwDFnokMMJ4/oJAEFgwy/XbVPXvTw529V+HvTIVm9O8l2pES/NpGOXpJHi6vHMDIAcAYUbQEAgFsMdUpMzrT9wU+HluMzQl+/rr35rCYv2C4LtxwWT3QkNVNu+nCJzPp3T5GszrevZ+CYs+rYqKa8eX0HscYLv/f3Vpm6cLujl+VRWbZkOztWi4hQ8S34HjCMDAAch6ItAABwryFkRCM4hZYR1eShS2Js+/fPWi3H0zxroM3GAzpwbKEs3WEZOKbdm29d30HuvbglRSkn1z82Up6+Ms62//SP6+WXtfsduiZ3NX/zYVm5y9Jl2yqimlwSS5etowX4+pif4WrLwVRJzyLiBgAcgaItAABwqyFkraMYQuYsbj6/sZzfrJbZ3n88Q574Pl48xR8bdODYQtlzzDJwrG7BwLGB7aIdvTSU0rCujeT23pZ8Zo21uGvmKllWUIBH5XTZ3tGnOW9oONkwMo10tn9jFABQdSjaAgAAl2f/B2UrOm2dhhZfXh7STsICLTEA363aJ9+v3ifuXoT6YN5WGT19uZwo6E5rWy9cvp/QQ9oxcMzl3N+vlVx9bj1bNvHoactlc2Lhm0QoHx329u/OY2a7Rd1QuTQuytFLQgm5tvHk2gKAQ1C0BQAAbnEYutIo25YRoY5eDuxEVw+SZ68qPMz8/75ZKweOZ4g7yszJNQPH/vtzgm3g2GVto0yHbWR4oKOXh7Og+dgvDD5HLmhZx+wfT8+WkVOWSWKyez6Hq77LdpNt/w6ybJ1KXL3CN0DXk2sLAA5B0RYAALi03Lx82VjQ+da4VgjDnZzQle3r2WIBkjNyTL5tnh5z60YOlzBw7K4+LUyGbZC/j0PXhvLx8/GWiTeeayti7U1KlxEfLZXkDM/KaK5oi7YekWU7LF22zeqEmDc44Dw0H9460zN+L522AOAIFG0BAIBL23nkhGRk55ntmEjybJ3Vs1fGSmSYpdt0wZbDMm3RDnGneI4r315oK0DpwLG3b+gg9zBwzG2EBvjKRyPPk/o1gsx+woEUGf/xvyYyAWfndbss2zv7tBAfXitOJSTAV5rWDrEdzZKdy3MdAKoaRVsAAODStHhi3xkE51Q92F9eGnKObf9/vyS4RTbo7+sTZfDEf0z3pYoIC5BZ47vJ5ecwcMzd1K0WKNNGdZYawX5m/5+tR+SBL92va7yqumyXbrcMdWtaJ4TXi5OKjbbk2mbl5snmxFRHLwcAPA5FWwAA4NIS9hcethkTRaetM+vZoo6MPL+x2c7MyZN7vljlsp2Kmsf53t9bZczHhQPHzqkfLt/d3kPOqc/AMXfVrE6ofDjiPNNNbR2u98KvCY5elsspkmV7UXO6bF0g1zaeXFsAqHIUbQEAgBt12lK0dXYPD4iR5nVDbTmJ9sUbVxo4dv+sNaZb2DZw7JwomTmWgWOeoGOjGiar2FpnfH/eNpmycLujl+Uylmw7Iou3Wbpsm9QOkYF02TqtuIJOW7V+H7m2AFDVKNoCAAC3KNoG+/tIgxrBjl4OziDQz0deH9pefAsqXu/O3SrLd1gKOK4ycOzGSUvkqxWFA8fu7ttC3mbgmEfpFxspz14VZ9t/5sf18vPa/Q5dk6t4wy7LdkLv5uLrw5+kzqpNtF2n7V46bQGgqvE/JAAAcFmpmTmy62ia2W4VWY2hTy4irl64GdKlNA703i9Wm++ls9uw3zJwbPlOy8CxQD9veeeGc+Xuvi3FyzpmHR7jxi6NzKH9Sjuu7565ynSR4tSW7ThqsoBV41rBcmV7umydPYvcOnxv/f5kySW/GQCqFEVbAADgsnSitRVDyFzLuAuamsPMlRben/txvTizOTpw7N1iA8fGnW9iEeC57r24pVzTsb7Z1nzmMdOXyyY3GLBXWd74vbDL9na6bF1CbEG3bVpWruw4csLRywEAj8L/kgAAwGUlHCjM2GvNEDKnMnXqVJk7d+4pz9dizavXtpOQgkiBz5ftNoVRZxw4phEOYz9ebooWql39cPl+Qg9pW78w7xGeSTusn7+6rVzQso7ZT87IkZEfLZUDxzMcvTSn8+/Oo7Jgy2Gz3bBmsAzqUM/RS0IZc22JSACAqkXRFgAAuEWnbasIirbOLjMzU8aMGSNNmjSRatWqSf/uHaVn/lrb+Q9/tUYWLFslffr0kRo1akhkZKSMHTtW0tIsERjq33//lR49ekhYWJg0bdpUpk+fftr71Ou3atVKvL295fXXXy9y3uLFi6V///5Su3ZtqVmzptlev76w4/eZ556TgKAQub1fnOx85RrZ9epg2fnC5XJ93QMSEcbAMVj4+XjLuzeeK23rWYpb+45nyMgpSyU5I9vRS3Mqr9t12ZJl61pxNlbrGEYGAFWK/ykBAIDLSthPPIKzWbp0qXTv3l3uuOMOufLKK6VDhw6yYMECc15OTo5ERUXJ77//LsnJyaYbd+bb/5WY3O3m/CMnsuTKwddKy5YtJTExUdauXSurV6+WZ5991pyflJQkl156qdx0001y7Ngx+eyzz+Suu+6SJUuWnHI97dq1k4kTJ0rnzp1POk9v4+abb5YtW7bIgQMHzGUuueQSyc3NlUMpmbKqZm+JvnuWNLz3S/Mx8pGXJTw8XK4ceFmlPX5wTSEBvvLRyPOkQc0g24DEcdP/lcwcS3e2p1ux65jM32zpstXHaNC5dNm6WjyCWrePTlsAqEoUbQEAgEvSw9Y3FMQjRIcHSniwn6OXBBEZPny49O7dW1599VX56quvZMqUKVKnjuXQ8ZCQEHnmmWekWbNm5rDyrl27msvG+eyTWiH+5jLHEvdIVMeLxd/f31zviiuuMMVb9c8//0hAQICMHz9efHx8pEuXLjJo0CCZMWPGKddz++23m87dwMCTO2MHDBgg1113nVSvXt3c3wMPPCC7d++W35fGy1XvLJQVu5JsA8cm3niuHFj2s1x//fUSFGQpzAH26lQLkGk3d5YaBT+LFm07IvfPWiN5DG8qmmXbq7npToZrqBsWaJ7bKn5vsvm/FwBQNfjfEgAAuCQ9BDklI8dsx0TRZesstENWO239/PzE19dX2rdvb+IJSpKRkWE6c7t2OldeGHyOOS2s89Xy2ruTZeOew6b79ZtvvpGBAwea8/Ly8k4qGOhp9pEG5fH3339LaFi43P3THtvAsciwQDNw7JwaufLbb7/J6NGjK+S+4J6a1gmVySPPM4V+9cPqffK/XxPEk63anSR/bzpktutVD5Krz7UMboPriCvotj2enm372QgAqHwUbQEAgEtK2F+YrRcTSZ6ts3j00UflhhtukDfffFN++OEH2bRpU4mX0+KrFkBbtGghV199tfRtEyHXd24gQU07yold8dK6UaSJUmjQoIGMGjXKXKdbt25y4sQJefvttyU7O1sWLlwo3377raSmppZ73Tt37pRhN4+WgO4jJN3yXkDBwLHuZuCYdgyfc8450rFjx3LfF9zbuQ1ryNvXnyveXpb9D+Ztk8kLLBEgnuiN3wt/Bky4qLn4+/InqKuJLTKMjFxbAKgq/I8JAABckmZGWrWiaOs0NGJg1apVJrpg5cqVpsj51ltvnVSwve2222Tjxo2m6KpDwtTt50fJoZmPS2i7/tLg3i/lhW+XmUgFzbBVtWrVMoVgjUPQIWUPP/ywjBw50gwtK48t23dK+649xSv2Egk9p585bWC7aJk5rps5NFjXq0XbW265pVz3A8+hb0I8d1Vb2/5zP62Xn9bsF0+zeneS/LWxsMt2MF22LimuHrm2AOAITlu01V/AAQAASlO0bU08glNp1KiRKdo+8cQT8t5775l8WystgGrOrA4Pmz17thnsZXVgz07xysuS8E5XiJePn3yw5KD0HXSj/PTTT7bLaPSCZtseOXJE5s+fbyIUtAP3bK1O2Crtu/SQ/GY9Jbzbtea0+y5uKW9e114C/XzM/h9//CH79++3FY+B0rihS0O586LmZltTPe6ZuUoWbzsinuTNPwqzbG/r3YwuWzfotF23j05bAKgqLvO/ph4C99BDD0nbtm1Nx0V0dLQZdLFv374il1uxYoVcfPHFZqCEdmOMHTv2pEPmdu3aJZdddpkEBwdL3bp1TUeITjM+naNHj8qNN94oYWFh5ra106L47a5Zs0Z69uxpBl3ooXwvvvjiSbcza9YsiYmJMZfRr+Xnn38u1+MCAICnxyP4+3hLk9ohjl4OCmiRNi0tzVagXb16tYk5sJowYYKJNZgzZ85JHbL6O1K10FBpn7JU8vNyJSv9hDzy/GvSrn1722W0ezczM1PS09Nl0qRJJod2zJgxtvN79eolTz31lG0/KyvLZOdq9q3+vqfb1t/7/lqRIF17XCg+zbtL9R43SJCfj7x747lyR58WZlCa1eTJk02Eg/4OCJTFPRe3lCEdLd2lWbl5Mmb6ctlo94aTO1u757j8kXDQNixySMcGjl4SzlL9GkESFuhrtuP30mkLAB5ZtD18+LCMGDFCGjZsKJ999pk0b95chgwZYn7Z1l/+tSD7+OOPm89ff/21OaROJwpbaQG3b9++5nravfHrr7/KunXrinTt5ubmmoKt3qZ2aUybNk2mTp1qOkFORwu2elv6B8aPP/4o8+bNMwVhq+TkZOnXr5/pLPn333/lpZdeMn8wfPDBB7bL6P3pxGEt+OofHFdddZX5iI+Pr/DHEgAAd5aRnSvbDp8w283rhjKJ3IksW7ZMYmNjzZvigwcPlkWLFpniqjU3duLEieZ3OP2dKTQ01HyMHz/enK/bGn9wcNWfsu/tG2Xve7fI8ePHpdPw/7PdvmblRkRESJ06dcyb4b///ruJSrB/c167ca3097OgoCDTlatr0u3nnntOflt3QK695z+ScWSvpCz/Tna/do3sfPUaGdKthbms/Rv3OgyNAWQ4G1r8/+/VbaVXqzpmX4cnjpyyVPYfd/9hTm/Yddne2pssW1d/HsfVs3TbHkzJlIMpGY5eEgB4BK/84iN4HWjYsGFmgrAWOl9//XW58847TeH16aefNp2pJf1R0LlzZ/MHgBZ69Xpa1NXD16zZaGvXrjVDIzZv3myKub/88otcfvnlpsCrv/BbO0K0i/fQoUPi7+9/0v1s2LBB2rRpY+6vU6dO5jRd16WXXip79uwxXb/vvvuuPPbYY+YQPettaM6a5rQlJFgmxg4dOtQMz9Cir1XXrl3NVGVdQ2locVgPI9Q/YLTrF3AU7Vg6ePCg6Va3vt4AlA2vo7OnnT6Xv7XAbF99bj159drCTkw4B31TvHHjxqbz9WxsOZgil725QDJz8sz+x7d0lp4tLIWvU72Odu/eLdddd50pFJ+K/uo7ce5Weem3jbbT2jeoLh8M62jya4HKcCIzR66ftFjW7LF0KbaKqCZfjO8m4UF+4o7/H9n/jI4KD5S5D/SSAF9L3Ahc039+Wi+T5lsG6k25+Tzp3aquo5fkdPi9Dig/T3kdJZeytmc5xsFJaPepRh5ceOGFZthD7969zcep6Ben7/pZD1XTQ+W0YGr/jdVuCrVgwQJTtNVf4jWWwFqwVf3795dbb73VdNJ26NDhpPvR6+h9WAu2Sjt69X60o3fQoEHmMhdccEGRoq/e7gsvvCDHjh0zh//pZe69994it62X0cLuqejXpB/231jrE1k/AEfR55/+4cvzEDh7vI7KH42gWkWE8hg6IevvKmf7vWlaO0QevqSVPP3jBrN//6zV8sudPaR6sP8pX0caT6XRC6e6z8zsXHn4m3j5blVhvNYV7aLkf1e3Nfm1PI9QWYL8vOXD4R3lmvcWya6j6bIxMUXGTV8uU27u5BTFzIr+/8g+y3bcBU3Fz9uL15eLa2OXHR+/J0kubFHboetxRvxeB5Sfp7yO8kr59TlV0VYPZdNibbt27c54Wc0j0+5YjRuwVqUvuugiUxTVaIK77rrLdLVqt6vS7lulnbD2BVtl3dfzSqKna5Xfnq+vr9SsWdN2Hf3cpEmTU96uFm1Pdd+nul/1/PPPm07j4rQrWB8DwJE/ZPSNE/2B6s7vgAGVidfR2VuxLdG2HRloeUcezkWPSFLl+d70bxYkvzSsJkt3pUhicqY8MHOFPHdpkyJ5s6V9HR05kS0P/bBV4g9YYjXU+POjZcR5kZJ87IgwWgdV4eWBTWXsFxslKT1HFm8/Knd8skyeGdBEvO2e067+/9HmQ2kye73lZ3SdED/p3SiAn9FuIDIw27a9YvshORjLUZ/F8XsdUH6e8jpKSUlxvaKtThb+73//K/fcc49s3bpVVq1aZTLOrDln9kPJrr32WvNN1FgCK81P04xaLdw+8sgj4uPjYyIWtDDqqt9s/Trsu3O101a7SDTHjXgEOPqHqf7RrM9FV319AY7G6+js7UreYdvuGtNA6lQLcOh6UHlevz5cBry5QI6nZ8sfm4/J5fsbypXto8v0Olq377iM/WKd7D9uecNbB469MuQcuSSuMAsXqAraBzJlZJjc8OFSSc/Old83HZNGdcPlsUtbu83/R0/OWWHbvq13c2kQzevMHdSqnS9BfhvN83bLkcyTmprA73VARfCU11FgCRGwTl+0DQkJkf/85z/mQwd0DRgwwBRw9RtlHfplLdhqju2ff/55UuHyhhtuMB+JiYnm9vSbrcXgpk2bmvN1UIXm5trTy1rPK4meXvzdYZ06rIMprNfRz9bbOdXtnuoyp7pfFRAQYD6K08fEnZ/AcA36+uK5CJQPr6Ozk3Ag1XyuFeJvckjtOy/hXqJrBMt/BsXJhBkrzf4T36+TLk1rSXR1SwTWmV5Hv8bvl3tmrjaFBmu+5qThnWxDdYCq1qFRTXnnxg4yZvq/kpuXL5MX7JCo8CAZ3dPy94or/3+0YX+y/LbO8vdO3WoBcn2XRvz/5ib029gmOkz+3XlMdh9Ll5SMXAkPdo5MZmfC73VA+XnC68i7lF+b0z4CmiE7btw4U7i1TvC1Fmx1qJhOCq5Vq9Ypr6/dtTqBeObMmaaCffHFF5vTu3XrZoaT2Rdh58yZY4q/OmysJHqdpKQk+ffff22nacFY3wHo0qWL7TLz5s0za7S/3VatWploBOtl/vjjjyK3rZfR0wEAQOkcTs00HyomqhoFWw9w+TnRclVBd21KRo7c98Vqycs7/SxdPSLr7T83y/hPVtgKtjpw7LsJ3SnYwuEuiomQ/1wVZ9t/7qcN8sPqwqxlV/XWn4VZtuMvbGayouE+YqMLG6bW7bcM1QMAVB6nKtpqV+3ff/9t8ityc3Plr7/+MvsdO3Y0xdBrrrlGli9fLp9++qk5X7Ng9SMrK8t2G2+//basWLFCNm3aJO+8845MmDDB5MJah5X169fPFGeHDRsmq1evlt9++03+7//+T26//fYSO1pV69at5ZJLLpExY8aYLl0dcKG3q9OJo6Mtf0Bod68OIbvlllvMQDMtFr/xxhtFog00Z/fXX3+VV155RRISEuSpp54yX4/eFgAAKJ2NBwozoFpFEBXkKZ6+Ms50yapF247IRwstU8xLkpGdK3fPXCUvz95kO02Lvp+P7Sp1q5XucDSgsl3XuaHc1aeFbV/fjFi09Yi48s/mn9daZnVoZM0NXRo6ekmoYHHRhW94rdtLEjgAVDanikdo2LChKXJqJ60OEZs7d66MGjVK7rjjDtm9e7d8//335nLt27cvcj0t7vbq1ctsa1H1ySeflNTUVImJiZH333/fFGitNOf2xx9/lFtvvdV0uGqEwogRI+SZZ56xXWbHjh1mqJj97WqhWIurffr0MW3MgwcPljfffNN2nfDwcJk9e7Yp/mqRuXbt2vLEE0/YYh3U+eefLzNmzDBF4kcffVRatGgh3377rcTFFb7LDgAAznz4rZV22sIzhAf5yStD2skNHy4x+y/8miCZOXmyZk+SHEo6IXWq75H+sZFyXuMaMuGzVbJ6d5Ltug/0byW39WpGVzaczt19W8iB4xkyc/luycrNk7EfL5dZ47tJTKTrvSH1pl2X7bgLmtJl64Y0HsE+KxwAULm88vXYMSc0cuRImTp1qkPuW4u1V199tWzbts0WbeAsdBCZFoi1G5lBZHAkjQfRmBEdQuDOWTNAZeJ1dHbun7Vavvx3j9n+YUIPaVufQ909ybM/rpfJCwq7bL29RDQpwfpZy7LWX2514NhrQ9szcAxOLSc3T8ZMXy5/bTxk9iPDAuXr284vktvs7P8fbU5MkX6vzxP9y7J2aIDMf7C3BPlTtHU3WTl5Evvkr5Kdmy/N64bK7/de6OglORV+rwPKz1NeR8mlrO257yNQDj///LPphHW2gi0AANAhZJZOWy3StYgIdfRyUMU6Niz6+5k12tb62VqwrRnsJ1/e2o2CLZyer4+3vHPjudKu4A2oA8kZMnLKUjmeXjgrw9m9+ecWU7C1dtlSsHVP/r7e0irScoTLtkOpkpaV4+glAYBbc9qiraO6bNVLL70kDzzwgMPuHwAAnLojbVNiqtluUjuEw289jGbVPvzNGtNNeybZefnSrA5FfbiGYH9fmTzyPGlUK9js68+5sdOXm+e8s9tyMEV+XGMZolYrxF9u7EqWrTuLjQq3vVG2YX9hxjwAwIOKtgAAAMXtOJJmDs9Urpj5iPL5ee1+SU7PsXXTnk5KRo78Er+/ClYFVAyNFZh2c2dT+FRLth+V+2atljxrG7mTesuuy3bsBU1NARruK64eubYAUFUo2gIAAJeLRlAxBYdownPMXpdoYjFKQy/3W3xiZS8JqFCNa4fIRyPPM3nM6qc1++U/P28QZ7X1UKr8sNrSZVszxF+GdWvk6CWhkrWJLsyRX7e38P9kAEDFo2gLAABcRoLdoZgxUXTaepqktCxbdu2Z6OWS0rMqe0lAhWvXoLq8c2MH8Sl4h0IH7304f5s4o7f/3GJ7TY7pSZetJ2gdVc325lk8nbYAUKko2gIAAJdBp61nqx7sX6ZO2+pBlsPMAVdzUUyE/HdQnG3/uZ82yPcFHa3OQgdRfbdqr9muEewnw+my9QhamLfmhW9KTLFFFgEAKh5FWwAA4DKsQ09CA3ylfo0gRy8HVaxfbESZOm37x0VU9pKASjP0vIZyT9+Wtv37vlgl/2w9LM7i7b8Ku2xH92wqIQF02XqK2GjLkS7ZufmmcAsAqBwUbQEAgEtIzsiWvUnpZrtVZDXx8iplyyXcxqVtoyQsyFfO9J3X88ODfGVAXFQVrQyoHHf2aS7Xd25gK5CNm/5vkSMOHGXH4RPy3SpL52/1YD8ZcX5jRy8JVSiunl2uLREJAFBpKNoCAACXsOmAXZ4t0QgeKdDPR14d0t5UZU9VuDWne4m8MqS9uTzgyvTNqWevjJOLYuqa/ZTMHBnx0VLbG1iO7LLNLWizHd2jiTn6AZ4j1n4Y2T7Hv4kAAO6Koi0AAHAJG+yLtgwh81h920TIB8M6mY5bZc24tX7W0ycN62QuB7gDXx9vefuGDmZAmUpMzpSRHy2V42nZDlnPziMn5JuVlizb8CC6bD1Rm4J4BBW/l05bAKgsFG0BAIBLSNhf2M3Tmk5bj3ZxmwhZ8mhfeW1oO7N9bv1Q81n39XQKtnDH4U8fjegkjWsFm/3NB1NlzPTlkpGdW+VrefvPwi7bW3o0kWqBflW+BjiWFusb1gy2Zc1bnw8AgIpF0RYAALiEBLtO25YUbT2eRh8M6lBf3r3xXJl4TSvzWfeJRIA7mTp1qsydO9ds1woNkGmjOkvtUH+zv3THUbn3i1WSV4UFs11H0uTrgi7bsEBfGdmdLltPH0aWnp0r2w+nOno5AOCWKNoCAACnl5+fLxsLirb1qgdJGJ1dADxQo1oh8t7158jx2W/LnvdukfdG9ZS6DZvJ5MmTi1xu/fr10qdPH6lRo4ZERkbK2LFjJS0trchlPvzwQ2nVqpWEhIRI06ZN5ddffz3tz+Dnn39e2rZuIdtfvlr2fjBW+tRKPuln8ezZs00O7913313k9KSkJBk9erTUrl1bwsLCpFOnTietB647jCx+L7m2AFAZKNoCAACnt+dYuqRm5pjt1lF02QJwb0uXLpXu3bvLHXfcIVdeeaV06NBBFixYYM5rHRkqA7u1kejr/yMN7v5C/HrfLnfefa8pmFrdcMMNpiCbmJgoa9euldWrV8uzzz5rO/+DDz6QV155RT7//HNJTU2VRYsWSevWrU+5nscee0y+/u4HqX7109Lgni+l6fDnZfxlXYpc5sSJE3LnnXfK+eefX+T0vLw8ufzyy8XPz082bdpkCriTJk0y+3D9Tlu1bh+5tgBQGRjzCQAAXCoaISaSIWQA3Nvw4cPlmmuukZEjR0qTJk1Mh2pQUJA5Tztjp7/zinyxfLc8+OUaCagXI/nRsTL5y5+lX79+5jLbtm2TiRMnir+/v9SpU0euuOIKU5hVubm58sQTT8j06dNNMVhFRESYDtmSHD16VF599VUZ8fIX8tseS/zIuMu6SqumDU8q7GqxWO/b3i+//CK7du0yMQ++vpY/P633C9cVG02nLQBUNjptAQCASw0hi6HTFoCb0w5Z7bTVblQtdLZv3950ztq7tlMDuffilpKfkyVZ+zbJvMPB8s+Ww+a8+++/3xRl09PT5cCBA/LNN9/IwIEDzXkbN240t79ixQpp3Lix1K9f38QnpKQUvjlmb/HixeLvHyCzZn4he94ZLvveGyW7fvlAsrKybJdZsmSJ/P777/Lwww+fdP2///5bmjdvLsOGDZNatWpJbGysTJs2rYIfMVS1OtUCJCIswNZpqxEaAICKRdEWAAA4PTptAXiSRx991HStvvnmm/LDDz+YWIGSTOjdTKotmyy+NaPFv0U3Gffxv7J+X7IMGDDAxClUq1ZNoqKipEGDBjJq1Chb56zSIuvy5ctl1apVsmPHDnnyySdLvA+9fEpKsmQd3SvRY96XB9/+XP78fba88MIL5vzs7GwZM2aMrbO3pOv/9ddfpgi9f/9+E80wYcIEmTdvXgU+YnBkt21yRo6JMQIAVCyKtgAAwOltOGDptPX39ZbGtYIdvRwAqFQPPPCAKaZ26dJFVq5cKR07dpS33nqryGW0s/H222+XwLREufbhN8TLy1tSMnNk2Lt/SJ8+fU0hVYd9adFUIxVuuukmc73Q0FDz+ZFHHjGxC/rx0EMPFcnEtZfpZcmeDe9xo4RVqyb3X91d7rrrLlNMVlq87dy5s1xwwQUlXl/vT7t5tVCrRV0t3l511VXy448/VuhjhqoXZ5drG7+XXFsAqGgUbQEAgFPLyM6VHYdPmO2WEaHi68OvLwDcX6NGjUzRVvNn33vvPZMrW7xgq7EEc2bPlvdvuUDaN6huztu3a6ekpqXJ8NHjTZG0Ro0aMm7cOPnpp5/M+RqzEBgYWOp1rEwtLMyNOL+RVA8u2k2rHbuzZs2yFYB1uNn7779vCrmqXbt25X4s4Jxi6xXm2q7bR64tAFQ0/uoBAABObXNiquQVROURjQDAE2iRVrtkrQXa1atXm5gDK+1aXbhwocyZM8cUZYP8feSjkedJk9oh4lervnj5BcpFtzwqqemZJqt20qRJtuFfOtBMu261Q/bYsWOSlJQkL774ovTv3992+7169ZKnnnpK9h9Pl9m7RAIbtZcTiz+XG86NlH379pmu3yuvvNJcVgu269atM53B+qFDz2688Ub5/vvvzfmDBg2SjIwM8zXpEDQtNH/33XfmcnBtsfadtvvotAWAikbRFgAAuEQ0goqJZAgZAPe3bNkyM7BLYxIGDx4sixYtMoVXtXPnTpMfqwPFtBtX4wf049H77pRpN3eWujXDpc7gJ2TDgl+lVu3aZtiYFmbth3+9/vrrEh0dLU2aNDGdt3o7Tz/9tO38Xbt2mRiDd+dulazcPKk98H6pFyIS07SBnHfeeabA++CDD5rL1qlTx8QfWD+Cg4PNeiIjI8351atXN12+kydPlrCwMBk+fLi888470qNHjyp/XFGx6lUPkurBlviM+L102gJARfOt8FsEAACoQAn7C4eQtY6i0xaA+9MCp5o6daopumrnq5UWWLX79lSmjOwsQz/IlcD6L5r9kec3licHthEvLy/bZTTjVm/bKi8vTw4ePGgrCkdEREjbzj3l9hf/MqdVq1FL5s/5WWqGnDxorDj727XSqAQtRMO96HNKu20Xbjkih1Mz5WByhtQNK330BgDg9Oi0BQAATi3BrtO2FZ22AHBabeuHy8QbzxVfb0uRduo/O+SDedtKfX0tCmtn73t/W7ps1bBujUpVsIXniYsuzLUlIgEAKhZFWwAA4LS0myzhgKXTtnZogPkAAE8xcuTIIl22pdWrVV15/uq2tv3nf0mQb1fuLfX1E5MzZMbSXWY7yM9HxvZsWuY1wPOGkRGRAAAVi6ItAFQxPWxw7ty5jl4G4BIOpWbK0RNZZrt1FF22AFBaQzo1kPv7tbTtP/Dlalmw+XCprmu6bHMKu2xr8YYZSjGMbB2dtgBQoSjaAoATyMzMlDFjxpiBINWqVZOYmBj56KOPilxm/fr10qdPHzMlWod7jB071jZZWmknTkBAgG0giX7ohOfT+fDDD80AEs2208w8neZspbev53l7e5uBJcV99tln0rp1a3M/OpSErDpUdp4tQ8gAoGxu791cbuzS0Gxn5+bL+E/+PWNhTXNJZyyxdNkG+nnLGLpscRpNaoVIiL+P2abTFgAqFkVbAKgiS5cuNZOY77jjDrnyyiulQ4cOsmDBAnNeTk6OREVFye+//y7JycmmG/e+++6T2bNn265/ww03mCJqYmKirF27VlavXi3PPvtskft44YUXJDU11fahk6FP5YMPPpBXXnlFPv/8c3PZJUuWSNu2hYdStmvXzkyn1uEhxS1cuFDGjx9v1nn8+HEZPXq0XHrppWYbqKw825hIhpABQFkHRT1zZZxc3CbC7Kdm5sjNU5bJnmOFb/oW9/68bZJZ0GV7U5dGUqcaXbY4NW9vL9uQ0L1J6ZKUZjk6BgBQfhRtAaCKDB8+XHr37i2vvvqqfPXVVzJlyhSpU6eOOU87XZ955hlp1qyZ+QOra9eu5rLWoq7atm2b3HTTTeLv72+ud8UVV5ji7dnIzc2VJ554Qt544w1TPNb71EnRTZsWdtPcfvvtprM3MPDkKcDakauF5y5duoiPj4+MGzfOdNx+8803Z7UeoDSdtgwhA4Cy8/H2kjev6yAdGlY3+wdTMmXER0tLLK4dSsmUT5fsNNsBvt4y9kK6bHFmcXa5tuv20W0LABWFoi0AVBHtkNVOWz8/P/H19ZX27dubztmSZGRkmM7cc845x3ba/fffL9OnT5f09HQ5cOCAKZAOHDiwyPWee+45qVmzpinE6mVPZePGjWY9K1asMLEI9evXN/EM2uVbGnl5eWZAlD3dX7NmTamuD5SWdQiZFh2a1w119HIAwCUF+fvI5BHnSdPaIWZ/66ETMnracjmeliVfr9gjt366Qm6btVGGfrBYMrItXbY3dmkkdaud/MYtcLpc2/i9HHUFABXFt8JuCQBwWo8++qiJONDcWu2i1eiCli0LB4TYFz81bqBFixZy9dVX204fMGCA3HzzzSbzVjtlr7rqKhk1apTt/Oeff17atGkjwcHB8ueff8q1115rLjto0KCT7uPo0aPms8YxLF++3Gxfd911cs8998jkyZPP+LVoFIJ2+mpMgsYnaNTCrl27Sl30BUojOzdPthxMNdtaaAj0s2TmAQDKrmaIv0wb1VkGTfxHDqdmyvKdx6Tjc79LTl6+eHuJ5BV9L1Ziozm6AaUTG02nLQBUBjptAaCKPPDAA7Jq1SoTKbBy5Urp2LGjvPXWWycVbG+77TbTCfvtt9+aIWDq2LFj0rdvX9MNq8PHtOiqkQoal2DVrVs3CQ8PN528/fv3N5EFM2fOLHEtGmWgHnnkEaldu7b50O0ffvihVF/LRRddZIaT6Xp0KJoOIdP11apVqxyPEFDU9sMnJCvX0vEVU5CXBwA4ew1qBsvUm88z0QdKC7aqeMFW3f/lGpmzPrGqlwgX1CIiVPx9LM+p+DMMugMAlB5FWwCoQo0aNTJFW82Tfe+990y+rX3BVnNkdSCYDiDTAqzV1q1bTSzCnXfeaTJta9SoYYqyP/300ynvy1rwLYnGMpSUVVsW2g28fv16OXLkiEyaNMlsX3jhheW6TcDehv32Q8jo+AKAiqBRMxo5c0b5IvfPWiUZ2blVsSy4MD8fb4mJqmZ7w/VEZo6jlwQAboGiLQBUES3SapestUC7evVqiYqKsp0/YcIEEzcwZ84cU5S1FxMTY7pjJ06cKDk5OZKSkmIKpZpdq5KSkuTnn382t6/RCX/88Ye5v8GDB9tuY+TIkeZDBQUFmS7dF154wXTx6vV1W4eLWWVlZZlsXc2v1fvUbf2ssrOzTdewnqdFW127xj5ccskllfwowhPzbBVFWwCoGD+v3S9pWWcuxGrz7fH0HPklfn+VrAvukWurIw/s33QFAJw9irYAUEU0QiA2NtbEJGgxddGiRabwqnbu3GkKshqLoN24WqDVj/Hjx5vzdVujCz777DMTZaDDw7TQOm3aNFsR9emnnzZRBVrw1Wxa7eIdMmSI7f41c1YHoVlpvIHm6mqxVTtv9X7tO3/79etnirvz5883a9ZtHXRmvT/N1w0LCzO5vFrM1fWdrrsXKKuN9kVb4hEAoELMXpdoMmxLQy/3WzwRCShbri3DyACgYjCIDGUydepUUyzq1auXo5cCuBzrgK+SXkdaMNXu29PRguuCBQtKPK9OnTomVuFUMjMzZe/evbZOW6WZuLqWU5k7d+4pz9NhZ5rLC1SmhIJOnWqBvhIdzgRzAKgISWlZJWbYlkQvl5SeVdlLght12iqGkQFAxaAlCuWmxSAdRqTdejqpXg/j/uijj4pcRrMu+/TpYzoAtRNw7NixtsPE7SUmJkrNmjWlffv2p71PLVx17drVZH7Wq1fPDFDSw7SttCCmXYHWbsXq1asXuf6ZzgfcTUBAgOni1SFlgCs4npYt+45nmO3WkWHi5VXKtjAAwGlVD/YvU6dt9SD/yl4S3EDrqDBbVnI8RVsAqBAUbVEqS5cuNV1+d9xxh8m81BxNa8efHhatuZy///67JCcnm869++67zwxSsrrhhhvM4ddalF27dq3J8nz22WdPuh/NxbRmdJ6K5nXqGvTj6NGjJgP0888/tx1mbqWHkaemppoPPYy8uDOdD1QW7XalWx04vYQDdkPICoabAADKr19sRJk6bfvHRVT2kuAGAv18pHmdULO9OTFFMnMYYAcA5UXRFqUyfPhw6d27t8m7/Oqrr2TKlCnmcGzrIdbPPPOMNGvWzHRCaQesXtb+MO5t27aZoUc69V6vd8UVV5jirb3vvvvOFGGHDRt22rUcP37cXG7EiBHi4+Njumb79u170u0BANxjCFkrhpABQIW5tG2UhAX5ypmabfX88CBfGRBXODQVKE1EQk5evmw6kOro5QCAy6Noi1LRDlnttNVDq319fU18gXbOlkQnzGtn7jnnnGM77f7775fp06dLenq6HDhwQL755hsZOHBgkULsvffea6bdn4nGJ4waNcrkg+owpK1bt5ou38suu6zI5caNG2cGNnXr1k1+/vnnk27nTOcDAJyjaBsTyRAyAKjIjshXh7Q3VdlTFW7N6V4irwxpby4PlEZsPbthZPsYRgYA5UXRFqXy6KOPmoiDN99800yI37RpU4mX00FKo0ePlhYtWsjVV19tO33AgAGm81YzbzVKoUGDBqbwavXggw+aQ8b1eqVx7bXXygcffGByaZs3by6XX365XHLJJbbzP/74Y9m+fbsZvKSRDoMHD5Zly5aV+nwAgPPEI9BpCwAVq2+bCPlgWCfTcausGbfWz3r6pGGdzOWAsxtGRtEWAMqLoi1K5YEHHpBVq1ZJly5dzMT4jh07yltvvXVSwfa2224zw46+/fZb8fa2PL2OHTtm4gt0WJkOH9NoA41U0LgENX/+fJNL+9BDD5VqLXr7mmf72muvma7effv2yYYNG+Thhx+2XaZnz55mur0OX9Jis3b1aqxDac8HADhOXl6+bCzotG1YM1hCAyxFBQBAxbm4TYQsebSvvDa0ndk+t36o+az7ejoFW5RVG7uibfxehpEBQHnxVxBKrVGjRqZoO3ToUNOh+n//93+mS9VasL399ttlyZIl8scff0h4eOGhMRpfoLEId955p8m81VxbjSbQ7lull9fM2+joaLOfmZlpLq/RBZpTq5259vS0+vXryzXXXGP29XzNt33hhRfMR0msBeRTOdP5gCvJyM6Vn9ful9nrEiUpLctMidahI5phxyGOcAW7j6VJWpZlgEkMXbYAUGn094JBHerLle2i5eDBg1K3bl1+L8ZZCwv0k8a1gmXHkTRzxExObp74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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "MONTHLY PERFORMANCE INSIGHTS:\n",
- "Best Revenue Month: Month 9 ($303,793)\n",
- "Lowest Revenue Month: Month 4 ($253,795)\n",
- "Average Monthly Growth: -0.39%\n",
- "Revenue Volatility (Std Dev): $17,285\n"
- ]
- }
- ],
"source": [
- "# Monthly revenue trend visualization\n",
- "visualizer = MetricsVisualizer(business_report)\n",
- "revenue_fig = visualizer.plot_revenue_trend(figsize=(14, 8))\n",
- "plt.show()\n",
- "\n",
- "# Monthly trends analysis\n",
- "monthly_trends = business_report['monthly_trends']\n",
- "print(f\"\\nMONTHLY PERFORMANCE INSIGHTS:\")\n",
- "print(f\"Best Revenue Month: Month {monthly_trends.loc[monthly_trends['revenue'].idxmax(), 'month']} (${monthly_trends['revenue'].max():,.0f})\")\n",
- "print(f\"Lowest Revenue Month: Month {monthly_trends.loc[monthly_trends['revenue'].idxmin(), 'month']} (${monthly_trends['revenue'].min():,.0f})\")\n",
- "print(f\"Average Monthly Growth: {monthly_trends['revenue_growth'].mean():.2f}%\")\n",
- "print(f\"Revenue Volatility (Std Dev): ${monthly_trends['revenue'].std():,.0f}\")"
+ "### Revenue Performance Insights\n",
+ "\n",
+ "**Key Findings:**\n",
+ "- Revenue performance shows seasonal patterns with variations throughout the year\n",
+ "- Month-over-month growth rates indicate business volatility and trend directions\n",
+ "- Average order value trends reflect customer spending behavior changes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### 5.2 Product Category Performance {#product-analysis}\n",
+ "## 6. Product Category Performance {#product-analysis}\n",
"\n",
- "Understanding which product categories drive the most revenue and identifying growth opportunities."
+ "Analysis of product category revenue distribution, top performers, and market share insights."
]
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "TOP PRODUCT CATEGORIES - 2023\n",
- "==================================================\n",
- "electronics $ 1,401,359 ( 41.7%)\n",
- "home_garden $ 862,653 ( 25.7%)\n",
- "sports_outdoors $ 278,845 ( 8.3%)\n",
- "automotive $ 247,707 ( 7.4%)\n",
- "clothing_shoes_jewelry $ 232,745 ( 6.9%)\n",
- "toys_games $ 70,164 ( 2.1%)\n",
- "health_personal_care $ 65,370 ( 1.9%)\n",
- "tools_home_improvement $ 54,280 ( 1.6%)\n",
- "beauty_personal_care $ 49,213 ( 1.5%)\n",
- "books_media $ 38,559 ( 1.1%)\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABWsAAAPdCAYAAAD8kzq7AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA45pJREFUeJzs3Qm4jPX///H34XCsx05kJ0vInhJpUSFpFZXSnpKiVWkRFe3aS4uk0kpKkZJUkrSgIm0UKbtjK+v8r9fn+7/nd8+cOatzzH3OPB/XNVdm5p57PvcyI6953+9PUigUChkAAAAAAAAAIK6KxPftAQAAAAAAAABCWAsAAAAAAAAAAUBYCwAAAAAAAAABQFgLAAAAAAAAAAFAWAsAAAAAAAAAAUBYCwAAAAAAAAABQFgLAAAAAAAAAAFAWAsAAAAAAAAAAUBYCwAAAAAAAAABQFgLAEAhUrduXUtKSsrVbfny5RZEaWlpNn78eBs4cKC1b9/eUlJSIsY9fPjwLNcRCoXstddes549e1r16tWtePHiVrVqVTv22GNt7Nixtnv37jzf3xrngQceaD169LBx48bZrl27LKh07P1jP+qoo6ywWrt2rd13333WvXt3q1WrlpUuXdodK50X2u7bb7/dlixZEu9hFlrnn39+xLn2ySefWJBFf8aDuh/9t1KlSlmdOnXc990LL7yQ6+83FCxbt261d99912688Ub3XdaoUSMrX768+/vugAMOsK5du9pTTz1lO3fuzHQ9K1eutGuvvdaaN29uZcuWdd+RWtfll19uS5cuzZf3nj17tg0ePNiOPPJI95lLTU21YsWKuXW0bNnSLrvsMps3b16e7CcAKBBCAACg0KhTp05If73n5rZs2bJQEM2aNSvTcd9+++2Zvn7r1q2hE044IdN1tGvXLrR27dp83d+tWrUK/fPPP6Eg0rH3j7VLly6hIPCPSft6X+zZsyd05513hkqUKJGt47Vp06Z8OX/79+8fSmTafv/+0P4JsujPeFD3Y2a3I444IrRt27Z4Dxn57I033sjW+XDwwQeH/vzzz5jrmDJlSqhUqVIZvrZYsWKhsWPH5vl7X3TRRdl6/W233ZYv+w4AgiY53mExAADIO6riXLNmTcRjixcvjqgUVMVVu3bt0r1W1TNBV6RIEVfpo2rbnFSgffDBB+H7qvLR9mu//P777+6xr7/+2k455RT79NNP3XvklqqCqlSpYnv27HH73F+FtGDBAjvzzDNdBRH2r71791rfvn3tjTfeiHi8RIkS7lyoWLGibdiwwR0jVYjJ/7Ji5DVVx3v7WPR5wb5r2rSpHXzwwbZjxw774YcfIq6UmDNnjo0ZM8ZuvvnmuI4R+0/JkiWtbdu27u/LRYsW2V9//RV+Tn/39enTx7744ouI1+j774wzzghfBaIq7SOOOMJdeaC/G/W4bpdeeqnVrl3bTjjhhDx7b4+ucND/o+h7Qf8vM3/+fPf97RkxYoT16tXLrR8ACrV4p8UAACB/qfK0IFf2/fLLL6EHH3ww9Omnn7oq2ejtyayyNrqqsWXLlqEtW7a453bu3Jmu4vbFF1/cp6q76CrBm2++OV1l0Lx580JBU9gra0eOHJnuOAwYMCBd9eyuXbtchZiqvzZu3JgHW0BlbUFXUCpr/d+Du3fvDp155pnpqmtRuOm7q1GjRqHnn38+tH379vDj+rvu0ksvTfcduGDBgojX63s/o78PP/nkk1CRIkXCzzVs2DC0d+/ePHtvrf/7779Pt02LFy8OVa5cOeK1999/f57tMwAIKnrWAgAAR9UrkyZNstNPP91Vzag6Rr0P69evb2effbZ99NFHMV+nnrH+fonqkfjzzz9bv379XJWMqnIaNmxow4YNi6ioyy69dsiQIda5c+ccV/8+99xzEfevueYaK1OmjPuz+uENHTo04vlnn33W8pL6nyYnR17I9NVXX4X/rN5+0X2D33rrLfe4evXF6uk5c+ZMO+ecc6xBgwZuf6g6VMfrtNNOc6/1VyFFU+/fQw891L2uQoUKrjLq448/3uc+o7rvf17Lx6Lz4rrrrgtXs+oYqHewqqTUI/Hvv/92y8XqD/rHH39EvIf6Gma3R+3o0aMjHrvwwgvtySeftHLlykU8rmOlyrKFCxe6nokeVYepF6P210EHHWSVKlVyY1flWJMmTax///722WefxdwnRx99dLpjkNm+Un/RV155xVWP1axZ0x1fvU+LFi3s+uuvd/0kM6LnLr74YqtRo4b73Omzq3N+48aN2eoVq36S+vyeeOKJ4XXovRs3bmwXXXRRxLnrF2vds2bNcn2Bta9Ura71ZrRstNzug/Xr17vvow4dOoTPLx1H7Qf1p9YxVIXgvtL3pKrotW6NS99NesxP4/dvp77/YjnkkEPCy2g7tQ37qmjRoq6S3G/dunUZLq9zV+ewzm19P2oc9erVc4+pstFPlbs6pt6Y9R2vKwmiPf300xHbP2rUqIjn//33X9fDVJ8pXe2g3qb6POq74Y477shwP0R/B+j7Tt/bhx12mBu7bjoe06ZNS/fa7HxPZadH8aZNm1zf6y5duljlypXdeabzrVOnTvbQQw/Ztm3bLB40HlVVX3DBBe7vb4/Gp8rq6L+Lfvrpp/Cff/3114irPnT8zz333Ih1a7/6l/d/dvflvb3Xq0durIpx7Vc///oBoNCKd1oMAADiX1m7YcOG0NFHH51lv7g+ffqEduzYken6zznnnFDJkiUz7Nuq98rL7cmssrZ27doRyy5ZsiTieVUA+Z9PSUlJt337UlkrVapUiVjm7rvvzrCS6dxzz023z7x1alza/1kdIx3HWFWhsaqbdEtKSgpde+21mVbWZtVnNDvVo3fddVcoOTk507F7681qG3NSafvss8+m67mY097B9913X7bGNHz48Az3SUY3/75atWpV6NBDD810+bJly7q+ktF++OGHdOead6tfv36oa9eumR7D5cuXu89nVuMdMmRIREVdrPOjX79+6V43bty4mMtGjyO3+0A9p7PTQ/r000/P0bGPXucNN9yQrX6aqtL2f/9UrVo19N9//0Wse+HChen2W15U1spbb72V7nshmsZ4wQUXZLq/9P1w6623Rrxu8ODBEctMmzYt3bpVyes9r8/933//HVEtqSrMzN73gAMOCH3xxRfp1utfplq1aqHjjz8+w3FPmjQpx99TWVVSf/bZZ25smY39oIMOCi1dujQUNNEVqv7jpopY/3P6uyZa9Lnv/77bl/fOzE8//RTxWp1LQdy3AJDXqKwFAADWu3dvVwnnUWWVKsdUreSviHnttdds4MCBma7r5ZdfdpVWqoZRhZuqvPw98QYNGmT7gyq3/vzzz4jHDjzwwHQVOqow9VeNLVu2LM/GsGLFClfZ6adKtIxMmDDB7a/WrVu7/sPq3ee54oor3P736Lho/+o46Xh5dBx1PKOPydixYyMeUxXdcccd57b/gQcesPz08MMPu8pC/6z0qkRTBbGqL6OPi6q7dfNTlbf3uG7aP9mhfp1+quKtVq1arrZDVd7q4dizZ0/3/q1atYrocayqzu+++879WT0XNU4dHz8dU/92qIerqBek1umv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uTuuxx9/vK1duza8jp49e9ru3bvt448/tm+++cZatmzpHvvnn38yfW+Fs3///Xf4pvePNmLEiIhlNFGYZ9q0aXbOOefYgAED7IcffrAnnnjCHnroITdeAAAAAACAgiw53gMAgm7SpElWrFgxK0yGDBliX331lU2YMMGF61dddZVNnz7d9u7d654/++yzI5Z/8MEH7bnnnnMTdR177LEu7P3ll1/cY4cccohbRtWvCk4VoB5wwAEZvndKSkqmz0vZsmUzXEZjVpiusFbq169vN910k91zzz02cOBA2h4AAAAAAIACi8paIAsVK1Z04WFh8t1339l5551nXbp0sXLlytnRRx/tws4SJUqkW1bVtmPHjnXLqXpWKlWqZI0bN7YXX3zRtm3b5ipsn376aatataq1bds20/f+5JNP3HJ6/eWXX27r169Pt4yCX71H69atXYsDrd+zY8eOdOMsWbKkrVy50v7444992CsAAAAAAADxRVibYBR6XXnllS54U6/RW2+91UKhkHtu48aNLsBTj1L1Au3evburnvR76623rFmzZq46UpfGP/DAA5m+37PPPmvly5e3mTNnuvtvvvmmtWjRwoVrCuPUC1VhX3ZbE9x9991WrVo1t05dKq/tuf76612gWrNmTRs3blzE61asWGFnnnmmW17LqMfq8uXLw8/v2bPHrrnmGve8xnPDDTeE90dGbRBU2dmuXbtw9aeqUNesWZPp+BUwbt68OeIWT0cccYTbV1OnTs1wGT1XpkwZF4yqzcCHH37ozhlR9epHH33kQl/tBy2j6ltV5+r8yawFggJenQ8Kh2fPnu3OMx0Hj6p8X331Vdf/9rLLLnPHXMfFc8IJJ7hqZ61DlcDqneudh2qZAAAAAAAAUFAR1iaY8ePHW3JysrsE/uGHH3YBmwJVLxD9+uuv7Z133rG5c+e60LJHjx62a9cu97z6kir47Nu3r+tlqkmoFPa+8MILMd/r3nvvtaFDh9qMGTPcpfMK0s466yy78MILbcmSJa7C8rTTTksXjmZEvVFXrVpln376qRv37bff7nqkKhzU5Fe6LF7hniosReNWsKcw8bPPPrM5c+a48FGBodebVSGfxv/888+73qwbNmywyZMnZzoOrXfkyJG2cOFCe/vtt134q32XmVGjRrmA3LvVqlXL4kn7r0+fPq4dgsJTTdb11FNPRSyj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XWVpaWkRy82fP9+OPfZYK1++vFWoUMFOOOEEW7hwYcQyixYtss6dO1uJEiWsVq1adu+99+bRlgMAAAAAAOSdQh/WfvLJJy4U2rRpUyDWEw8a99tvvx3vYaAAW7dunfXv398FphMnTnSTcfXu3dt27twZXkbh7N9//x2+ablYbrjhBqtRo0aW77lq1Sp3u//+++2HH36wF154waZPn24XXXRReBm1K9D7alzz5s2zzz//3MqWLesC2127drllNm/ebMcff7zVqVPHvvnmG7vvvvts+PDhNnbs2DzZNwAAAAAAAHkl2QLkqKOOchV3Y8aMifdQChUFZ6o4RN5TiH/00Ufbxo0bXWVnYTVkyBD76quvbMKECe7zqQpXBad79+4NL5OSkmIHHHBApuuZNm2azZgxw9566y3358w0b97cLedp0KCB3XXXXdavXz/bvXu3JScn208//eQqcEeMGOEqZuX222+3Qw45xP744w8XKr/88ssuVH7++eetePHi1qxZM1fR++CDD9qll166z/sGAAAAAAAgrxT6ylqYC9AUpO1v/qpLFGzfffednXfeedalSxcrV66cC6jvuece11bAH1xXrVrVtS24/PLLbf369RHrWL16tV1yySUu8C1VqlSuxqEWCKmpqS6oFb1XpUqV7LnnnnPn27///uv+3LRpU6tbt65bZu7cuXbkkUe6oNajytulS5e6kB0AAAAAACAoigSp5+Xs2bPt4YcfDve8XL58uXvs0EMPdWFj9erVbejQoa6qzt//UlV+CokUHHXq1Mn1sMyIqu1OOukkV2launRpV2X3/vvvZ3ucuoy6Xbt2Lmzq2LGjC3z8nnzySVcBqGBIQZKCKT9t19NPP209e/Z061CopDDp119/dZXFGpPW+9tvv0W8bsqUKdamTRu3jfXr17c77rgjYj9ktw2C9qnuv/76666Hp3qBtm/f3n7++We337RtZcqUse7du9vatWsjjs8pp5zi3rdKlSouMBswYEBEIKvxX3nllTZ48GCrXLmyC8Qks2OoS9F1Sby/QlNOPvlku/DCC7O9/fm1X7XeZ5991k499VS33oMOOsjeeeed8L5UaCk6n7RsRpNv6TzV5fj+W0FyxBFH2Lhx42zq1Kkxn1crghdffNFmzpzpQlwdc51De/bscc9rwi7tG50zOsdy24ph5MiREdWwanmgkPil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QOH2zao91rhJ0/8LahOQ+nSvXr3aVdoCAAAAAADs97BWafPy5cszfF7PBSGJBpC/Nu8qYpUrVbJEVqVKlfAvcQAAAAAAAPs9rD3xxBNdb9pXX3013XOvvfaaPfbYY/RvBBJCkhUpkvml/+eff74VZkWK5OprFAAAAAAAIJ1cpQyjR4+2+vXr2znnnGMHHnigHXXUUe6mP5999tnuOS0DALGot2us23333RdeZsOGDe47RlX66pF90UUX2datWzNd79ixY913kV6j9al3dizvvfeedejQwUqWLGkVKlSwU045JeZy69evt5o1a2a6LgAAAAAAgLiGtbrs99tvv3UT67Ro0cL1a9RNf37ooYfsm2++scqVK+fZIAEULOvWrbP+/ftb7dq1beLEidawYUPXy3rnzp3u+b///jvi9vzzz7tA9PTTTw+vQ0Htjz/+aB9++KFNnTrVPv30U7v00kszfd/t27dbt27d7Oabb85wmbfeesvOPfdcu+CCC2zhwoU2Z84c9yNTLAqIDznkkFzvBwAAAAAAgJxItlwqUaKEXX311e6GwkNVia1atbIxY8bEeygowIYMGWJfffWVTZgwwZ1LV111lU2fPt327t3rnj/ggAMilp8yZYodffTRripflixZ4pafP3++tWvXzj2m1is9evSw+++/32rUqBHzfQcPHuz++8knn8R8fvfu3e47SxW8CmI9Bx98cLpln3zySVdNe9ttt9m0adNyvS8AAAAAAACyi2aLAPLcd999Z+edd5516dLFTUioIPaee+5xP/JEU1W+2hL4w9O5c+e61gdeUCtdu3Z1/WHnzZuX63HpioC//vrLrad169ZWvXp16969u/3www8Ryy1evNhGjBhhL774Ij1pAQAAAADAfpOrFOKYY47J9Hbssce6Scguu+wyNwmZqtkQfJoIavbs2fbwww+He4guX77cPXbooYdaSkqKC7eGDh0aPqYKsypVqmQ7duyIWJd6gOpSc9Gl5grrypYt63qJtm3b1r7++utsjemZZ56xWrVqWalSpezUU091rTcU4nl+++03O/nkk61atWpWpkwZa9++vX300UcR66hbt67deeedLjzUMnXq1LF33nnH1q5d616rx3Spe/SYPv/8c+vcubPra6oxqDp027Zt4eefeOIJO+igg1wAqfc/44wzMtwO7Z/NmzdH3AqzI444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I0a4PyclJdngwYPdLaPK2zvvvDPvRgkAAAAAAAAAhVy2w9rjjz/eypQp44LYG264wc466yxr06ZNxDIKcUuXLm1t27a1du3a5cd4AQAAAAAAACCxw9rDDz/c3WTbtm12+umnW/PmzfNzbAAAAAAAAACQMLId1vrdfvvteT8SAAAAAAAAAEhguQprPXPmzLFvv/3W0tLSbO/evelaItx66637Oj4AAAAAAAAASAi5Cms3bNhgJ554on311Veuh62CWf1XvD8T1gIAAAAAAABA9hWxXLj++utt0aJF9sorr9jvv//uwtkPPvjAfv75ZxswYIC1atXKVq1alZtVAwAAAAAAAEBCylVY+/7779tll11mffr0sbJly/5vRUWKWMOGDe3xxx+3unXr2uDBg/N6rAAAAAAAAABQaOUqrN20aZM1a9bM/blMmTLuv1u3bg0/f/zxx7tKWwAAAAAAAABAPoa1NWrUsH/++cf9OSUlxapWrWoLFy4MP//XX3+5nrUAAAAAAAAAgHycYOzII4+0Dz/80IYNG+buqx3Cvffea0WLFrW9e/famDFj7IQTTsjNqgEAAAAAAAAgISWFNDtYDn3//fcurB04cKCrrN24caP17t3bPv7443CYO3HiRKtevXp+jBko8DZv3mzlypWztLQ0S01NjfdwAAAAAAAAEtLmgGU0uQprM+tlq+pab9IxAAXjiwAAAAAAACARbQ5YRpOrNggZKV++fF6uDgAAAAAAAAASRrYnGPvll1+sRIkSdsMNN2S63PXXX28lS5a0ZcuW5cX4AAAAAAAAACAhZDusfeSRR+yAAw6wu+66K9Pl9LyW0/IAAAAAAAAAgDwOa2fMmGF9+/a1YsWKZbpc8eLF3XLTpk3L7qoBAAAAAAAAIOFlO6z9888/rXHjxtla9qCDDrI//vhjX8YFAAAAAAAAAAkl22FtSkqKbd26NVvLbtu2zVXYAgAAAAAAAADyOKxt0qSJffTRR9ladubMmda0adPsrhoAAAAAAAAAEl62w9o+ffrY1KlT7e233850uSlTprjltDwAAAAAAAAAII/D2iuuuMJat25tvXv3tssvv9zmzJljmzdvtlAo5P6r+3r8jDPOsJYtW7rlAQAAAAAAAADZkxRS2ppN69evt/79+9v7779vSUlJ6Z7Xqrp162YvvviiVa5cOburBRKOfuAoV66c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AIS1AAAAAAAAABAAhLUAAAAAAAAAEADJ8R4AAKDw27E7ZD+v32vb582L91ACITk52WrUqGHVq1eP91AAAAAAAAFCWAsAyDe794Zs7De7bNbfpey/omXNVt4Z7yEFSt26dW3gwIHWpEmTeA8FAAAAABAAhLUAgHwzZt5um7OtnvXp18sOa9nEKrQ71ZKSkizR7dy5037++WebNGmS3XbbbXbvvfe64BYAAAAAkNgIawEA+WLNtr02e02qDRx4lnXr3O5/D5YrF+9hBUblypWtTZs2dvnll9v7779vV1xxRbyHBAAAAACIMyYYAwDki29W7bGipSrYke2ax3sogVWiRAk74ogjbP78+fEeCgAAAAAgAAhrAQD5Im2HWWpqWStVskS8hxJo1apVs82bN8d7GAAAAACAACCsBQDki70hsyJFisZ7GIFXtGhR27t3b7yHAQAAAAAIAMJaAEDcnH/++fEeAgAAAAAAgUFYC5i5WdjHjBkT72EACW/Xrl124403WosWLax06dJWo0YNO++882zVqlUxl9+xY4e1atXKkpKSbMGCBeHHhw8f7h6LvmmdGXnhhRdivka3NWvWhJf75JNP3MRgKSkp1rBhQ/e66O+TWOsYOHBgnuwjAAAAAEDhRViLfKUQo3z58hb08Whyn0svvTQuYwISzbp166x///5Wu3Ztmzhxogs8e/fubTt37rTt27fbt99+a7feeqv776RJk2zp0qXWq1evmOu64YYbXKAb7brrrrO///474nbwwQe798lInz590r3mhBNOsC5duljVqlXdMsuWLbMTTzzRjj76aBcODx482C6++GL74IMPIr5P/Ov48MMP3eOZvTcAAAAAAJLMbgDMqlSpEu8hAAljyJAh9tVXX9mECRNcRftVV11l06dPd31by5UrFw43PY899pgdeuih9ueff7qA1zNt2jSbMWOGvfXWW+7PfmXKlHE3z8KFC23x4sX21FNPZTiukiVLuptn7dq19vHHH9tzzz0Xfkyvr1evnj3wwAPuftOmTe3zzz+3hx56yAW7sb5PRo8ebQ0aNHChLwAAAAAAmaGyFplSgNKpUydXjVqpUiXr2bOn/fbbb+FLgXVp76ZNm8LLq9JMjy1fvtw9f8EFF1haWlr4MmBdmiwbN250lzZXqFDBSpUqZd27d7dffvklXQXs1KlTrXHjxm6ZM844w1XdjR8/3l1mrNcq5NmzZ0/4dZmtN7Px+NsgnH322a7CLvrS7MqVK9uLL77o7itUGjVqlAttFO60bNnS/l97dwEmZbn+D/whBAxAMVAEG7C7lWMrdh7j2I151GO3qEfF7s5jHfXYXagYGMcusLsDDJSa/3U/5z/7m112YYllXuDzua4Rd+add56dfWb23e/c7/3cdtttTfiTgMnHK6+8kl+nEV5GOBtVqqeddlpq06ZNvduXX7OVVfHffPNN2n333XPgG6/1MbniiitSt27dUo8ePRo9zni9l997yp577rm05ppr1touQtq4vj5RLXz99denXXbZJX8PAAAAMDrCWkbrt99+SwcddFB66aWX0mOPPZaaN2+eNt1000atXL7iiivmALRdu3Y1pwPHqcnlRYVin3fffXcOOUqlUlpvvfVyKFoWwex5552Xbr755hwaR9gaj33//ffnS4Q0l156aa2QdHT7Hd14Km277bbpnnvuSb/++mvNdXGKc4wnHj9EUBtBTlTZvfXWW7lScLvttktPPvlkg301Bw8eXOsCU6qVVlopXX311fnDmDH5448/cg/bbbbZJr92Q7yu47Xeq1evtPTSSzdqHzfccEPaddddx2qcUVEbH95UVtt+/fXXqWPHjrW2i6/jNT1kyJBR9nHnnXfmD7QspAYAAEBjaIPAaG2++ea1vr7qqqvyKb5xOvGYtGrVKlfNRTXZrLPOWnN9VLpGmPrMM8/kADVEkNKlS5ccbJT7OkbAevHFF+fTh0NUt0VAGxV1cXpz9J+Miry+ffvmStjG7Le+8dQVVXKxCNEdd9yRtt9++3zdjTfemHtmtm3bNgev//znP9Ojjz6aVlhhhXz7PPPMk0+FjvC4vlOdI9w94YQTGvWcw+TurLPOyq+h+JAjKvWjIj+C17hUiveALbfcMoez8V5Qdv7556dffvklHXHEEY16vHgtx/bRJ7ex4sOed955J7/njI8IfKPCv76+ugAAAFCXylpGKwLQqGiLMDKq2qJdQIjekeMqApCWLVum5ZZbrua6aLEQ7Q7itrI4/bgc1Jar1+LxK/tQxnXlVdobu98xiX1EQBRBb7m6+K677soVt+H999/PVbZrrbVWTV/MuESlbblFRF0RKsWp3OXLZ5991ujxwOQmPgw5+eST8/tLfAiy11575Qr+yy67bJSg9pNPPsk9bMtVtSH6yEaY2rp16/x6jQXKQlTZ1hfIRguEaOFStyJ2dOI+iy++eFpqqaVqXR8f9MQHRpXi6xhfZQVuiLHHhzqxABkAAAA0hspaRmvDDTdMc845Z7r88stzZVi0P1h44YVzH8ZyaBpVb2WVbQzG11RTTVXr66iIre+6xrRkGFsRzEaFbATBERRFCNOzZ898W7k9wn333Zdmn332WveL8Kg+cX1Dt8GULPrQ7rnnnnmhsH79+qU99tijJqiNMDcq5+NDl0rRHuWkk06q+frLL7/MFfH//ve/a31YEz766KO8j6i6b6x4jd9yyy25Ir6uqKaPNiyV4j2iXGVfKVo9zDLLLGn99ddv9GMDAAAwZRPW0qAffvghDRgwIAe15UV54lT/svKK59H7NRb0CnE6c91WCJULgJVXTx8+fHh6/vnna9oVlB8rWhuMq8bst77x1CfuH+0TIvyJVeajhUI5KI59RfAa1cVWd4exF+0PNtlkk1y5Gq/HCFOj3/PRRx+dg9poefLyyy/nnrZxe/SJDR06dMiv4TnmmKPW/sofHEUlfufOnUdp3TLbbLPlVgSNFa/7eC+JPtR1RauGCy64IB166KF50bCo8o1gNz68qRQfIkVYG5W+Uf0LAAAAjeEvSBoUAWxUtMWpyRF2RDh5+OGH19wepx5HoHn88cfnU5oHDhyYzjzzzFr7iLYFUaUWi5MttthiubVB165d08Ybb5xXco8er9EHNvYbVapx/bhqzH7rG09DK8nHwkKxgFh8XxEmlcV+Y2GyCJwikFl55ZVza4PolRunQo9NX0yYEkXYGm0PonI22ozE4oERfO633365RUi5CjbC3ErxOlx11VUb/Tjx+rzmmmvy4l4tWrQY5fZ43Oh7HdW35RYv5T6zm222Wa76rWvuuefOwWy8/s8999wcDkfLhKjsrRTtD+I9M74vAAAAaCw9a2lQ8+bN080335z++9//5tYHEU6cfvrpNbdHpelNN92U3n333bToooum0047rdapyeUK1ahEiwXAohK3T58++fqoOItekNFHMk4fjlYKcWpx3TYHY2tM+21oPA21QoiF1CLsjdXrK5144onpmGOOyadJR0VvtEiIACeCHGD04r0k3lcGDx6cF/GLgDZeixGoRmgar9v6Lg0FteX71A134z0s9h0fJtUnQtr40KluO5Nnn322pmd1fWIcr7zySl5sMPpURxhc19prr53H1K1bt0Y+KwAAAJBSs1Jlw1FgooiQqn379mnQ4W1Tu9bNqj0caBI3vTEsPThkkXTt2cf/35Xda7cjiKAzql+rIdqbRG/c+Lea7rnnnvxB0+23317VcQAAAEzRGc2gQbUWt64WbRAAaBLTtUpp8Le/pqFDh6VWreqvmq9WUBtuvfXWVAQ//vhjbq8CAAAA2iAA0CSWnK1FGv7bj6n/a+9WeyiFFQuZRduFJZZYotpDAQAAoACEtQA0idnbNU9Lth+czr/yxvTw0y+nX379Pfdx5X+Lnw0YMCD30/32229z32sAAADQsxaqQM9aphR/DC+lM54bnl74sW0qtW6XmndcMC/8NaWLitow/fTTp/333z8ts8wy1R4SAADAFGmwnrUATCnatGyWju4xVfpxyJD0xje/pt+2PLfaQyqEli1bpk6dOqUFFxReAwAA8H+EtQA0uQ5TN0urzNUypfXWq/ZQAAAAoLCU8wAAAAAAFICwFgAAAACgAIS1AAAAAAAFIKwFAAAAACgAYS0AAAAAQAEIawEAAAAACkBYCwAAAABQAMJaAAAAAIACENYCAAAAABSAsBYAAAAAoACEtQAAAAAABSCsBQAAAAAoAGEtAAAAAEABCGsBAAAAAApAWAsAAAAAUADCWgAAAACAAhDWAgAAAAAUgLAWAAAAAKAAhLUAAAAAAAXQstoDgCnaEZ+n1K5dtUcBAAAAQAGorAUAAAAAKABhLQAAAABAAQhrAQAAAAAKQFgLAAAAAFAAwloAAAAAgAIQ1gIAAAAAFICwFgAAAACgAIS1AAAAAAAFIKwFAAAAACgAYS0AAAAAQAEIawEAAAAACkBYCwAAAABQAMJaAAAAAIACENYCAAAAABSAsBYAAAAAoABaVnsAMEU7pXNKrZtVexQw+Th+ULVHAAAAAONMZS0AAAAAQAEIawEAAAAACkBYCwAAAABQAMJaAAAAAIACENYCAAAAABSAsBYAAAAAoACEtQAAAAAABSCsBQAAAAAoAGEtAAAAAEABCGsBAAAAAApAWAsAAAAAUADCWgAAAACAAhDWAgAAAAAUgLAWAAAAAKAAhLUAAAAAAAUgrAUAAAAAKABhLQAAAABAAQhrAQAAAAAKQFgLAAAAAFAAwloAAAAAgAJoWe0BAMD4+GLwyNTv0xHpre9K6Y/fDqn2cAqhefPmaeaZZ04rrLBCWmaZZVKrVq2qPSQAAAAaQVgLwCTrpS9HpJNfaJ1aztA5LbbEYmmmzp1Ts2bN0pRu+PDh6ZNPPklPPvlkWnTRRdOxxx6bWrduXe1hAQAAMAbCWgAmSb8OLaV/Pj9VWmrVddOhu22ZWrWaKqXu61Z7WIXy+uuvp969e6cbbrgh7bLLLtUeDgAAAGOgZy0Ak6TnPx+Rhk89c9r7bxv9L6hlFFFVu+aaa6Z+/fqlUqlU7eEAAAAwBsJaACZJH/w0MnXu0iV1mL5ttYdS+MD2+++/T7/88ku1hwIAAMAYCGsBmCT9OTylNm3aVHsYhTf11FPnf//8889qDwUAAIAxENYCMMka02JiO+20U5rSWXANAABg0iGsBWCKMWzYsHTYYYelRRZZJE077bSpU6dOaYcddkhffvllzTZPPPFEDjjru7z44os12z300ENp+eWXT23btk0zzzxz2nzzzdPHH3882scfOHBg2njjjdNMM82U2rVrl1ZeeeXUt2/ferf94YcfUufOnfPj/vzzz2Mc39dffz1BniMAAACqR1jLZCWCkggtXn311WoPBaiS6M+64447pjnmmCPddNNNab755kt//etf09ChQ9Pvv/+eXn755XTMMcfkf2+//fY0YMCAtNFGG9Xcf8UVV0xfffVVrctuu+2W5p577rT00kvnbT766KMcuq6++ur5/SaC23jczTbbbLRj22CDDdLw4cPT448/nv773/+mxRZbLF9XX9C666675n6zDYlxV45xlllmGa/nDQAAgOoT1jKK448/Pi2++OKpSOJU5k022aTawwAmAQceeGDq379/+te//pXWW2+9dPnll6d55pknjRw5MrVv3z498sgjacstt0zdu3fPlbEXXHBBDk4//fTTfP9WrVqlWWedteYy44wzprvuuivtvPPONS0FYvsRI0akk046Kc0777xpySWXTAcffHAObqN6tz4R5r733nvp8MMPzyFs165d06mnnpoD5DfffLPWthdffHGupo19NiTC2cpxNm/uVzoAAMCkzl921CiVSrnii9HzPEGxvfLKK7m1wSqrrJLD2dVWWy2ddtppDS5GNmjQoBzCTj/99PXefvfdd+eWBBHWli211FI5HL366qtzaBv7iHB4zTXXTFNNNVW9+4nQNwLi6667Lv3222/5feTSSy/NoWvsr+ztt99OvXv3ztuNLoCND9Vmm222tNZaa6VnnnlmLJ4hAAAAikpYW3C33XZb7q0Yq3nHH/oRBMQf+eVK0xNOOCH3Sozeh7169cqn+ZbFyt/7779/DgIipIjeiJX9Fst9Dx944IEcFLRu3Tpdf/31eZ+vvfZaTR/Ea665JgeUUXEbpxXHdtHnMfbdGD/99FMOTmaYYYY0zTTTpHXXXTdXl42ukvecc85Jc801V83t1157ba5sK48pxh5eeOGFtMQSS+TvL05PjpCmrieffDItu+yyedwRbERVW2XYOi7P09NPP52fowiBol9lPP9x20svvVTvcxCPMXjw4FoXoGmstNJKOUS99957x7jtH3/8kXvYbrPNNvl1XJ8rr7wyrbPOOrl/bFm0RHj44YfTkUcemd8TIuj9/PPP0y233NLgY8X7yKOPPprfp+J9I95vzjrrrPTggw/m98fye0WM5fTTT8/vt/WJ97FLLrkk/ec//8mXLl26pFVXXTW3dQAAAGDSJqwtsOhBGH+077LLLumdd97JoWH0Q4zgNDz22GM110dfxui9GEFr2aGHHpr/kI+gM/6Ij76NETj8+OOPtR4nwss4FTf2FRVa//jHP9JCCy1U0wdxq622yvs5++yzcxVYBK133nlnDpEbI4LlCDGjOu25557L449Tkxs6VbiuOA04Tlnu2bNnzZiip+Svv/6aez0uuOCC+ZTkCHXrnjL8xRdf5MdaZpllcrgapxZH8BKnLo/P8xSnMG+77bY5vIlgNx4/bm+oou6UU07JFX7lS4QrQNOIADTet6IdQlSnxodBEW7WFe9B8d4S70nx3lCfCGCjH230j60UPWZ333333Bs33gPiQ6Fon7DFFlvUvEfXFdfvs88++YOhfv365Q+b4kO3DTfcML+vhSOOOCItsMACabvttmvw+4vq3D333DN/QBTvhVdddVX+N96jAQAAmLS1rPYAaFj88R4VoBHQzjnnnPm6yoA0goH4Iz2qVSNcjdNmDznkkHTiiSemIUOG5PAhqmKjkjVE38bo1RhhZWxXFveLkLZsuummSy1btsw9EMuil2N8XT7FNyq+olp1TCLYjZA2TtGNMCHccMMNOayMwDcW/RmTGE9UFkfFWeWY4nuLHpTx/USFWjwHEazstddeNdtcdNFF+bGiJ2VUtc0///x51feopDv22GPH63mK5yRuj32G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atWqVTrooIPS448/nq6//vocjD788MNp7733zr1dN9poo5pAtWfPnumII45I559/fmrZsmV67bXXUvPm/6vxeffdd3NbgUsvvTTNN9986c0330y77757+u2339IZZ5zR4NjGtN+y3r175/2VtW3btub/p5pqqrTDDjukJZdcMk0//fT5/rFtjOef//xnEzyjAFAdwlqmCPGJexzgAQDA5OjAAw9ML7zwQvrXv/6VzjnnnLT//vunBx98sKZn67PPPpt23HHHfPZd2GOPPXLoGvcph7Wxj7jf4YcfXrPf7t271/x/BK5xKYvq1qh4vfjii0cb1o5pv5Xh7KyzzlrvPuKx4lI255xzpieeeCL169ev0c8RAEwKtEGYzMXB2aGHHpo6dOiQD3zitP+yTz/9NG288cZpuummy6cibbnllvlT+LotAq666qo0xxxz5O3i0/cRI0akPn365P3NMsss6eSTT671mD///HPabbfd0swzz5z3G6c7xSffjXXSSSfl/cbBWuwnDuoqWxW8+OKLaa211kozzTRTat++fVpllVXSyy+/XGsfcdpUHDTGgWecalUeY5xKFadOxb7jFK4//vhjlMe/4oor0gILLJBPr5p//vnTRRddVHNbnPoV+7799tvzaVjTTDNNWmyxxXK1AAAAVMsrr7ySK0/j2DiOkeNY9bTTTsvHtGHFFVdMd999d/riiy9SqVTKFbgDBw5Ma6+9dr7922+/Tc8//3w+Do9t45g59hUVuqMzaNCg/LdGQ8Zmv3GsPuOMM+aK4NNPPz0NHz68wf2+//77OYyOfQHA5ERYO5m79tprc1gZB0gRsMapRY888kgOcSOo/fHHH9OTTz6Zr/vwww/TVlttVev+H3zwQXrggQfygdBNN92UrrzyyrT++uunzz//PN8vDgCjV1Tsv+yvf/1rPiiL+/33v//NpyqtscYa+bHGJE7TimA19hv3jZA4QtdKv/zyS64KiAO8/v37p65du6b11lsvX18pwuZNN900vfHGG2mXXXZJt9xyS74uTpN66aWX0myzzVYriC0//rHHHpvH8M477+RtjznmmPw8VjrqqKPSwQcfnF599dXUrVu3tM0224z2YPLPP/9MgwcPrnUBAIAJZaWVVkpXX311uvfee+u9PdoPRJ/a6FkbbRGiQvbCCy/MvWND/C0Q4ng52gvE8X/5OP69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09lnn53mm2++1KVLl1q361kLAAAAANQybEQpPfvtNGnj9dZOi3af+39BLeOtTZs2ae+9907TTDNNeuqpp0a5XVgLAAAAANTyxS+l9FuaJi0+/zzVHspkJyp4F1544TRw4MBRbhPWAgAAAAC1/Dm8lFKzFmnaqdtUeyiTpaisLS9uVklYCwAAAACMk5122qnaQ5gkNdRWQlgLAAAAAEwwt99+e1p77bXTjDPOmEPJV199dazuf/PNN+f7bbLJJrWuL5VK6dhjj02zzTZbmnrqqdOaa66Z3nvvvVrbnHzyyWnFFVfMlavTTz99ox7vxhtvzG0Jpp122jTDDDPk/T7//PO1tplrrv8tsFZ5OfXUU2ttc8stt6TFF188P/acc86ZTj/99DS2hLVMME888USeqD///HOaVMX477zzzmoPAwAAAKCwvv/++7TjjjumOeaYI910001pvvnmS3/961/T0KFD8+2//fZbWnnlldNpp5021vv++OOP08EHH5x69Ogxym19+vRJ5513XrrkkktymBrh6jrrrJP++OOPmm1iDDGWvfbaq9GPOfvss6dzzz03vfHGG+npp5/OwWyEzd99912t7Xr37p2++uqrmst+++1Xc9sDDzyQtt1229SrV6/05ptvposuuiidffbZ6YILLhir719YS2FVI/yNF9q666470R4PAAAAYFJz4IEHpv79+6d//etfab311kuXX355mmeeedLIkSPz7dtvv32ugI0K1bExYsSIHHiecMIJeX91q2rPOeecdPTRR6eNN944Lbrooum6665LX375Za3Cu7hvjG+RRRZp9OOussoqaY011siPudBCC6WzzjorDR48OL3++uu1tmvbtm2addZZay4RFpfFcxGVwBHWxn7WX3/9dMQRR+TAOsbeWMJaJnnlT20mhHihtW7deoLtDwAAAGBy88orr6Qddtghh5zt27dPq622Wg4l27QZv8XIevfunWaZZZa06667jnLbRx99lL7++utaAXA89nLLLZeee+65NCFzpssuuyzve7HFFqt1W7Q9iNYOSyyxRG5xMHz48JrbYrGwut9/tGr4/PPP0yeffNLoxxfWMlbiE5JTTjklzT333HnCxaS97bbbGtw+SsejbD227dKlS9p///1zKXzlRD7ssMPybRGSRtn8lVdemUve44UeoldIVNiWG1avuuqqad99900HHHBAmmmmmXK5e3jyySfTsssum/cTvUsOP/zwWi+auF88/qGHHpo6dOiQg9njjz9+tG0Q4gW1zTbb5O3j05Kll166pmfJa6+9lscYn6q0a9cuLbXUUumll16q93mI7zM+kam8AAAAAEyKVlpppXT11Vene++9d4LtMzKkK6+8Mlfp1ieC2tCxY8da18fX5dvGx3333Zemm266HLhG+4JHHnkk505lkSlFL92+ffumPffcM/3zn//MGVNZ5FPRq/exxx7L+dnAgQPTmWeeWXMmd2O1HO/vhClKBLXXX3997g3StWvX9NRTT6XtttsuzTzzzKNs+8EHH6SePXumk046KV111VW5z0eErHGJF3SIT2Hi04/oNxLBb3xKEn1PIrz9z3/+kzbffPM0YMCAHIZG4Ft27bXX5t4jzzzzTP76iy++yGX3EehGCfy7776bdt999/wCqwxk434HHXRQDlzjcWP7eINZa621Rhn/r7/+mj8hir4ld999dw53X3755ZqS/ijLj09SLr744tSiRYvcLHuqqaZq8HmLMnwAAACASV20CYiwMtoNRP4TmUic/h+XcfHLL7/k1gmXX355rYB0Yooiv/g+IpeKcWy55ZY5P4pK3xB5Ulm0YGjVqlUObSPzicLByKHiudhggw3SsGHDcpb197//PedSzZs3vl5WWEujRXVovBAfffTRtMIKK+TrogdHfPJx6aWXpj322KPW9jFZI9CMCtgQ4W6EshGARsD56aef5lXy4pOKcgl7ZT+SqGYN8aKou3pf7CuaSpcdddRROeCNps1RHTv//PPnniVRtRs9UsovingxHXfccTX7iO3jE4/6wtpYCTAC5hdffLFmLFH5WxbjP+SQQ/JjlffXkOhRUvmijsraGC8AAADApCbOPj755JPzJfq0xvo/EdxG/lI3H2qMCDnjLOsNN9yw5rpysVzLli1zIV8U0YVvvvkmn1FdFl8vvvjiE+R7ivwpsp/ll18+5zxR6RuZTn2i/UKc0R3j7t69e86johVEZGdR6RuFjZE5hbr9d0dHWEujvf/+++n3338fJdiMXh5RYVpXtAmIRsw33HBDzXXRUDlebFFBGyvsRUVqhLdjK1oOVHrnnXdygBwvjLKomI3q2GhlEKsTlsPaSvHi/vbbb+t9jPg0Jb6vclBbV4Svu+22W24gHWFzrDQ477zz1rtt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CwAAAABQAMJaAAAAAIACENYCAAAAABSAsBYAAAAAoACEtQAAAAAABSCsBQAAAAAoAGEtAAAAAEABtKz2AGBKVCqV8r+DBw+u9lAAAAAApliD/382U85qqk1YC1Xwww8/5H+7dOlS7aEAAAAATPF++eWX1L59+2oPQ1gL1dChQ4f876efflqINwIm308H4wOBzz77LLVr167aw2EyZI4xMZhnNDVzjInBPKOpmWNMDJPrPCuVSjmo7dSpUyoCYS1UQfPm/2sXHUHt5PQGRzHFHDPPaErmGBODeUZTM8eYGMwzmpo5xsQwOc6z9gUqpLPAGAAAAABAAQhrAQAAAAAKQFgLVdC6det03HHH5X+hqZhnNDVzjInBPKOpmWNMDOYZTc0cY2IwzyaOZqXoogsAAAAAQFWprAUAAAAAKABhLQAAAABAAQhrAQAAAAAKQFgLE8lOO+1U7SFQZeYATc0cY2Iwz2hq5hgTirnExGCe0dTMsSmPsBaqKNb3O/bYY9Nss82Wpp566rTmmmum9957r9rDYiIZNmxYOuyww9IiiyySpp122tSpU6e0ww47pC+//LLWdj/++GPadtttU7t27dL000+fdt111/Trr7/W2ub1119PPXr0SG3atEldunRJffr0GePjf/rpp2n99ddP00wzTZplllnSIYcckoYPH15rmyeeeCItueSSebXP+eabL11zzTWj7OfCCy9Mc801V37s5ZZbLr3wwgvj/JzQtHr16pWaNWuWzjnnnFrXm2NMCO+8807aaKONUvv27fN72jLLLJPnQNkff/yR9tlnnzTjjDOm6aabLm2++ebpm2++Ges5U9eEmr+33nprmn/++fM28b58//33j/dzwoQTP9N99903de7cOR8zLbjggumSSy6ptY05RmPcfvvtae21187zJH4nvvrqq42635h+fo05rm/MXKprQs3rxvy+pbrz7PLLL8/vIzPMMEO+xByqe8xjnjG+72VlN998c77fJptsUut6c6wgSkCT+e6770o77LBDqUuXLqVWrVqV5p133tIWW2xR+vPPP/Ptp556aql9+/alO++8s/Taa6+VNtpoo9Lcc89dGjJkSLWHzkSYAz///HNpzTXXLP373/8uvfvuu6XnnnuutOyyy5aWWmqpWvvo2bNnabHFFiv179+/1K9fv9J8881X2mabbWpuHzRoUKljx46lbbfdtvTmm2+WbrrpptLUU09duvTSSxsc1/Dhw0sLL7xwfvxXXnmldP/995dmmmmm0hFHHFGzzYcffliaZpppSgcddFDp7bffLp1//vmlFi1alB588MGabW6++eb8fV111VWlt956q7T77ruXpp9++tI333wzwZ9Lxu19puz222/P86hTp06ls88+u9Zt5hjjO8/ef//9UocOHUqHHHJI6eWXX85f33XXXbV+Tr169cr3f+yxx0ovvfRSafnlly+tuOKKYzVn6jMh5u8zzzyT516fPn3yXDz66KNLU001VemNN96YwM8k4zrH4rUf1/Xt27f00Ucf5Z9f/MxinpWZYzRmLl133XWlE044oXT55ZeX4s/hmAtj0pifX2OO68c0l+ozIeZ1Y37fUv159re//a104YUX5m3feeed0k477ZTn1Oeff16zjXk25WiKOVYWv0dnn332Uo8ePUobb7xxrdvMsWIQ1kIT2m677UrdunUrPfHEE6VNNtmk9Pjjj5cOPfTQ/EY3cuTI0qyzzlo6/fTTa7aP8K5169b5IJ/Jfw7U54UXXsi/bD/55JP8dfwSiq9ffPHFmm0eeOCBUrNmzUpffPFF/vqiiy4qzTDDDLXCucMOO6zUvXv3BscVv/yaN29e+vrrr2uuu/jii0vt2rWr2U+Mc6GFFqp1v6222qq0zjrr1Hwd4fI+++xT8/WIESNyGHjKKaeM1fNE086xOMiPA7IIEeacc85aYa05xoSYZ/Fzi20aEr/fIti49dZba66LP0Rj7sUHVY2dM3VNqPm75ZZbltZff/1a+15uueVKe+6551g9TzTdHIv3it69e9e6z5JLLlk66qij8v+bY4ztsVeEFY0NOMb082vMcX1j5lJdE2peN+b3LdWfZ3VFeNW2bdvStddem782z6YsTTXHYl5FSHrFFVeUdtxxx1phrTlWHNogQBN65ZVX8mntq6yySj4tdLXVVkunnXZaPn3qo48+Sl9//XU+raAstolTfJ977rmqjpuJMwfqM2jQoHw6SpxOEmIuxP8vvfTSNdvEnGnevHl6/vnna7b5y1/+klq1alWzzTrrrJMGDBiQfvrpp3ofJ+4Tp/B17Nix1n0GDx6c3nrrrZptKudneZvy/Bw6dGj673//W2ubGFd8bQ4XZ46NHDkybb/99vk0ooUWWmiU+5tjjO88izl23333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eRahYPzxQ3HmWMyVnXbaqdSpU6c8x7p3714688wz87FUmTlGY+ZS/J6p79grAtjKACM+IBibn19jjusbM5diLJW/CyfEvG7s71uqO8/iGG1M9zHPphxN9V42prDWHCuGZvGfalf3wpRgp512yov8MOWq5hyIlUT/+c9/prfffjufgsLkyRxjcp9nffv2TZtttln68MMPG2zBwaTPHKPac2mVVVbJpwYff/zxaWL66KOPUrdu3fLv0q5du07Ux2bcmWc0NXNsytOy2gMAoOndf//9OUgTotFUzDEm1jyLhaaEaDQVc4xBgwblhXbuu+++qsy/PfbYQ7gxBTDPaGrm2KRNZS0AAAAAQAHUXlIVAAAAAICqENYCAAAAABSAsBYAAAAAoACEtQAAAAAABSCsBQAAAAAoAGEtAAAAAEABCGsBAIBJznrrrZd23333em/7+OOP06qrrtrgfbfeeuu05ZZbNuHoAADGjbAWAACq4JprrknNmjWrubRs2TLNPvvsaaeddkpffPFFtYdXaM8880x6+OGH02GHHTZO94/7/ec//0mvvfbaBB8bAMD4aDle9wYAAMZL796909xzz53++OOP1L9//xziPv300+nNN99Mbdq0qfbwCun0009Pa6yxRppvvvnqvX3YsGFp+PDhacSIEalFixaj3L7EEkukpZdeOp155pnpuuuumwgjBgBoHJW1AABQReuuu27abrvt0m677ZauuOKKdPDBB6cPPvgg3X333dUeWiF9++236b777qu3jcE999yTFlhggdS9e/dcfduqVavUtWvX/LzWFfe//fbb06+//jqRRg4AMGbCWgAAKJAePXrkfyOwrfTuu++mLbbYInXo0CFX3EZlaGWg+9JLL+V2Ctdee+0o+3zooYfybffee2/NddFqYZdddkkdO3ZMrVu3TgsttFC66qqrat3viSeeyPe75ZZb0sknn5w6d+6cHzuqWt9///1a284111y5hUNd0Tu2bv/YP//8Mx133HG5MjYeu0uXLunQQw/N149JBLVRNbvmmmvWun7gwIH5+Wnbtm0677zz0iKLLJK/n7XWWivfVldc/9tvv6VHHnlkjI8JADCxaIMAAAAFEotjhRlmmKHmurfeeiuttNJKuaft4YcfnqaddtocoG6yySa59+qmm26aw9t55pknX7/jjjvW2ue///3vvL911lknf/3NN9+k5ZdfPgex++67b5p55pnTAw88kHbdddc0ePDgdMABB9S6/6mnnpqaN2+eq34HDRqU+vTpk7bddtv0/PPPj/X3N3LkyLTRRhvlVg977LFHroR944030tlnn51D1TvvvHO093/22WfTjDPOmOacc85a10foOnTo0Hz/+Pe2227Lz0Pd56JswQUXTFNPPXWuwI3nDwCgCIS1AABQRRF+fv/997lnbYSfJ5xwQq423WCDDWq2+fvf/57mmGOO9OKLL+bbwt57751WXnnlvFhWOWzcaqut0hlnnJF++umnmrA3gss77rgjbbbZZmmqqabK1x111FG5n2uEpBF8hl69eqVtttkmHX/88WnPPffMQWZZjO3VV1/NbQVC7DvGFH11F1544bH6fm+88cb06KOPpieffDKPvyz2E2OIMHbFFVds8P5RYRxVvHWVe9P+/vvvebG2MYltoqL37bffHqvxAwA0JW0QAACgiuJ0/qhsjeAwTuOPqtlobxAtB8KPP/6YHn/88dxj9ZdffsnBblx++OGHXCn73nvv5ZYG5bA2FteKXqxlDz/8cPr555/zbaFUKuVq3A033DD/f3l/cYn9RXj88ssv1xrjzjvvXBPUVrZq+PDDD8f6+7311ltzNe38889f67FXX331fHvfvn1He//4viurjss23njjfH20aIgq3ehFG1XCoxPbx2MDABSFyloAAKiiCy+8MHXr1i2HpNFj9amnnqqpng3RGzZC1WOOOSZfGlp0K1okLLbYYjkEjbYH0dIgxP/PNNNMNWHod999l8Pbyy67LF8a2l+lqOqtVA5Lo4J3bEW4/M477+SAujGPXZ94PuqabbbZcuVxVCZH9W6EsNHfN8Lbs846K/fkrW8/0QoCAKAohLUAAFBFyy67bO43G6IHbbQG+Nvf/pYGDBiQpptuutzjNUS/2HLP2bpioa6yqKCNxcAirIzFtqJKN9oblFsDlPe33XbbNdjPddFFF623xcDoQtOGQs9ot1B5/3j8WPwrAtT6RIXx6ETbhoZC4nnnnTddd911ue9vtH2IwLp37965ejnaHdStyI39dO3adbSPBwAwMQlrAQCgICLUPOWUU9Jqq62WLrjggryYWCwaFqLfbISOYxJhbVSXRquDjh075lYAW2+9dc3tUdEaIW6EqI3ZX2NFEBoVu3V98sknNd9DOVB97bXXcsXruFS1RuVwfG9j0q5du7TPPvvkitvNN988LyRW2Qd4+PDh6bPPPsuLnQEAFIWetQAAUCCrrrpqrrY955xz8sJes8wyS77u0ksvTV999dUo20dbg0rRDzYqV6P9QVwirPzLX/5SKxCO8DICz1ggbEz7a6wIYfv3758XNCu79957cyBaKXrvRo/dyy+/fJR9DBkyJP3222+jfZwVVlghV8TW7ZfbULVt9PANlQumhai0jed3dIuZAQBMbCprAQCgYA455JD017/+NV1zzTWpV69eua9ttEeIEHb33XfPlarffPNNeu6559Lnn3+eK1XrVtcee+yxqU2bNrkVQPPmtWs0Tj311LyQ13LLLZf3t+CCC+aFzGJhsUcffTT//9jabbfd0m233ZZ69uyZA9kPPvggXX/99TnErbT99tunW265JX9fMYaVVlopV/m+++67+fqHHnqopi1EfdZff/3c0iHGuccee9Rcf95556Unnngit3yIqtoIb6PVQlQqx/O1/PLL19rPI488kqaZZpq01lprjfX3CgDQVFTWAgBAwUS/1Qg5zzjjjBxkRpj60ksv5aAyAtw4vf+SSy7JIWyEsnVFWBu9YX///ff8/3VFe4QXXngh7bzzzun2229P++67bzr33HNzSHvaaaeN05ijn+6ZZ56ZBg4cmA444IAcJEdlbefOnWttF2O+8847c2D8xhtv5F680bYhFgf7+9//nhdbG50Y+3rrrZeD3UrR6mHhhRfOAW0E1K+//no6/fTTc0uJhx9+OE077bS1tr/11lvz8xwtIQAAiqJZqb6lVAEAAAqqX79+uTVEVOPWt0BYLDC200475Urb+rz66qtpySWXzJXEiy+++EQYMQBA46isBQAAJik9evRIa6+9durTp8843T+qerfYYgtBLQBQOCprAQCAycrPP/+cWy1EdS0AwKREWAsAAAAAUADaIAAAAAAAFICwFgAAAACgAIS1AAAAAAAFIKwFAAAAACgAYS0AAAAAQAEIawEAAAAACkBYCwAAAABQAMJaAAAAAIACENYCAAAAAKTq+3+dZDb7KuWdHQAAAABJRU5ErkJggg==",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "CATEGORY INSIGHTS:\n",
- "Total Product Categories: 13\n",
- "Top 5 Categories Revenue Share: 90.0%\n",
- "Market Concentration: High\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "# Product category analysis\n",
- "if 'error' not in business_report['product_performance']:\n",
- " product_data = business_report['product_performance']\n",
- " \n",
- " print(f\"TOP PRODUCT CATEGORIES - {ANALYSIS_YEAR}\")\n",
+ "# Analyze product category performance\n",
+ "print(f\"Analyzing product performance for {ANALYSIS_YEAR}...\")\n",
+ "product_performance = metrics_calculator.analyze_product_performance(ANALYSIS_YEAR, top_n=13)\n",
+ "\n",
+ "if 'error' not in product_performance:\n",
+ " print(\"\\nTOP 10 PRODUCT CATEGORIES BY REVENUE:\")\n",
" print(\"=\" * 50)\n",
+ " top_categories = product_performance['top_categories'].head(10)\n",
" \n",
- " top_categories = product_data['top_categories'].head(10)\n",
" for idx, row in top_categories.iterrows():\n",
- " print(f\"{row['product_category_name']:<25} ${row['total_revenue']:>10,.0f} ({row['revenue_share']:>5.1f}%)\")\n",
+ " print(f\"{row['product_category_name'].replace('_', ' ').title():}\")\n",
+ " print(f\" Revenue: ${row['total_revenue']:,.2f} ({row['revenue_share']:.1f}% of total)\")\n",
+ " print(f\" Items Sold: {row['items_sold']:,}\")\n",
+ " print(f\" Avg Item Price: ${row['avg_item_price']:.2f}\")\n",
+ " print(f\" Unique Orders: {row['unique_orders']:,}\")\n",
+ " print()\n",
" \n",
- " # Category performance visualization\n",
- " category_fig = visualizer.plot_category_performance(top_n=10, figsize=(14, 10))\n",
- " plt.show()\n",
+ " # Display full category table\n",
+ " print(\"COMPLETE CATEGORY PERFORMANCE:\")\n",
+ " display(product_performance['all_categories'])\n",
+ "else:\n",
+ " print(\"Product category data not available\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Product category revenue visualization\n",
+ "if 'error' not in product_performance:\n",
+ " top_10_categories = product_performance['top_categories'].head(10)\n",
+ " \n",
+ " fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(20, 8))\n",
+ " \n",
+ " # Horizontal bar chart for top categories\n",
+ " colors = plt.cm.Blues(np.linspace(0.4, 0.8, len(top_10_categories)))\n",
+ " bars = ax1.barh(range(len(top_10_categories)), top_10_categories['total_revenue'], color=colors)\n",
+ " ax1.set_yticks(range(len(top_10_categories)))\n",
+ " ax1.set_yticklabels([cat.replace('_', ' ').title() for cat in top_10_categories['product_category_name']])\n",
+ " ax1.set_xlabel('Revenue ($)', fontsize=12)\n",
+ " ax1.set_title(f'Top 10 Product Categories by Revenue - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
+ " ax1.xaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'${x:,.0f}'))\n",
+ " \n",
+ " # Add value labels\n",
+ " for i, v in enumerate(top_10_categories['total_revenue']):\n",
+ " ax1.text(v + max(top_10_categories['total_revenue']) * 0.01, i, f'${v:,.0f}', \n",
+ " va='center', fontsize=10)\n",
+ " \n",
+ " # Revenue share pie chart\n",
+ " top_5_for_pie = top_10_categories.head(5)\n",
+ " other_revenue = top_10_categories.iloc[5:]['total_revenue'].sum()\n",
+ " \n",
+ " pie_data = list(top_5_for_pie['total_revenue']) + [other_revenue]\n",
+ " pie_labels = list(top_5_for_pie['product_category_name'].str.replace('_', ' ').str.title()) + ['Other Categories']\n",
" \n",
- " # Category insights\n",
- " total_categories = len(product_data['all_categories'])\n",
- " top_5_share = top_categories.head(5)['revenue_share'].sum()\n",
+ " wedges, texts, autotexts = ax2.pie(pie_data, labels=pie_labels, autopct='%1.1f%%', \n",
+ " colors=plt.cm.Set3(np.linspace(0, 1, len(pie_data))))\n",
+ " ax2.set_title(f'Revenue Share by Top Categories - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
" \n",
- " print(f\"\\nCATEGORY INSIGHTS:\")\n",
- " print(f\"Total Product Categories: {total_categories}\")\n",
- " print(f\"Top 5 Categories Revenue Share: {top_5_share:.1f}%\")\n",
- " print(f\"Market Concentration: {'High' if top_5_share > 70 else 'Moderate' if top_5_share > 50 else 'Low'}\")\n",
+ " plt.tight_layout()\n",
+ " plt.show()\n",
"else:\n",
- " print(\"Product category data not available for analysis\")"
+ " print(\"Cannot create product visualizations - category data not available\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### 5.3 Geographic Performance Analysis {#geographic-analysis}\n",
+ "### Product Category Insights\n",
"\n",
- "Analyzing sales performance across different geographic regions to identify market opportunities."
+ "**Key Findings:**\n",
+ "- Product category performance reveals market segment strengths and opportunities\n",
+ "- Revenue concentration indicates dependency on top-performing categories\n",
+ "- Average item prices vary significantly across categories, indicating different market positioning"
]
},
{
- "cell_type": "code",
- "execution_count": 10,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "GEOGRAPHIC PERFORMANCE - 2023\n",
- "==================================================\n",
- "TOP 10 STATES BY REVENUE:\n",
- "CA $ 537,881 ( 769 orders, AOV: $ 699)\n",
- "TX $ 403,303 ( 561 orders, AOV: $ 719)\n",
- "FL $ 310,196 ( 431 orders, AOV: $ 720)\n",
- "NY $ 253,112 ( 384 orders, AOV: $ 659)\n",
- "IL $ 185,931 ( 260 orders, AOV: $ 715)\n",
- "PA $ 173,261 ( 225 orders, AOV: $ 770)\n",
- "OH $ 157,620 ( 200 orders, AOV: $ 788)\n",
- "GA $ 146,415 ( 190 orders, AOV: $ 771)\n",
- "MI $ 132,326 ( 210 orders, AOV: $ 630)\n",
- "NC $ 128,315 ( 177 orders, AOV: $ 725)\n"
- ]
- },
- {
- "data": {
- "application/vnd.plotly.v1+json": {
- "config": {
- "plotlyServerURL": "https://plot.ly"
- },
- "data": [
- {
- "coloraxis": "coloraxis",
- "geo": "geo",
- "hovertemplate": "state=%{location} Revenue ($)=%{z} ",
- "locationmode": "USA-states",
- "locations": [
- "CA",
- "TX",
- "FL",
- "NY",
- "IL",
- "PA",
- "OH",
- "GA",
- "MI",
- "NC",
- "NJ",
- "VA",
- "MA",
- "AZ",
- "WA",
- "MD",
- "IN",
- "MO",
- "WI",
- "TN"
- ],
- "name": "",
- "type": "choropleth",
- "z": {
- "bdata": "rkfhejFqIEFcj8L1nZ0YQcP1KFzP7hJBzczMzL7lDkHrUbgeV7IGQQrXo3BlJgVBKVyPwp09A0EzMzMzdd8BQc3MzMwsJwBBcT0K16tT/0Bcj8L12Bz/QHE9CtePsflASOF6FHIs+UBmZmZm0nD4QIXrUbiqOfdAFa5H4TYp9UAUrkfh2hD1QDMzMzOzr/JA9ihcjx6E8kDsUbgezXLyQA==",
- "dtype": "f8"
- }
- }
- ],
- "layout": {
- "coloraxis": {
- "colorbar": {
- "title": {
- "text": "Revenue ($)"
- }
- },
- "colorscale": [
- [
- 0,
- "rgb(247,251,255)"
- ],
- [
- 0.125,
- "rgb(222,235,247)"
- ],
- [
- 0.25,
- "rgb(198,219,239)"
- ],
- [
- 0.375,
- "rgb(158,202,225)"
- ],
- [
- 0.5,
- "rgb(107,174,214)"
- ],
- [
- 0.625,
- "rgb(66,146,198)"
- ],
- [
- 0.75,
- "rgb(33,113,181)"
- ],
- [
- 0.875,
- "rgb(8,81,156)"
- ],
- [
- 1,
- "rgb(8,48,107)"
- ]
- ]
- },
- "geo": {
- "center": {},
- "domain": {
- "x": [
- 0,
- 1
- ],
- "y": [
- 0,
- 1
- ]
- },
- "scope": "usa",
- "showcoastlines": true,
- "showframe": false
- },
- "legend": {
- "tracegroupgap": 0
- },
- "template": {
- "data": {
- "bar": [
- {
- "error_x": {
- "color": "#2a3f5f"
- },
- "error_y": {
- "color": "#2a3f5f"
- },
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "baxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "type": "carpet"
- }
- ],
- "choropleth": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "choropleth"
- }
- ],
- "contour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "type": "contour"
- }
- ],
- "contourcarpet": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "contourcarpet"
- }
- ],
- "heatmap": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "type": "heatmap"
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "histogram2d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "type": "histogram2d"
- }
- ],
- "histogram2dcontour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "type": "histogram2dcontour"
- }
- ],
- "mesh3d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "mesh3d"
- }
- ],
- "parcoords": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "parcoords"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ],
- "scatter": [
- {
- "fillpattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- },
- "type": "scatter"
- }
- ],
- "scatter3d": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter3d"
- }
- ],
- "scattercarpet": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattercarpet"
- }
- ],
- "scattergeo": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergeo"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergl"
- }
- ],
- "scattermap": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattermap"
- }
- ],
- "scattermapbox": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattermapbox"
- }
- ],
- "scatterpolar": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolar"
- }
- ],
- "scatterpolargl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolargl"
- }
- ],
- "scatterternary": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterternary"
- }
- ],
- "surface": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "type": "surface"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#EBF0F8"
- },
- "line": {
- "color": "white"
- }
- },
- "header": {
- "fill": {
- "color": "#C8D4E3"
- },
- "line": {
- "color": "white"
- }
- },
- "type": "table"
- }
- ]
- },
- "layout": {
- "annotationdefaults": {
- "arrowcolor": "#2a3f5f",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "autotypenumbers": "strict",
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ],
- "sequential": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1,
- "#f0f921"
- ]
- ]
- },
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#2a3f5f"
- },
- "geo": {
- "bgcolor": "white",
- "lakecolor": "white",
- "landcolor": "#E5ECF6",
- "showlakes": true,
- "showland": true,
- "subunitcolor": "white"
- },
- "hoverlabel": {
- "align": "left"
- },
- "hovermode": "closest",
- "mapbox": {
- "style": "light"
- },
- "paper_bgcolor": "white",
- "plot_bgcolor": "#E5ECF6",
- "polar": {
- "angularaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "radialaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "yaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "zaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#2a3f5f"
- }
- },
- "ternary": {
- "aaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "caxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "title": {
- "x": 0.05
- },
- "xaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- },
- "yaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- }
- }
- },
- "title": {
- "font": {
- "size": 16
- },
- "text": "Revenue by State - 2023",
- "x": 0.5
- }
- }
- }
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "GEOGRAPHIC INSIGHTS:\n",
- "States with Sales: 20\n",
- "Top 5 States Revenue Share: 50.3%\n",
- "Highest AOV State: IN ($814)\n",
- "Geographic Diversity: Low\n"
- ]
- }
- ],
"source": [
- "# Geographic analysis\n",
- "geo_data = business_report['geographic_performance']\n",
+ "## 7. Geographic Performance Analysis {#geographic-analysis}\n",
"\n",
- "if 'error' not in geo_data.columns:\n",
- " print(f\"GEOGRAPHIC PERFORMANCE - {ANALYSIS_YEAR}\")\n",
- " print(\"=\" * 50)\n",
+ "State-level analysis of sales performance, revenue distribution, and market penetration."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Analyze geographic performance\n",
+ "print(f\"Analyzing geographic performance for {ANALYSIS_YEAR}...\")\n",
+ "geographic_performance = metrics_calculator.analyze_geographic_performance(ANALYSIS_YEAR)\n",
+ "\n",
+ "if 'error' not in geographic_performance.columns:\n",
+ " print(\"\\nTOP 15 STATES BY REVENUE:\")\n",
+ " print(\"=\" * 40)\n",
+ " top_states = geographic_performance.head(15)\n",
" \n",
- " # Top performing states\n",
- " top_states = geo_data.head(10)\n",
- " print(\"TOP 10 STATES BY REVENUE:\")\n",
" for idx, row in top_states.iterrows():\n",
- " print(f\"{row['state']:<3} ${row['revenue']:>10,.0f} ({row['orders']:>5,} orders, AOV: ${row['avg_order_value']:>7,.0f})\")\n",
+ " print(f\"{row['state']}:\")\n",
+ " print(f\" Revenue: ${row['revenue']:,.2f}\")\n",
+ " print(f\" Orders: {row['orders']:,}\")\n",
+ " print(f\" Avg Order Value: ${row['avg_order_value']:.2f}\")\n",
+ " print()\n",
+ " \n",
+ " # Geographic summary statistics\n",
+ " print(\"GEOGRAPHIC PERFORMANCE SUMMARY:\")\n",
+ " print(f\"Total States with Sales: {len(geographic_performance)}\")\n",
+ " print(f\"Top State Revenue: ${geographic_performance.iloc[0]['revenue']:,.2f}\")\n",
+ " print(f\"Median State Revenue: ${geographic_performance['revenue'].median():,.2f}\")\n",
+ " print(f\"Revenue Concentration (Top 5 States): {(geographic_performance.head(5)['revenue'].sum() / geographic_performance['revenue'].sum() * 100):.1f}%\")\n",
+ "else:\n",
+ " print(\"Geographic data not available for analysis\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Geographic visualizations\n",
+ "if 'error' not in geographic_performance.columns:\n",
+ " # Create choropleth map using Plotly\n",
+ " fig_map = px.choropleth(\n",
+ " geographic_performance,\n",
+ " locations='state',\n",
+ " color='revenue',\n",
+ " locationmode='USA-states',\n",
+ " scope='usa',\n",
+ " title=f'Revenue by State - {ANALYSIS_YEAR}',\n",
+ " color_continuous_scale='Blues',\n",
+ " labels={'revenue': 'Revenue ($)'}\n",
+ " )\n",
+ " \n",
+ " fig_map.update_layout(\n",
+ " title_font_size=16,\n",
+ " title_x=0.5,\n",
+ " geo=dict(showframe=False, showcoastlines=True),\n",
+ " width=1000,\n",
+ " height=600\n",
+ " )\n",
" \n",
- " # Geographic heatmap\n",
- " geo_fig = visualizer.plot_geographic_heatmap()\n",
- " geo_fig.show()\n",
+ " fig_map.show()\n",
" \n",
- " # Geographic insights\n",
- " total_states = len(geo_data)\n",
- " top_5_revenue = top_states.head(5)['revenue'].sum()\n",
- " total_revenue = geo_data['revenue'].sum()\n",
- " top_5_share = (top_5_revenue / total_revenue) * 100\n",
+ " # Top states bar chart\n",
+ " top_10_states = geographic_performance.head(10)\n",
" \n",
- " print(f\"\\nGEOGRAPHIC INSIGHTS:\")\n",
- " print(f\"States with Sales: {total_states}\")\n",
- " print(f\"Top 5 States Revenue Share: {top_5_share:.1f}%\")\n",
- " print(f\"Highest AOV State: {geo_data.loc[geo_data['avg_order_value'].idxmax(), 'state']} (${geo_data['avg_order_value'].max():,.0f})\")\n",
- " print(f\"Geographic Diversity: {'High' if total_states > 40 else 'Moderate' if total_states > 20 else 'Low'}\")\n",
+ " plt.figure(figsize=(15, 8))\n",
+ " bars = plt.bar(top_10_states['state'], top_10_states['revenue'], \n",
+ " color='skyblue', alpha=0.8)\n",
+ " plt.title(f'Top 10 States by Revenue - {ANALYSIS_YEAR}', fontsize=16, fontweight='bold', pad=20)\n",
+ " plt.xlabel('State', fontsize=12)\n",
+ " plt.ylabel('Revenue ($)', fontsize=12)\n",
+ " plt.xticks(rotation=45)\n",
+ " plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'${x:,.0f}'))\n",
+ " plt.grid(True, alpha=0.3)\n",
+ " \n",
+ " # Add value labels\n",
+ " for bar, value in zip(bars, top_10_states['revenue']):\n",
+ " plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + max(top_10_states['revenue']) * 0.01,\n",
+ " f'${value:,.0f}', ha='center', va='bottom', fontsize=10, rotation=0)\n",
+ " \n",
+ " plt.tight_layout()\n",
+ " plt.show()\n",
"else:\n",
- " print(\"Geographic data not available for analysis\")"
+ " print(\"Cannot create geographic visualizations - location data not available\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Geographic Performance Insights\n",
+ "\n",
+ "**Key Findings:**\n",
+ "- Geographic revenue distribution reveals market concentration and expansion opportunities\n",
+ "- State-level performance variations indicate regional preferences and market maturity\n",
+ "- Average order values by state provide insights into regional customer spending patterns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### 5.4 Customer Experience Analysis {#customer-analysis}\n",
+ "## 8. Customer Experience Analysis {#customer-analysis}\n",
"\n",
- "Evaluating customer satisfaction through review scores and delivery performance metrics."
+ "Comprehensive analysis of customer satisfaction, delivery performance, and service quality metrics."
]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "CUSTOMER SATISFACTION ANALYSIS - 2023\n",
- "==================================================\n",
- "Average Review Score: 4.10/5.0\n",
- "Total Reviews: 3,225\n",
- "5-Star Reviews: 34.7%\n",
- "4+ Star Reviews: 51.6%\n",
- "Low Satisfaction (1-2 stars): 7.2%\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWwBJREFUeJzt3QeYVOX5P+6XKiiCggUNIlYUFQt2jSIW7BqNvWA3RlGxxF4TBUvsosYCalTsvXeNYo+KvSACUbHQxAIK87+e8/3N/meWXViW5Syw931dR3bPzJx5Z3b2rPOZ533eRoVCoZAAAAAAIEeN87wzAAAAAAhCKQAAAAByJ5QCAAAAIHdCKQAAAAByJ5QCAAAAIHdCKQAAAAByJ5QCAAAAIHdCKQAAAAByJ5QCAAAAIHdCKQCqNXz48HTWWWelHj16pMUXXzy1aNEi2zp06JB69uyZzjvvvOw6zH3ee++9dNhhh6WVVlopzT///KlZs2Zp4YUXTp07d06bb755OuaYY9LAgQPrbXydOnVKjRo1qtjqymeffZZ69eqVllxyyTTPPPNUHH+BBRZIs7szzzyz7Dmpz5/PjOrevXvZ2GPr2rVrtdd/8803p7r+nPKYS8cbr+O51ZQpU9ILL7yQzj333LTNNttk55I4h8S5ZMEFF0zrrLNOOuOMM9KoUaOmeZyff/45XXjhhWn99ddP7dq1y34v42/QLrvskp544olZct9Dhw5Np512Wtp6663Tcsstl91v06ZNU6tWrdLyyy+fdt1113TXXXdl9wPATCoAQCW//vpr4cgjjyw0bdq0EH8qprUtuOCC9T3cwrPPPls2pl69etX3kOZo/fv3r9HPvkmTJnV6v1988UXZ8TfeeONqr7vkkkuWXbcujBo1qtCuXbsqH2ubNm0K9SWeh9KxxPNUlTPOOKPsegMGDCjMKSo/xuL2zDPPVHn9vffeu8rr1+VjnlXnldJjxut4bvXdd99N9xwS2wILLFB46qmnqjzGJ598UlhqqaWmefsDDzyw8Pvvv9fpfd988801uv3mm29emDhx4ix7DgEagqYzG2oBMHf59ddfs0qY//znP2X7o1pmzTXXzD4p/vbbb9M777yTXdcnxXOX//73v+mII44o+7lGlUFUDoWRI0emjz76KE2aNKkeR5myCoZ4Hdale+65J/3www8V30dFxYYbbpiaN2+e5ptvvjS769KlS9p5550rvp8bqnAuu+yytMkmm5Tt++abb9Idd9yR5lSlP6NFFlkkNQSNGzdOq666alZx+8UXX6QPPvig4rKxY8dmz8knn3xS9nxMmDAhq8iN65e+xpdaaqn08ssvpzFjxmT7rr/++qwKqm/fvnV230Vt2rRJSy+9dHbbn376Kb3++uvZv0VPPvlkuuKKK7LKUQBqRygFQJkIJEoDqZhicvrpp6cTTzwxm7pX9Msvv6TbbrstXXLJJfU0UmaFmP5UGkjdeeed6c9//vNU02mefvrpdMstt6T60r9//zo/ZuWpPPEm99BDD01ziphSFNvc5MEHH0xffvllRSgarrrqqnoPRWdGTPtqKGLa67HHHpsOOeSQstDnxhtvTPvtt1/F9+PGjcv+nhx11FEV+2LKXmkgdeCBB6brrruu4nd1jTXWSF999VX2/QUXXJDdRwRWdXHf3bp1S88991wWSjdp0qRi//jx49OWW26ZBg8eXLHv2WefFUoBzIz6LtUCYPYxZMiQQuPGjcumJ5x99tnTneo3I9OqpjfF6Pvvv8+us/baa2dTA2Ma2fzzz59N4ejRo0fhb3/7W+H555+vcnpNdVvlaTcx3SLud+utty4stthihebNmxdatWpVWH755QsHHHBA4dVXX63yscZxSo8b9//II48Uunfvno0xpoJsu+22hf/+97/Z9adMmVK48sorC6uuumqhRYsW2dSwP//5z4WPP/642ufzq6++Kpx++umFddZZp+Lxx+023XTTwnXXXVeYNGlSjaYZxVS0I444otCpU6dCs2bNpjkVrtSWW25ZdqzRo0cXZkRMLTv11FOz5yGez4UXXji7//nmm6+w9NJLF3bZZZfCgw8+ONVtavJzLH0M03udvfLKK4V99903G8O8886bPY8LLbRQYcUVV8zGcP755xe+/vrrKl+T03oNxeszfid22mmnQpcuXQqLLrpo9vpp2bJlYYkllihst912hX//+9+FyZMnV/sc/fDDD9n9b7LJJoVFFlkke35ieuAKK6xQ2H///Stef9VNaau8Fafz1WT6Xozr7rvvzsYf443XZYw9fr/22GOPwpNPPlnlmKs69qeffpqNd/HFF88eQxyvd+/ehbFjxxZmVOXH+oc//KHi6+OOO67sfBPPWVXXm9b0vRdeeCF7PSy77LLZa3GeeebJ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3AmlAAAAAMidUAoAAACA3AmlAAAAAMidUAoAAACA3AmlAAAAAMidUAoAAACAhh1KnXnmmalRo0Zl2worrFBx+a+//poOP/zw1K5du9SqVau08847p1GjRtXrmAEAAACYw0OpsNJKK6Wvv/66YvvPf/5TcVmfPn3Sgw8+mO688870/PPPp6+++irttNNO9TpeAAAAAGZc0zSbadq0aWrfvv1U+8eNG5euv/76dOutt6YePXpk+wYMGJBWXHHF9Morr6R11123HkYLAAAAwFxRKfXpp5+mxRdfPC299NJpr732SsOHD8/2v/nmm+m3335Lm222WcV1Y2pfx44d0+DBg+txxAAAAADM0ZVS66yzTho4cGDq3LlzNnXvrLPOSn/84x/Te++9l7755pvUvHnztMACC5TdZtFFF80uq87EiROzrWj8+PGz9DEAAAAAMIeFUltttVXF1127ds1CqiWXXDLdcccdqWXLlrU6Zt++fbNwCwAAAIDZx2w3fa9UVEUtv/zy6bPPPsv6TE2aNCmNHTu27Dqx+l5VPaiKTjrppKwfVXEbMWJEDiMHAAAAYI4NpSZMmJA+//zztNhii6Vu3bqlZs2apaeffrri8o8//jjrObXeeutVe4x55pkntW7dumwDAAAAoH7NVtP3jjvuuLTddttlU/a++uqrdMYZZ6QmTZqkPfbYI7Vp0yYdeOCB6Zhjjklt27bNwqXevXtngZSV9wAAAADmLLNVKDVy5MgsgPrhhx/SwgsvnDbccMP0yiuvZF+Hiy++ODVu3DjtvPPOWfPynj17pv79+9f3sAEAAACYQY0KhUIhNSCx+l5UXUV/KVP5AMhDpxMfru8hAKRh/bap7yEA0ECMr2H2Mlv3lAIAAABg7iSUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3s20o1a9fv9SoUaN09NFHV+z79ddf0+GHH57atWuXWrVqlXbeeec0atSoeh0nAAAAAHNJKPX666+na665JnXt2rVsf58+fdKDDz6Y7rzzzvT888+nr776Ku200071Nk4AAAAA5pJQasKECWmvvfZK1157bVpwwQUr9o8bNy5df/316aKLLko9evRI3bp1SwMGDEgvv/xyeuWVV+p1zAAAAADM4aFUTM/bZptt0mabbVa2/80330y//fZb2f4VVlghdezYMQ0ePLja402cODGNHz++bAMAAACgfjVNs5FBgwalt956K5u+V9k333yTmjdvnhZYYIGy/Ysuumh2WXX69u2bzjrrrFkyXgAAAADm8EqpESNGpKOOOirdcsstqUWLFnV23JNOOimb+lfc4n4AAAAAqF+zTSgV0/O+/fbbtMYaa6SmTZtmWzQzv+yyy7KvoyJq0qRJaezYsWW3i9X32rdvX+1x55lnntS6deuyDQAAAID6NdtM39t0003TkCFDyvbtv//+Wd+oE044IS2xxBKpWbNm6emnn04777xzdvnHH3+chg8fntZbb716GjUAAAAAc3QoNf/886eVV165bN98882X2rVrV7H/wAMPTMccc0xq27ZtVvHUu3fvLJBad91162nUAAAAAMzRoVRNXHzxxalx48ZZpVSsqtezZ8/Uv3//+h4WAAAAADOoUaFQKKQGZPz48alNmzZZ03P9pQDIQ6cTH67vIQCkYf22qe8hANBAjK9h9jLbNDoHAAAAoOEQSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUzAEeeeSRtPHGG6eFF144zTPPPGnppZdOxxxzTBo3blyV13/zzTdTkyZNUqtWraZ77DPPPDM1atSoyu0vf/lLxfVeffXV1LVr19SmTZu09957p59++qnsOM8//3zq0KFDmjBhQh08YgAAAOZ2QimYA4wePTqts8466eqrr06PP/54FkjddNNNaZdddpnquoVCIR1xxBFZgFUTBx10UBo8eHDZdt5552WXbbXVVtm/v/32W9ptt93SZpttlm655ZYsgOrbt2/FMSZPnpyOPPLI7HY1CcIAAACgaX0PAJi+qEwq1b1796xi6pBDDklfffVVWnzxxSsuGzBgQPr+++/TAQcckC677LLpHjuqm2IrFeHXggsuWBFKffLJJ1kwdsEFF2QVWO+//366++670z/+8Y+K688///xpr732qqNHDAAAwNxOKAVzqHbt2mX/Tpo0qWLf2LFj04knnphuuOGG9MYbb9TquL/++mu69957s8qo5s2bZ/smTpyYfR2BVJh33nmzfeGHH37IpgA+8cQTdfCoAAAAaChM34M5SEyTi9DorbfeSmeffXbafvvtU6dOnSouP/XUU1O3bt3StttuW+v7eOihh9L48ePTnnvuWbGvc+fO2RS+f//73+mbb77Jpg6utdZaFfe50047pdVXX30mHx0AAAANiUopmIMsueSS6X//+1/29ZZbbpluvfXWisvefvvtdP3116f//ve/M3Ufccw//OEPaaONNqrYN99886XLL788HXjggVll1gorrJBVR73zzjvprrvuSh9++OFM3ScAAAANj0opmMNW4Xv55ZfTtddemwVB2223XVY9Fc3NDz/88PTXv/41C4xqK6b/xX3svvvuqXHj8tPDvvvum/Wqiv5S7733XtaHqnfv3un0009PCy20UDrnnHPSEksske0vNkoHAACA6qiUgjlI165ds3/XW2+9bPrcaqutlvV/+v3337OQKqqcIlgKMc0vxPctWrTItumJ5uXRK6q6huXRzDy2cNttt6UxY8ZkQVgEWRdeeGG2cl+IlQJjbD179qyzxw4AAMDcRSgFc3BA1axZs/TZZ59lAVQERKX9pYpiFb0TTjgh9evXb7rHjFArKq2m1x/qp59+Sn/729+y3lLR/Pypp55Km266aUWV1uabb56efPJJoRQAAADVEkrBHOrVV1/Nmo8vvfTSae21107du3cvu3zgwIHp9ttvT48++mjq2LHjdI/39ddfp+eeey7rFTU95557blp33XXTJptsUrHv559/LgutYkohAAAAVEcoBXOAWN1uzTXXzKqjWrZsmTUYv+CCC7Lvd9xxx9S8efOpqqQiYIoqpsphVdOmTVOvXr2ypuilBg0alKZMmVK26l5Vhg4dmq666qqssXpRjx490hVXXJFuuOGGLIyKyqnoNwUAAADVEUrBHCAqoaLqKabgRXAUAdTBBx+cjjvuuCyQmhHRGD22qqbuxf0ss8wy07x9nz590lFHHVVWfbXtttumU045JZ188snZ99H8fOutt56hcQEAANCwNCo0sDk248ePT23atEnjxo1LrVu3ru/hANAAdDrx4foeAkAa1m+b+h4CAA3E+BpmL+VrvgMAAABADoRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7prmf5fUpVVuXKW+hwA0cEN6DanvIQAAAHMglVIAAAAA5E4oBQAAAEDuhFIAAAAA5E4oBQAAAEDuhFIAAAAA5E4oBQAAAEDuhFIAAAAA5E4oBQAAAEDuhFIAAAAA5K7pjN7g559/Tk8++WR66aWX0gcffJC+//771KhRo7TQQgulFVdcMW2wwQZps802S/PNN9+sGTEAAAAADadSasiQIWm//fZL7du3T3/605/SlVdemT777LMskCoUCumTTz5JV1xxRXZZXCeuG7cBAAAAgFpVSu22227p7rvvTmuuuWY688wz0+abb566dOmSmjRpUna9yZMnZ9VTTzzxRLrrrrvS6quvnnbZZZd022231eRuAAAAAGggahRKNW7cOL3xxhtptdVWm+b1IqRaZZVVsu3YY49Nb7/9djrvvPPqaqwAAAAANKRQqraVThFiqZICAAAAoDKr7wEAAAAwZ4ZSN954Y9piiy3SSiutlDbddNP0r3/9K2t+DgAAAAC1nr43LX//+99T//7906GHHpoWX3zxrNH50Ucfna3Md/7558/s4QEAAABoyKHUl19+mZZccsmp9g8cODANGjQobbzxxhX72rdvny666CKhFAAAAAAzN32vS5cu6bTTTks///xz2f75558/C6xKDR8+PNsPAAAAADMVSj3//PPpmWeeSZ07d0633HJLxf7TTz89HXzwwalHjx5p7733TmuuuWa65ppr0plnnlnTQwMAAADQwNQ4lIqw6aWXXkp9+/ZNJ554YlpvvfXS66+/nnbaaaf07rvvZqFU69at03bbbZfeeeedtM8++8zakQMAAADQcBqdRzVUBFHnnHNO6t69e9pll11Sv3790qmnnjprRggAAABAw62UKjXvvPNmodR7772Xxo8fn5ZffvmsgmrSpEl1P0IAAAAAGnYo9corr6RTTjkl9enTJ1txb6mllkr33HNPuu+++9Jtt92WVlhhhex7AAAAAKiTUOqGG25IG264YXr55Zez1fUOPPDAtNtuu2WXRT+pt99+Ox1zzDHpkEMOyb4fMmRITQ8NAAAAQANT41AqpusdccQR6dlnn0133313VhF11113paFDh/7fgRo3zi7/9NNP04orrpjWXnvtWTluAAAAABpCKDVmzJi03HLLVXy/zDLLpEKhkMaOHVt2vQUXXDBdeeWV2cp8AAAAADBTq+9ttdVW2Sp7CyywQLb985//TEsssURaeeWVq7x+dfsBAAAAoMaVUv379089e/ZMxx13XNprr71SkyZN0sMPP5yaN28+a0cIAAAAQMOtlGrTpk267rrrZu1oAAAAAGgQalwpBQAAAAC5hlKHHnpo+uKLL2b44J9//nl2WwAAAACY4VBqxIgRqXPnzlmz84EDB2bfV2fYsGHZNL8tttgirbDCCmnkyJE1uQsAAAAAGpAa9ZR65JFH0ksvvZQuvPDCdMghh6TJkyendu3apU6dOqUFF1wwFQqFNGbMmKyaKv6NJuhbb711evbZZ9OGG2446x8FAAAAAHNno/MNNtgg27777rv00EMPpcGDB6ePPvqoohIqQqqddtoprbfeemmbbbZJiyyyyKwcNwAAAAANIZQqWnjhhdP++++fbQAAAABQG1bfAwAAACB3QikAAAAAcieUAgAAAKBhh1JXXXVV6tq1a2rdunW2RdP0Rx99tOLyX3/9NR1++OFZU/VWrVqlnXfeOY0aNapexwwAAADAHB5KdejQIfXr1y+9+eab6Y033kg9evRIO+ywQ3r//fezy/v06ZMefPDBdOedd6bnn38+ffXVV9mKfwAAAADM5avvzUrbbbdd2ffnnHNOVj31yiuvZIHV9ddfn2699dYsrAoDBgxIK664Ynb5uuuuW0+jBgAAACDXSqkIg/r27ZtVMH366afZvp9//jm99dZbacKECTNz6DR58uQ0aNCg9NNPP2XT+KJ66rfffkubbbZZxXVWWGGF1LFjxzR48OBqjzNx4sQ0fvz4sg0AAACAOTCUmjRpUjZtboMNNkinnHJKuuyyy9KIESP+74CNG6ctttgiXXrppbUa0JAhQ7J+UfPMM0/6y1/+ku69997UpUuX9M0336TmzZunBRZYoOz6iy66aHZZdSI0a9OmTcW2xBJL1GpcAAAAANRzKHXaaaelhx56KJta9/HHH6dCoVBxWYsWLdIuu+yS7r///loNqHPnzuntt99Or776ajrssMNSr1690gcffJBq66STTkrjxo2r2IrhGQAAAABzWE+p2267LQuMDjnkkPTDDz9MdXn0eYpm5LUR1VDLLrts9nW3bt3S66+/nlVd7bbbblmF1tixY8uqpWL1vfbt21d7vKi4ig0AAACAObxS6ttvv02rrLJKtZc3adIk6y1VF6ZMmZL1hYqAqlmzZunpp5+uuCyqtIYPH571nAIAAABgLq+Uir5MH330UbWXv/TSSxXVTjM61W6rrbbKmpf/+OOP2Up7zz33XHr88cezflAHHnhgOuaYY1Lbtm1T69atU+/evbNAysp7AAAAAA0glNpzzz3TRRddlHbeeee0/PLLZ/saNWqU/XvttdemO+64I/Xr169WFVj77rtv+vrrr7MQqmvXrlkgtfnmm2eXX3zxxVkj9bjfqJ7q2bNn6t+/f20eAgAAAAD1qFGhtEt5DUVvp+222y4988wzWf+o999/P5vON3r06DRy5Mi09dZbZ43OYxrf7Gb8+PFZ4BVNz6Paak63yo3VT6MEyMOQXkPqewizvU4nPlzfQwBIw/ptU99DAKCBGF/D7KVxbZuRP/bYY2nAgAFp6aWXTiussEJWuRSVTQMHDkwPPvjgbBlIAQAAADAHT98rTtfbe++9sw0AAAAAZkStKqUAAAAAIPdKqR49eky3iqpFixapQ4cOaZNNNkl//vOfU9OmtS7KAgAAAGAuU6ukaMqUKel///tf+vzzz9OCCy6YOnXqlO0fNmxYGjNmTFp22WWzhlavvvpqthpfrMT31FNPpYUWWqiuxw8AAABAQ5m+949//CMLn2688cb07bffpjfffDPb4utofh6XXX755em7775LN9xwQ7Y630knnVT3owcAAACg4VRKHXfccWn//fdP++yzT9n+WHGvV69e6b333kt9+vRJgwcPTvvtt1/2b6zIBwAAAAC1rpR69913K6bsVSUue+eddyq+79atWxo9erRnHAAAAIDah1KLLbZYuuuuu7LeUpXFvjvuuCO1b9++Yt8PP/yQ2rZtW5u7AgAAAGAuVKvpe8ccc0zq3bt32mCDDdLBBx+clllmmWz/Z599ljU2f/3119Nll11Wcf0777wzrb322nU3agAAAAAaXih1+OGHp8aNG6fTTz89HXTQQalRo0bZ/kKhkNq1a5cFUnGdMHHixHTxxRdPc7ofAAAAAA1LrUKpcNhhh2WB1BtvvJG+/PLLbN+SSy6Z1lxzzdSsWbOK680zzzxp4403rpvRAgAAANCwQ6kQ4dN6662XbQAAAACQSyj122+/pY8++iiNGzeuyqbnG2200cwcHgAAAIC5VK1CqQigTjrppNS/f//0888/V3u9yZMnz8zYAAAAAJhLNa7Njc4999x0wQUXpL333jvddNNNWYPzfv36pauvvjp17do1rbrqqunxxx+v+9ECAAAA0HBDqYEDB6Zdd901XXXVVWnLLbfM9nXr1i0dfPDB6dVXX81W43vmmWfqeqwAAAAANORQauTIkalHjx4Vq+uFX3/9Nfu3efPmWQXVzTffXJfjBAAAAKChh1Lt2rVLEyZMyL5u1apVat26dRo6dGjZdcaMGVM3IwQAAABgrlOrRuerr756ev311yu+32STTdIll1yS7Y8m6JdddlnWVwoAAAAA6qxS6pBDDkkTJ07MtnDOOeeksWPHpo022ihtvPHGafz48emf//xnbQ4NAAAAQANQq0qp7bffPtuKunTpkj7//PP03HPPpSZNmqT1118/tW3bti7HCQAAAEBDr5R64YUX0nfffVe2r02bNmmHHXZI2267bTaFL64DAAAAAHUWSkUPqSeffLLay59++unsOgAAAABQZ6FUoVCY5uXRayqm8QEAAADATPWUGj58eBo2bFjF9x999FGVU/Si4fk111yTllxyyZoeGgAAAIAGpsah1IABA9JZZ52VGjVqlG2x4l5sVVVRRZVUBFMAAAAAMFOh1K677ppWXnnlLHSKr4888sj0xz/+sew6EVbNN998abXVVkuLLrpoTQ8NAAAAQANT41BqxRVXzLZi1dRGG22UllpqqVk5NgAAAAAaeihVqlevXnU/EgAAAAAajFqFUuHDDz/MKqaGDh2axowZM9WKfDGV7+mnn66LMQIAAAAwl6lVKHXzzTen/fffPzVr1ix17tw5LbjgglNdp3JIBQAAAAAzFUqdeeaZafXVV0+PPvpoWmihhWpzCAAAAAAasMa1udFXX32VDjjgAIEUAAAAAPmFUl27ds2CKQAAAADILZS66KKL0vXXX59efvnlWt0pAAAAAA1brXpKnXfeealNmzbpj3/8Y+rSpUvq2LFjatKkyVSr791///11NU4AAAAAGnoo9e6772ahU4RREyZMSB988MFU14nLAQAAAKDOQqlhw4bV5mYAAAAAUPueUgAAAABQL6HU5MmT06BBg9Khhx6a/vSnP6UhQ4Zk+8eNG5fuueeeNGrUqJkaGAAAAABzr1qFUmPHjk0bbLBB2nPPPdNtt92WHnjggfTdd99ll7Vq1SodeeSR6dJLL63rsQIAAADQkEOpE088Mb3//vvp8ccfT0OHDk2FQqHisliF789//nN65JFH6nKcAAAAADT0UOq+++5LvXv3TptvvnmVq+wtv/zymqEDAAAAULehVPSNWmqppaq9/Lfffku///57bQ4NAAAAQANQq1BqmWWWSW+99Va1lz/xxBOpS5cuMzMuAAAAAOZitQqlDjrooHTDDTek22+/vaKfVEzjmzhxYjrllFPSY489lq3KBwAAAABVaZpq4aijjsoane+xxx5pgQUWyPbFSnw//PBDNm0vAqkDDzywNocGAAAAoAGoVSgVVVHXXntt6tWrV7rrrrvSp59+mqZMmZJN69t1113TRhttVPcjBQAAAKBhh1JFG264YbYBAAAAwCzvKfXFF1+kBx98sNrL47Jhw4bV5tAAAAAANAC1qpQ67rjj0vjx49N2221X5eVXXnll1mtq0KBBMzs+AAAAAOZCtaqUGjx4cNp8882rvXzTTTdNL7744syMCwAAAIC5WK1CqTFjxqT555+/2stbtWqVrcQHAAAAAHUWSnXs2DG99NJL1V4eVVIdOnSozaEBAAAAaABqFUrtscce6bbbbkuXXXZZmjJlSsX+yZMnp0svvTTdfvvtac8996zLcQIAAADQ0Budn3TSSek///lPOvroo9M555yTOnfunO3/+OOP03fffZe6d++eTjnllLoeKwAAAAANuVJqnnnmSU888US6/vrr09prr52+//77bIuvb7jhhvTUU09l1wEAAACAOqmU+uWXX7IqqE022STtv//+2QYAAAAAs7RSqmXLlumaa65Jo0aNmtGbAgAAAEDtp+9169Ytvffee7W5KQAAAADULpS65JJL0qBBg9J1112Xfv/997ofFQAAAABztVqtvrfffvulxo0bp0MPPTQdeeSR6Q9/+EM2ra9Uo0aN0jvvvFNX4wQAAACgoYdSbdu2Te3atUudO3eu+xEBAAAAMNerVSj13HPP1f1IAAAAAGgwatVTCgAAAADqJZQaP3586tevX+rZs2daffXV02uvvZbtHz16dLrooovSZ599NlMDAwAAAGDuVavpeyNHjkwbb7xxGjFiRFpuueXSRx99lCZMmFDRb+qaa65JX375Zbr00kvrerwAAAAANNRQ6vjjj08//vhjevvtt9MiiyySbaV23HHH9NBDD9XVGAEAAACYy9Rq+t4TTzyRjjzyyNSlS5fUqFGjqS5feumlsyoqAAAAAKizUOqXX35JCy+8cLWXRxUVAAAAANRpKBUVUi+88EK1l993331Z83MAAAAAqLNQ6uijj06DBg1K5513Xho3bly2b8qUKdmKe/vss08aPHhw6tOnT20ODQAAAEADUKtG53vvvXe2ut6pp56aTjnllGzflltumQqFQmrcuHE699xzs2bnAAAAAFBnoVSIMCqqou6+++6sQioqpZZZZpm00047ZY3OAQAAAKBOQqlff/013X///emLL75I7dq1S9tuu61pegAAAADMulDq22+/Teuvv34WSMU0vTDvvPNmTc0322yzGb9nAAAAABqsGjc6//vf/56GDRuWVUY99NBD6ZJLLkktW7ZMhx566KwdIQAAAAANt1LqiSeeSPvuu2+68MILK/Ytuuiiac8990wff/xx6ty586waIwAAAAANtVJq+PDhacMNNyzbF9/HVL5Ro0bNirEBAAAA0NBDqYkTJ6YWLVqU7St+//vvv9f9yAAAAACYa83Q6nvRU+qtt96q+H7cuHHZv59++mlaYIEFprr+GmusMUOD6du3b7rnnnvSRx99lPWrisbq5513XtnUwFgB8Nhjj02DBg3KgrKePXum/v37Z1MJAQAAAJgzNCoUl9KbjsaNG6dGjRpNtT9uXnl/cd/kyZNnaDBbbrll2n333dNaa62VVV+dfPLJ6b333ksffPBBmm+++bLrHHbYYenhhx9OAwcOTG3atElHHHFENraXXnqpRvcxfvz47HYRqLVu3TrN6Va5cZX6HgLQwA3pNaS+hzDb63Tiw/U9BIA0rN829T0EABqI8TXMXmpcKTVgwIA0qz322GNl30fwtMgii6Q333wzbbTRRtmDuf7669Ott96aevToUTGuFVdcMb3yyitp3XXXneVjBAAAAGDm1TiU6tWrV8pbcXpg27Zts38jnPrtt9/SZpttVnGdFVZYIXXs2DENHjxYKAUAAAAwN/aUytOUKVPS0UcfnTbYYIO08sorZ/u++eab1Lx586n6V0U/qbisKtF3KrbSEjIAAAAA5pDV9/J2+OGHZ/2koqH5zIjm6TGPsbgtscQSdTZGAAAAAOaiUCqalz/00EPp2WefTR06dKjY3759+zRp0qQ0duzYsuuPGjUqu6wqJ510UjYNsLiNGDFilo8fAAAAgDkolIpV+yKQuvfee9MzzzyTllpqqbLLu3Xrlpo1a5aefvrpin0ff/xxGj58eFpvvfWqPOY888yTdXov3QAAAACoX01ntyl7sbLe/fffn+aff/6KPlEx7a5ly5bZvwceeGA65phjsubnETD17t07C6Q0OQcAAACYc8xWodRVV12V/du9e/ey/QMGDEj77bdf9vXFF1+cGjdunHbeeeesgXnPnj1T//7962W8AAAAAMwFoVRM35ueFi1apCuvvDLbAAAAAJgzzVY9pQAAAABoGIRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAAOROKAUAAABA7oRSAAAAADTsUOqFF15I2223XVp88cVTo0aN0n333Vd2eaFQSKeffnpabLHFUsuWLdNmm22WPv3003obLwAAAABzQSj1008/pVVXXTVdeeWVVV5+/vnnp8suuyxdffXV6dVXX03zzTdf6tmzZ/r1119zHysAAAAAtdc0zUa22mqrbKtKVEldcskl6dRTT0077LBDtu+mm25Kiy66aFZRtfvuu+c8WgAAAADmikqpafniiy/SN998k03ZK2rTpk1aZ5110uDBg+t1bAAAAADMwZVS0xKBVIjKqFLxffGyqkycODHbisaPHz8LRwkAAADAXFUpVVt9+/bNKqqK2xJLLFHfQwIAAABo8OaYUKp9+/bZv6NGjSrbH98XL6vKSSedlMaNG1exjRgxYpaPFQAAgDlH9+7dsxXgq9oGDRpU5W2+/vrr9Le//S2tttpqaf75508dOnRIe+65Z/ryyy+nes8avZNbt26dNtxww/TZZ5+VXT569Oi0yCKLpDfffHOWPkaYHc0xodRSSy2VhU9PP/102VS8WIVvvfXWq/Z288wzT/bLX7oBAABAUf/+/bNexaXbbrvtlpo2bVrW17hUhEj33HNP2nXXXdP999+fLrroojRkyJC09tprp++++67ien369Em///57uuuuu7L3p/vtt1/ZcU477bRsMa9u3brN8scJs5vZqqfUhAkTylLjaG7+9ttvp7Zt26aOHTumo48+Ov3jH/9Iyy23XBZSxS/v4osvnnbcccd6HTcAAABzri5duky177XXXktbbLFFWmihhaq8TVQ9ffTRR1lwVbT++utn711jpfhjjz022/fkk0+mRx55JK211lpZS5l11103/fTTT2m++eZL7777brr99tvThx9+OAsfHcy+ZqtQ6o033kibbLJJxffHHHNM9m+vXr3SwIEDs9LI+OU95JBD0tixY7OTwGOPPZZatGhRj6MGAABgbvLyyy9nRRJRFFGdBRZYYKp9MYVv4YUXTl999VXFvlh4q2XLltnX8847b/bvpEmTslDqyCOPzIot4jbQEDWd3ebxFgqFai+P+bxnn312tgEAAMCscOutt2ahUUyrmxGffPJJ+vbbb9OKK65YsS8qpGJ64DnnnJOuvPLKtMwyy6QFF1wwq5D6/vvv0+GHHz4LHgHMGWarUAoAAADqU/R/uuOOO9L222+fBVM1FQUWUfkULWb22GOPiv0XXnhh2nrrrdNVV12VTd+7++67088//5yOP/74NGDAgLLpf9DQzDGNzgEAAGBWix5Q0ag8VtKbEWeeeWa2MFf0kyoNs1ZfffU0fPjwrP/UN998kzbddNPUt2/frIIqvn744YfTSiutlPWuiibo0bIGGgqhFAAAAJRM3WvXrl3q2bNnjW9z7bXXZm1mrrnmmixoqqxZs2apc+fOWT/k6FUV0/j++c9/ZlP9YpW/M844I1v0KxqeT6uPFcxthFIAAACQUvrll1/Sfffdl3bZZZcsSKqJe++9Nx122GFZKHXAAQdM9/qxoFfv3r1Tp06d0iuvvJIFVbvuumvWOH2fffbJKrWgoTB5FQAAAFJKDzzwQJowYUKNp+4999xzWf+ogw8+OFtFb3qeeuqp9NZbb2XVWEWxEt/kyZNTkyZNsql701r8C+Y2QikAAAD4f1P3OnbsmDbccMOpLotpeV9++WU2zS7EVLsdd9wxLbfcclmFU1Q9FS288MLZKnuVG6hHI/RofN6yZcts3zrrrJMFUn/7299Sjx49sml9u++++yx/nDC7EEoBAADQ4I0ZMyY99thj6eijj06NGjWa6vIIjyJYKnr11VfTuHHjsm2DDTYou26vXr3SwIEDy/ZdfvnlqX379tnUwKJFF1003Xbbbem4445L1113Xdpmm21qVHEFc4tGhQZWGzh+/PhsGc44cbRu3TrN6Va5cZX6HgLQwA3pNaS+hzDb63Tiw/U9BIA0rN829T0EABqI8TXMXjQ6BwAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3QikAAAAAcieUAgAAACB3TfO/SwAAgNnLhyusWN9DAEgrfvRhakhUSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALkTSgEAAACQO6EUAAAAALmbI0OpK6+8MnXq1Cm1aNEirbPOOum1116r7yEBAAAAMDeHUrfffns65phj0hlnnJHeeuuttOqqq6aePXumb7/9tr6HBgAAAMDcGkpddNFF6eCDD077779/6tKlS7r66qvTvPPOm2644Yb6HhoAAAAANdQ0zUEmTZqU3nzzzXTSSSdV7GvcuHHabLPN0uDBg6u8zcSJE7OtaNy4cdm/48ePT3ODyb9Mru8hAA3c3HI+nZWmTPy5vocA4Hw9HRMm+/9qoP6Nn0vO1cXHUSgU5p5Q6vvvv0+TJ09Oiy66aNn++P6jjz6q8jZ9+/ZNZ5111lT7l1hiiVk2ToCGpM1hbep7CADUQJtL6nsEAExXm7nr/61//PHH1GYaj2mOCqVqI6qqogdV0ZQpU9Lo0aNTu3btUqNGjep1bDA7pNcR0I4YMSK1bt26vocDQBWcqwHmDM7X8P+LCqkIpBZffPE0LXNUKLXQQgulJk2apFGjRpXtj+/bt29f5W3mmWeebCu1wAILzNJxwpwm/mj6wwkwe3OuBpgzOF/D/5lWhdQc2ei8efPmqVu3bunpp58uq3yK79dbb716HRsAAAAANTdHVUqFmIrXq1evtOaaa6a11147XXLJJemnn37KVuMDAAAAYM4wx4VSu+22W/ruu+/S6aefnr755pu02mqrpccee2yq5ufA9MXU1jPOOGOqKa4AzD6cqwHmDM7XMOMaFaa3Ph8AAAAA1LE5qqcUAAAAAHMHoRQAAAAAuRNKAQAAAJA7oRRQZ/bZZ5907rnnztQxdt999/TPf/6zzsYEwPT98MMPaZFFFknDhg2r9TG+//777BgjR46s07EBUG7SpElp2WWXTS+//PJMHaNTp07pjTfeqNOxwYwSSkEOYsXIww47LHXs2DFbjaN9+/apZ8+e6aWXXkqzm+eeey41atRoqi1Wu5yWd955Jz3yyCPpyCOPrNh34YUXZm9QYqscNL366qupW7du6ffffy/bf+qpp6ZzzjknjRs3ro4fGcCcd04uFeNr2rRptvJwXYvz7g477JC9QQmjR49O2223XWrVqlVaffXV03//+9+y6x9++OFTndcXWmihtO+++2YrTwE0pHP1119/nfbcc8+0/PLLp8aNG6ejjz66Rrfr27dvWmuttdL888+f/f/yjjvumD7++OPp3u7qq69OSy21VFp//fWz7ydOnJh9ONy6detsDE899VTZ9S+44ILUu3fvsn3NmzdPxx13XDrhhBNm6LFCXRNKQQ523nnn7H/ob7zxxvTJJ5+kBx54IHXv3j37ZHpWiU8/Zkb8QYw/sMUt/lBOy+WXX5522WWX7A1MePfdd9Ppp5+eBg0alG677bYsbBoyZEh2WQRRf/nLX7I/qPEGq9TKK6+clllmmfTvf/97psYPMDedk8eOHZsFPptuuul0rxuPZeDAgTU+9s8//5yuv/76dOCBB5aFVD/++GN66623suMdfPDBFZe98sor2QcLVb3p2n///dMtt9yShVoADeVcHaHQwgsvnP3/7qqrrlrj2z3//PNZyB/n1SeffDL99ttvaYsttkg//fRTtbcpFArpiiuuKDtn/+tf/0pvvvlmGjx4cDrkkEOygCyuF7744ot07bXXZuf1yvbaa6/0n//8J73//vsz/JihzhSAWWrMmDHxF6Hw3HPPTfd6hxxySGGRRRYpzDPPPIWVVlqp8OCDD1ZcftdddxW6dOlSaN68eWHJJZcsXHjhhWW3j31nn312YZ999inMP//8hV69emX7X3zxxcKGG25YaNGiRaFDhw6F3r17FyZMmFDtOJ599tlsvDGemvr9998Lbdq0KTz00EMV+26//fbCOuusU/H92muvXbjjjjuyr88999zCkUceWe3xzjrrrGzMAA39nFy02267FU499dTCGWecUVh11VWned2NN964MGDAgEJN3XnnnYWFF164bN9WW21VuOqqq7KvP/jgg8K8886bfT1p0qTs/l9//fVqj7fUUksVrrvuuhrfP8Dccq4unoOPOuqoWj3ub7/9Nnvczz//fLXXifNv48aNC+PHj6/Yd9hhhxVOOOGE7Ouff/45O0YcK/Ts2bNwzz33VHu8TTbZJPv7AvVFpRTMYlE5FNt9992XfYpSlSlTpqStttoqK0eOCqEPPvgg9evXLzVp0iS7PD752HXXXbN+S1FtdOaZZ6bTTjttqk/CY7pcfDoTnyrF5Z9//nnacssts0+aonLp9ttvzz4NOeKII6Y77pgesthii6XNN998umXSceyYbrfmmmtW7FtllVWyT7WGDx+evvzyy+zrqIKKMQ0YMCD94x//qPZ4a6+9dnrttdeqfb4AGtI5Oc6ZQ4cOnWXT4l588cVsOnWpGPczzzyTVbY+/vjjqWvXrtn+888/P6tUKD3fV3UOj2MCNKRzdV0otq9o27ZttdeJ82tM0Yspf0Ux/hjjL7/8kp2z4//hY0p1VK62aNEi/elPf6r2eM7Z1Lt6i8OgAYlPaRZccMHs05b111+/cNJJJxXeeeedissff/zx7BOPjz/+uMrb77nnnoXNN9+8bN/xxx+fffJT+knPjjvuWHadAw88MPv0qFR88hP39csvv1R5Xx999FHh6quvLrzxxhuFl156qbD//vsXmjZtWnjzzTerfXz33ntvoUmTJoUpU6aU7Y9P2ZdffvlsK37ivumm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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "SATISFACTION INSIGHTS:\n",
- "Overall Satisfaction Level: Good\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Customer satisfaction analysis\n",
- "satisfaction_metrics = business_report['customer_satisfaction']\n",
+ "print(f\"Analyzing customer satisfaction for {ANALYSIS_YEAR}...\")\n",
+ "satisfaction_metrics = metrics_calculator.analyze_customer_satisfaction(ANALYSIS_YEAR)\n",
"\n",
"if 'error' not in satisfaction_metrics:\n",
- " print(f\"CUSTOMER SATISFACTION ANALYSIS - {ANALYSIS_YEAR}\")\n",
- " print(\"=\" * 50)\n",
+ " print(\"\\nCUSTOMER SATISFACTION METRICS:\")\n",
+ " print(\"=\" * 40)\n",
" print(f\"Average Review Score: {satisfaction_metrics['avg_review_score']:.2f}/5.0\")\n",
" print(f\"Total Reviews: {satisfaction_metrics['total_reviews']:,}\")\n",
" print(f\"5-Star Reviews: {satisfaction_metrics['score_5_percentage']:.1f}%\")\n",
" print(f\"4+ Star Reviews: {satisfaction_metrics['score_4_plus_percentage']:.1f}%\")\n",
- " print(f\"Low Satisfaction (1-2 stars): {satisfaction_metrics['score_1_2_percentage']:.1f}%\")\n",
- " \n",
- " # Review distribution visualization\n",
- " review_fig = visualizer.plot_review_distribution(figsize=(12, 6))\n",
- " plt.show()\n",
- " \n",
- " # Satisfaction insights\n",
- " avg_score = satisfaction_metrics['avg_review_score']\n",
- " satisfaction_level = 'Excellent' if avg_score >= 4.5 else 'Good' if avg_score >= 4.0 else 'Fair' if avg_score >= 3.5 else 'Poor'\n",
- " \n",
- " print(f\"\\nSATISFACTION INSIGHTS:\")\n",
- " print(f\"Overall Satisfaction Level: {satisfaction_level}\")\n",
- " if satisfaction_metrics['score_4_plus_percentage'] >= 80:\n",
- " print(\"✅ Strong customer satisfaction (80%+ give 4+ stars)\")\n",
- " elif satisfaction_metrics['score_1_2_percentage'] > 10:\n",
- " print(\"⚠️ Significant dissatisfaction detected (>10% give 1-2 stars)\")\n",
+ " print(f\"Low Satisfaction (1-2 Stars): {satisfaction_metrics['score_1_2_percentage']:.1f}%\")\n",
"else:\n",
- " print(\"Customer satisfaction data not available for analysis\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "DELIVERY PERFORMANCE ANALYSIS - 2023\n",
- "==================================================\n",
- "Average Delivery Time: 8.0 days\n",
- "Median Delivery Time: 8.0 days\n",
- "Fast Delivery (≤3 days): 7.2%\n",
- "Slow Delivery (>7 days): 55.6%\n",
- "\n",
- "DELIVERY INSIGHTS:\n",
- "Delivery Performance Rating: Poor\n",
- "⚠️ High percentage of slow deliveries needs attention\n",
- "\n",
- "DELIVERY-SATISFACTION CORRELATION:\n",
- "Average satisfaction score: 4.10\n",
- "Fast delivery rate: 7.2%\n"
- ]
- }
- ],
- "source": [
+ " print(\"Customer satisfaction data not available\")\n",
+ "\n",
"# Delivery performance analysis\n",
- "delivery_metrics = business_report['delivery_performance']\n",
+ "print(f\"\\nAnalyzing delivery performance for {ANALYSIS_YEAR}...\")\n",
+ "delivery_metrics = metrics_calculator.analyze_delivery_performance(ANALYSIS_YEAR)\n",
"\n",
"if 'error' not in delivery_metrics:\n",
- " print(f\"DELIVERY PERFORMANCE ANALYSIS - {ANALYSIS_YEAR}\")\n",
- " print(\"=\" * 50)\n",
+ " print(\"\\nDELIVERY PERFORMANCE METRICS:\")\n",
+ " print(\"=\" * 40)\n",
" print(f\"Average Delivery Time: {delivery_metrics['avg_delivery_days']:.1f} days\")\n",
" print(f\"Median Delivery Time: {delivery_metrics['median_delivery_days']:.1f} days\")\n",
" print(f\"Fast Delivery (≤3 days): {delivery_metrics['fast_delivery_percentage']:.1f}%\")\n",
" print(f\"Slow Delivery (>7 days): {delivery_metrics['slow_delivery_percentage']:.1f}%\")\n",
- " \n",
- " # Delivery performance evaluation\n",
- " avg_delivery = delivery_metrics['avg_delivery_days']\n",
- " delivery_rating = 'Excellent' if avg_delivery <= 3 else 'Good' if avg_delivery <= 5 else 'Fair' if avg_delivery <= 7 else 'Poor'\n",
- " \n",
- " print(f\"\\nDELIVERY INSIGHTS:\")\n",
- " print(f\"Delivery Performance Rating: {delivery_rating}\")\n",
- " \n",
- " if delivery_metrics['fast_delivery_percentage'] >= 30:\n",
- " print(\"✅ Strong fast delivery capability\")\n",
- " if delivery_metrics['slow_delivery_percentage'] > 20:\n",
- " print(\"⚠️ High percentage of slow deliveries needs attention\")\n",
- " \n",
- " # Delivery speed impact on satisfaction\n",
- " if 'error' not in satisfaction_metrics:\n",
- " print(f\"\\nDELIVERY-SATISFACTION CORRELATION:\")\n",
- " # This would require more detailed analysis of the relationship\n",
- " print(f\"Average satisfaction score: {satisfaction_metrics['avg_review_score']:.2f}\")\n",
- " print(f\"Fast delivery rate: {delivery_metrics['fast_delivery_percentage']:.1f}%\")\n",
"else:\n",
- " print(\"Delivery performance data not available for analysis\")"
+ " print(\"Delivery performance data not available\")"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": null,
"metadata": {},
+ "outputs": [],
"source": [
- "## 6. Summary of Key Observations {#summary}\n",
+ "# Create customer experience visualizations\n",
+ "fig, axes = plt.subplots(2, 2, figsize=(16, 12))\n",
+ "\n",
+ "# Review score distribution\n",
+ "if 'error' not in satisfaction_metrics:\n",
+ " # Get review distribution from sales data\n",
+ " current_year_data = sales_data[sales_data['purchase_year'] == ANALYSIS_YEAR]\n",
+ " review_counts = current_year_data.drop_duplicates('order_id')['review_score'].value_counts().sort_index()\n",
+ " \n",
+ " colors = ['#d62728', '#ff7f0e', '#ffbb78', '#2ca02c', '#1f77b4']\n",
+ " bars = axes[0,0].bar(review_counts.index, review_counts.values, color=colors)\n",
+ " axes[0,0].set_title(f'Review Score Distribution - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
+ " axes[0,0].set_xlabel('Review Score', fontsize=12)\n",
+ " axes[0,0].set_ylabel('Number of Reviews', fontsize=12)\n",
+ " axes[0,0].grid(True, alpha=0.3)\n",
+ " \n",
+ " # Add percentage labels\n",
+ " total_reviews = review_counts.sum()\n",
+ " for bar, count in zip(bars, review_counts.values):\n",
+ " percentage = count / total_reviews * 100\n",
+ " axes[0,0].text(bar.get_x() + bar.get_width()/2, bar.get_height() + total_reviews * 0.01,\n",
+ " f'{percentage:.1f}%', ha='center', va='bottom', fontsize=10)\n",
+ "else:\n",
+ " axes[0,0].text(0.5, 0.5, 'Review data not available', ha='center', va='center', \n",
+ " transform=axes[0,0].transAxes, fontsize=14)\n",
"\n",
- "### Executive Summary\n",
+ "# Delivery time distribution\n",
+ "if 'error' not in delivery_metrics:\n",
+ " delivery_data = current_year_data.drop_duplicates('order_id')['delivery_days'].dropna()\n",
+ " \n",
+ " axes[0,1].hist(delivery_data, bins=30, color='skyblue', alpha=0.7, edgecolor='black')\n",
+ " axes[0,1].axvline(delivery_data.mean(), color='red', linestyle='--', linewidth=2, \n",
+ " label=f'Mean: {delivery_data.mean():.1f} days')\n",
+ " axes[0,1].axvline(delivery_data.median(), color='green', linestyle='--', linewidth=2,\n",
+ " label=f'Median: {delivery_data.median():.1f} days')\n",
+ " axes[0,1].set_title(f'Delivery Time Distribution - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
+ " axes[0,1].set_xlabel('Delivery Days', fontsize=12)\n",
+ " axes[0,1].set_ylabel('Number of Orders', fontsize=12)\n",
+ " axes[0,1].legend()\n",
+ " axes[0,1].grid(True, alpha=0.3)\n",
+ "else:\n",
+ " axes[0,1].text(0.5, 0.5, 'Delivery data not available', ha='center', va='center', \n",
+ " transform=axes[0,1].transAxes, fontsize=14)\n",
+ "\n",
+ "# Satisfaction by delivery speed\n",
+ "if 'error' not in satisfaction_metrics and 'error' not in delivery_metrics:\n",
+ " # Categorize delivery times\n",
+ " order_data = current_year_data.drop_duplicates('order_id').copy()\n",
+ " order_data['delivery_category'] = pd.cut(\n",
+ " order_data['delivery_days'], \n",
+ " bins=[0, 3, 7, float('inf')], \n",
+ " labels=['1-3 days', '4-7 days', '8+ days']\n",
+ " )\n",
+ " \n",
+ " satisfaction_by_speed = order_data.groupby('delivery_category')['review_score'].mean()\n",
+ " \n",
+ " bars = axes[1,0].bar(range(len(satisfaction_by_speed)), satisfaction_by_speed.values, \n",
+ " color=['#2ca02c', '#ff7f0e', '#d62728'])\n",
+ " axes[1,0].set_xticks(range(len(satisfaction_by_speed)))\n",
+ " axes[1,0].set_xticklabels(satisfaction_by_speed.index)\n",
+ " axes[1,0].set_title(f'Average Review Score by Delivery Speed - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
+ " axes[1,0].set_xlabel('Delivery Time Category', fontsize=12)\n",
+ " axes[1,0].set_ylabel('Average Review Score', fontsize=12)\n",
+ " axes[1,0].set_ylim(0, 5)\n",
+ " axes[1,0].grid(True, alpha=0.3)\n",
+ " \n",
+ " # Add value labels\n",
+ " for bar, value in zip(bars, satisfaction_by_speed.values):\n",
+ " axes[1,0].text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.05,\n",
+ " f'{value:.2f}', ha='center', va='bottom', fontsize=11)\n",
+ "else:\n",
+ " axes[1,0].text(0.5, 0.5, 'Insufficient data for analysis', ha='center', va='center', \n",
+ " transform=axes[1,0].transAxes, fontsize=14)\n",
"\n",
- "Based on the comprehensive analysis of the e-commerce data, here are the key findings and recommendations:"
+ "# Order status distribution\n",
+ "status_data = sales_data[sales_data['purchase_year'] == ANALYSIS_YEAR]['order_status'].value_counts()\n",
+ "wedges, texts, autotexts = axes[1,1].pie(status_data.values, labels=status_data.index, autopct='%1.1f%%',\n",
+ " colors=plt.cm.Set3(np.linspace(0, 1, len(status_data))))\n",
+ "axes[1,1].set_title(f'Order Status Distribution - {ANALYSIS_YEAR}', fontsize=14, fontweight='bold')\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
]
},
{
- "cell_type": "code",
- "execution_count": 13,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "EXECUTIVE SUMMARY - 2023 BUSINESS PERFORMANCE\n",
- "============================================================\n",
- "\n",
- "📊 FINANCIAL PERFORMANCE:\n",
- " • Total Revenue: $3,360,295\n",
- " • Total Orders: 4,635\n",
- " • Average Order Value: $725\n",
- " • Revenue Growth: 📉 -2.5% vs 2022\n",
- "\n",
- "🛍️ PRODUCT PERFORMANCE:\n",
- " • Top Category: electronics ($1,401,359)\n",
- " • Category Market Share: 41.7%\n",
- "\n",
- "🗺️ GEOGRAPHIC PERFORMANCE:\n",
- " • Top Market: CA ($537,881)\n",
- " • Active Markets: 20 states\n",
- "\n",
- "⭐ CUSTOMER EXPERIENCE:\n",
- " • Average Rating: 4.1/5.0\n",
- " • High Satisfaction: 52% (4+ stars)\n",
- " • Average Delivery: 8.0 days\n",
- " • Fast Delivery: 7% (≤3 days)\n",
- "\n",
- "============================================================\n"
- ]
- }
- ],
"source": [
- "# Generate executive summary\n",
- "print(f\"EXECUTIVE SUMMARY - {ANALYSIS_YEAR} BUSINESS PERFORMANCE\")\n",
- "print(\"=\" * 60)\n",
- "\n",
- "# Key metrics summary\n",
- "revenue_metrics = business_report['revenue_metrics']\n",
- "print(f\"\\n📊 FINANCIAL PERFORMANCE:\")\n",
- "print(f\" • Total Revenue: ${revenue_metrics['total_revenue']:,.0f}\")\n",
- "print(f\" • Total Orders: {revenue_metrics['total_orders']:,}\")\n",
- "print(f\" • Average Order Value: ${revenue_metrics['average_order_value']:,.0f}\")\n",
- "\n",
- "if 'revenue_growth_rate' in revenue_metrics:\n",
- " growth_direction = \"📈\" if revenue_metrics['revenue_growth_rate'] > 0 else \"📉\"\n",
- " print(f\" • Revenue Growth: {growth_direction} {revenue_metrics['revenue_growth_rate']:+.1f}% vs {COMPARISON_YEAR}\")\n",
- "\n",
- "# Product insights\n",
- "if 'error' not in business_report['product_performance']:\n",
- " top_category = business_report['product_performance']['top_categories'].iloc[0]\n",
- " print(f\"\\n🛍️ PRODUCT PERFORMANCE:\")\n",
- " print(f\" • Top Category: {top_category['product_category_name']} (${top_category['total_revenue']:,.0f})\")\n",
- " print(f\" • Category Market Share: {top_category['revenue_share']:.1f}%\")\n",
- "\n",
- "# Geographic insights\n",
- "geo_data = business_report['geographic_performance']\n",
- "if 'error' not in geo_data.columns:\n",
- " top_state = geo_data.iloc[0]\n",
- " print(f\"\\n🗺️ GEOGRAPHIC PERFORMANCE:\")\n",
- " print(f\" • Top Market: {top_state['state']} (${top_state['revenue']:,.0f})\")\n",
- " print(f\" • Active Markets: {len(geo_data)} states\")\n",
- "\n",
- "# Customer experience\n",
- "if 'error' not in business_report['customer_satisfaction']:\n",
- " satisfaction = business_report['customer_satisfaction']\n",
- " print(f\"\\n⭐ CUSTOMER EXPERIENCE:\")\n",
- " print(f\" • Average Rating: {satisfaction['avg_review_score']:.1f}/5.0\")\n",
- " print(f\" • High Satisfaction: {satisfaction['score_4_plus_percentage']:.0f}% (4+ stars)\")\n",
- "\n",
- "if 'error' not in business_report['delivery_performance']:\n",
- " delivery = business_report['delivery_performance']\n",
- " print(f\" • Average Delivery: {delivery['avg_delivery_days']:.1f} days\")\n",
- " print(f\" • Fast Delivery: {delivery['fast_delivery_percentage']:.0f}% (≤3 days)\")\n",
- "\n",
- "print(f\"\\n\" + \"=\" * 60)"
+ "### Customer Experience Insights\n",
+ "\n",
+ "**Key Findings:**\n",
+ "- Customer satisfaction levels indicate overall service quality and areas for improvement\n",
+ "- Delivery performance directly correlates with customer satisfaction scores\n",
+ "- Fast delivery (1-3 days) typically results in higher customer satisfaction ratings\n",
+ "- Order fulfillment rates demonstrate operational efficiency"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Strategic Recommendations\n",
+ "## 9. Executive Summary & Recommendations {#summary}\n",
"\n",
- "Based on the analysis results, here are the key strategic recommendations:"
+ "Strategic insights and actionable recommendations based on comprehensive business intelligence analysis."
]
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "STRATEGIC RECOMMENDATIONS\n",
- "========================================\n",
- "1. 🔴 PRIORITY: Address negative revenue growth through customer acquisition and retention strategies\n",
- "2. 📦 Consider diversifying product portfolio to reduce dependency on top categories\n",
- "3. 🚚 PRIORITY: Optimize logistics to reduce average delivery time\n",
- "4. ⚡ Invest in fast delivery capabilities to improve customer experience\n",
- "5. 🗺️ Explore expansion opportunities in underserved geographic markets\n",
- "\n",
- "========================================\n",
- "Analysis completed for 2023\n",
- "Comparison baseline: 2022\n",
- "Generated on: 2025-08-05 04:55:02\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "# Generate recommendations based on analysis\n",
- "print(\"STRATEGIC RECOMMENDATIONS\")\n",
- "print(\"=\" * 40)\n",
+ "# Generate comprehensive business report\n",
+ "print(\"Generating comprehensive business intelligence report...\")\n",
+ "comprehensive_report = metrics_calculator.generate_comprehensive_report(\n",
+ " current_year=ANALYSIS_YEAR,\n",
+ " previous_year=COMPARISON_YEAR\n",
+ ")\n",
"\n",
- "recommendations = []\n",
- "\n",
- "# Revenue-based recommendations\n",
- "if 'revenue_growth_rate' in revenue_metrics:\n",
- " if revenue_metrics['revenue_growth_rate'] < 0:\n",
- " recommendations.append(\"🔴 PRIORITY: Address negative revenue growth through customer acquisition and retention strategies\")\n",
- " elif revenue_metrics['revenue_growth_rate'] < 5:\n",
- " recommendations.append(\"🟡 Focus on accelerating growth through market expansion and product diversification\")\n",
- " else:\n",
- " recommendations.append(\"🟢 Maintain strong growth momentum while optimizing operational efficiency\")\n",
- "\n",
- "# Product recommendations\n",
- "if 'error' not in business_report['product_performance']:\n",
- " top_5_share = business_report['product_performance']['top_categories'].head(5)['revenue_share'].sum()\n",
- " if top_5_share > 70:\n",
- " recommendations.append(\"📦 Consider diversifying product portfolio to reduce dependency on top categories\")\n",
- " else:\n",
- " recommendations.append(\"📦 Leverage balanced product portfolio to explore cross-selling opportunities\")\n",
- "\n",
- "# Customer experience recommendations\n",
- "if 'error' not in business_report['customer_satisfaction']:\n",
- " satisfaction = business_report['customer_satisfaction']\n",
- " if satisfaction['avg_review_score'] < 4.0:\n",
- " recommendations.append(\"⭐ PRIORITY: Improve customer satisfaction through quality and service enhancements\")\n",
- " if satisfaction['score_1_2_percentage'] > 10:\n",
- " recommendations.append(\"⚠️ Address root causes of customer dissatisfaction to reduce negative reviews\")\n",
- "\n",
- "# Delivery recommendations\n",
- "if 'error' not in business_report['delivery_performance']:\n",
- " delivery = business_report['delivery_performance']\n",
- " if delivery['avg_delivery_days'] > 7:\n",
- " recommendations.append(\"🚚 PRIORITY: Optimize logistics to reduce average delivery time\")\n",
- " if delivery['fast_delivery_percentage'] < 20:\n",
- " recommendations.append(\"⚡ Invest in fast delivery capabilities to improve customer experience\")\n",
- "\n",
- "# Geographic recommendations\n",
- "geo_data = business_report['geographic_performance']\n",
- "if 'error' not in geo_data.columns:\n",
- " if len(geo_data) < 30:\n",
- " recommendations.append(\"🗺️ Explore expansion opportunities in underserved geographic markets\")\n",
- "\n",
- "# Display recommendations\n",
- "for i, rec in enumerate(recommendations, 1):\n",
- " print(f\"{i}. {rec}\")\n",
- "\n",
- "if not recommendations:\n",
- " print(\"✅ Business performance appears strong across all analyzed metrics\")\n",
- "\n",
- "print(\"\\n\" + \"=\" * 40)\n",
- "print(f\"Analysis completed for {ANALYSIS_YEAR}\")\n",
- "if COMPARISON_YEAR:\n",
- " print(f\"Comparison baseline: {COMPARISON_YEAR}\")\n",
- "print(f\"Generated on: {pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')}\")"
+ "# Print formatted summary\n",
+ "print_metrics_summary(comprehensive_report)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "---\n",
+ "### Strategic Recommendations\n",
+ "\n",
+ "Based on the comprehensive analysis, here are key strategic recommendations:\n",
"\n",
- "## Analysis Configuration Summary\n",
+ "#### Revenue Optimization\n",
+ "- **Focus on High-Performing Categories**: Invest marketing resources in top revenue-generating product categories\n",
+ "- **Average Order Value Enhancement**: Implement cross-selling and upselling strategies to increase AOV\n",
+ "- **Seasonal Planning**: Develop targeted campaigns for months showing consistent growth patterns\n",
"\n",
- "This notebook provides a comprehensive, configurable framework for e-commerce business analysis. Key features:\n",
+ "#### Geographic Expansion\n",
+ "- **Market Penetration**: Focus on underperforming states with high potential\n",
+ "- **Regional Customization**: Tailor product offerings based on regional preferences and performance\n",
+ "- **Logistics Optimization**: Improve delivery networks in high-revenue states\n",
"\n",
- "- **Configurable Time Periods**: Easily adjust analysis and comparison years\n",
- "- **Modular Architecture**: Reusable data loading and metrics calculation modules\n",
- "- **Comprehensive Metrics**: Revenue, product, geographic, and customer experience analysis\n",
- "- **Visual Insights**: Interactive charts and geographic visualizations\n",
- "- **Strategic Recommendations**: Data-driven business insights and action items\n",
+ "#### Customer Experience Enhancement\n",
+ "- **Delivery Speed Improvement**: Prioritize faster delivery options to boost customer satisfaction\n",
+ "- **Quality Control**: Address factors contributing to low review scores (1-2 stars)\n",
+ "- **Customer Retention**: Develop loyalty programs for high-satisfaction customers\n",
"\n",
- "### Next Steps\n",
+ "#### Operational Efficiency\n",
+ "- **Fulfillment Optimization**: Reduce delivery times, especially for orders taking more than 7 days\n",
+ "- **Inventory Management**: Ensure adequate stock for high-performing product categories\n",
+ "- **Process Improvement**: Streamline order processing to reduce cancellation rates\n",
"\n",
- "1. **Regular Monitoring**: Schedule monthly/quarterly runs of this analysis\n",
- "2. **Deeper Segmentation**: Analyze specific customer segments or product lines\n",
- "3. **Predictive Analytics**: Implement forecasting models for future planning\n",
- "4. **A/B Testing**: Design experiments to test strategic recommendations\n",
- "5. **Real-time Dashboards**: Create live dashboards for ongoing monitoring\n",
+ "### Key Performance Indicators (KPIs) to Monitor\n",
+ "\n",
+ "1. **Revenue Growth Rate**: Target consistent month-over-month growth\n",
+ "2. **Customer Satisfaction Score**: Maintain average review score above 4.0\n",
+ "3. **Delivery Performance**: Achieve >30% of orders delivered within 3 days\n",
+ "4. **Order Fulfillment Rate**: Maintain >95% successful delivery rate\n",
+ "5. **Geographic Diversification**: Reduce revenue concentration risk across states"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Next Steps and Action Items\n",
+ "\n",
+ "1. **Data Collection Enhancement**\n",
+ " - Implement more granular tracking for customer journey analysis\n",
+ " - Add product profitability data for comprehensive category analysis\n",
+ " - Include customer acquisition costs for ROI calculations\n",
+ "\n",
+ "2. **Analysis Automation**\n",
+ " - Schedule regular execution of this analysis for ongoing monitoring\n",
+ " - Set up alerting for significant performance changes\n",
+ " - Create executive dashboards for real-time KPI tracking\n",
+ "\n",
+ "3. **Advanced Analytics**\n",
+ " - Implement predictive models for demand forecasting\n",
+ " - Develop customer segmentation for targeted marketing\n",
+ " - Create churn prediction models for retention strategies\n",
"\n",
"---\n",
"\n",
- "*This analysis framework is designed to be easily maintained and extended for future business intelligence needs.*"
+ "**Analysis Configuration Summary:**\n",
+ "- **Primary Analysis Period:** {ANALYSIS_YEAR}\n",
+ "- **Comparison Period:** {COMPARISON_YEAR}\n",
+ "- **Data Source:** {DATA_PATH}\n",
+ "- **Analysis Scope:** {'Full Year' if ANALYSIS_MONTH is None else f'Month {ANALYSIS_MONTH}'}\n",
+ "\n",
+ "*This analysis was generated using a configurable framework that can be easily adapted for different time periods and business requirements.*"
]
}
],
@@ -1998,9 +779,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.13.5"
+ "version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
-}
+}
\ No newline at end of file
diff --git a/lesson7_files/README.md b/lesson7_files/README.md
index ce2b484..86be9b8 100644
--- a/lesson7_files/README.md
+++ b/lesson7_files/README.md
@@ -77,7 +77,12 @@ data_analysis/
4. **Run the applications**:
- **For Streamlit Dashboard**:
+ **For Professional Dashboard (NEW)**:
+ ```bash
+ streamlit run dashboard_new.py
+ ```
+
+ **For Original Dashboard**:
```bash
streamlit run dashboard.py
```
@@ -89,30 +94,93 @@ data_analysis/
## Usage Guide
-### Streamlit Dashboard
+### Professional Streamlit Dashboard (NEW)
+
+#### dashboard_new.py - Converted from EDA_Refactored.ipynb
+
+1. **Launch the professional dashboard**:
+ ```bash
+ streamlit run dashboard_new.py
+ ```
+
+2. **Professional Dashboard Layout**:
+ The new dashboard follows the exact layout specifications with professional styling:
+
+ **Header Section**:
+ - **Title**: "E-commerce Analytics Dashboard" (left-aligned)
+ - **Year Filter**: Dropdown selector (right-aligned) that applies globally to all visualizations
+
+ **KPI Row** (4 cards with uniform heights):
+ - **Total Revenue**: with trend indicator vs previous year (green/red arrows)
+ - **Monthly Growth**: average month-over-month growth percentage
+ - **Average Order Value**: with trend indicator vs previous year (green/red arrows)
+ - **Total Orders**: with trend indicator vs previous year (green/red arrows)
+
+ **Charts Grid** (2x2 layout):
+ - **Revenue Trend**: Line chart with solid line (current year) vs dashed line (previous year), grid lines, Y-axis as $300K format
+ - **Top 10 Categories**: Horizontal bar chart with blue gradient, sorted descending, values as $300K/$2M
+ - **Revenue by State**: US Choropleth map with blue color scale
+ - **Satisfaction vs Delivery**: Bar chart showing review scores by delivery time buckets (1-3 days, 4-7 days, 8+ days)
+
+ **Bottom Row** (2 cards with uniform heights):
+ - **Average Delivery Time**: Large number with trend indicator
+ - **Review Score**: Large number with star rating display and "Average Review Score" subtitle
+
+3. **Professional Features**:
+ - **Real-time filtering**: All charts update automatically when year is changed
+ - **Trend indicators**: Green/red arrows with two decimal places showing performance changes
+ - **Professional styling**: Clean, business-ready interface without icons
+ - **Plotly charts**: All visualizations use Plotly for professional presentation
+ - **Formatted values**: Currency displayed as $300K, $2M for readability
+ - **Grid lines**: Added to charts for easier reading
+ - **Uniform card heights**: Consistent sizing across rows
+ - **Data caching**: Optimized performance with Streamlit caching
+
+### Original Streamlit Dashboard
-1. **Launch the dashboard**:
+#### dashboard.py - Original Implementation
+
+1. **Launch the original dashboard**:
```bash
streamlit run dashboard.py
```
-2. **Navigate the interface**:
- - Use the **year filter** in the top-right to select analysis period
- - View **KPI cards** showing key metrics with trend indicators
- - Explore **interactive charts** in the 2x2 grid layout
- - Monitor **customer experience metrics** in the bottom row
+2. **Original Dashboard Layout**:
+ The dashboard follows a professional layout with these sections:
+
+ **Header Row**:
+ - **Title**: "E-commerce Analytics Dashboard" (left-aligned)
+ - **Year Filter**: Dropdown selector (right-aligned) that applies globally to all visualizations
+
+ **KPI Row** (4 cards):
+ - **Total Revenue**: with trend indicator vs previous year
+ - **Monthly Growth**: average month-over-month growth percentage
+ - **Average Order Value**: with trend indicator vs previous year
+ - **Total Orders**: with trend indicator vs previous year
+
+ **Charts Grid** (2x2 layout):
+ - **Revenue Trend**: Line chart showing current year (solid line) vs previous year (dashed line)
+ - **Top 10 Categories**: Horizontal bar chart with blue gradient, sorted descending
+ - **Revenue by State**: US Choropleth map with blue color scale
+ - **Satisfaction vs Delivery**: Bar chart showing review scores by delivery time buckets
+
+ **Bottom Row** (2 cards):
+ - **Average Delivery Time**: with trend indicator
+ - **Review Score**: Large number with star rating display
3. **Dashboard Features**:
- **Real-time filtering**: All charts update automatically when year is changed
- - **Professional styling**: Clean, business-ready interface
- - **Trend indicators**: Green/red arrows showing performance changes
- - **Formatted values**: Currency displayed as $300K, $2M for readability
+ - **Professional styling**: Clean, business-ready interface with uniform card heights
+ - **Trend indicators**: Green/red arrows with two decimal places showing performance changes
+ - **Formatted values**: Currency displayed as $300K, $2M for readability (no icons used)
+ - **Interactive charts**: All visualizations built with Plotly for professional presentation
+ - **Grid lines**: Added to charts for easier reading as specified
### Notebook Analysis
1. **Open the refactored notebook**: `EDA_Refactored.ipynb`
-2. **Configure analysis parameters** in the first code cell:
+2. **Configure analysis parameters** in the Configuration & Setup section:
```python
ANALYSIS_YEAR = 2023 # Year to analyze
COMPARISON_YEAR = 2022 # Comparison year (optional)
@@ -122,6 +190,37 @@ data_analysis/
3. **Run all cells** to generate the complete analysis
+#### EDA_Refactored.ipynb Features
+
+The refactored notebook provides a professional, well-structured analysis with:
+
+**Notebook Structure:**
+- **Table of Contents**: Clickable navigation between sections
+- **Introduction & Business Objectives**: Clear analysis goals and KPIs
+- **Configuration & Setup**: Flexible parameters for any time period
+- **Data Dictionary**: Comprehensive explanation of business terms and metrics
+- **Modular Analysis Sections**: Revenue, Product, Geographic, and Customer Experience
+- **Executive Summary**: Strategic recommendations and actionable insights
+
+**Technical Improvements:**
+- **Configurable Framework**: Easily analyze any year/month combination
+- **Module Integration**: Uses existing data_loader.py and business_metrics.py
+- **Clean Code**: Eliminates pandas warnings and follows best practices
+- **Professional Visualizations**: Business-ready charts with proper formatting
+- **Comprehensive Documentation**: Detailed explanations and insights
+
+**Analysis Sections:**
+1. **Revenue Performance**: Total revenue, growth rates, monthly trends, AOV analysis
+2. **Product Categories**: Top performers, revenue share, market analysis
+3. **Geographic Performance**: State-level revenue, market penetration, choropleth maps
+4. **Customer Experience**: Satisfaction scores, delivery performance, correlation analysis
+
+**Key Benefits:**
+- **Reusable**: Works with any date range without code modifications
+- **Maintainable**: Clear structure for future analysts
+- **Business-Oriented**: Focuses on actionable insights rather than technical details
+- **Professional Output**: Publication-ready visualizations and reports
+
### Advanced Configuration
#### Analyzing Specific Time Periods
@@ -282,26 +381,29 @@ def plot_custom_metric(self, data):
## Dashboard Features
-### Layout Structure
-- **Header**: Title with year selection filter (applies globally)
-- **KPI Row**: 4 metric cards with trend indicators
+### Layout Structure (Exact Implementation)
+- **Header**: Title left-aligned, Year filter right-aligned (applies globally to all charts)
+- **KPI Row**: 4 metric cards with trend indicators showing two decimal places
- Total Revenue, Monthly Growth, Average Order Value, Total Orders
- Color-coded trends (green for positive, red for negative)
-- **Charts Grid**: 2x2 interactive visualization layout
- - Revenue trend (current vs previous year)
- - Top 10 product categories bar chart
- - US state choropleth map
- - Customer satisfaction vs delivery time analysis
-- **Bottom Row**: Customer experience metrics
- - Average delivery time with trend
- - Review score with star rating
+ - Uniform card heights maintained across the row
+- **Charts Grid**: 2x2 interactive Plotly visualization layout
+ - Revenue trend with solid line (current) and dashed line (previous year)
+ - Top 10 product categories horizontal bar chart with blue gradient
+ - US state choropleth map with blue color scale
+ - Customer satisfaction vs delivery time bar chart (1-3 days, 4-7 days, 8+ days buckets)
+- **Bottom Row**: Customer experience metrics with uniform card heights
+ - Average delivery time with trend indicator
+ - Review score with large number display and star rating
### Technical Features
-- **Real-time Filtering**: All visualizations update automatically
-- **Professional Styling**: Business-ready interface with uniform card heights
+- **Y-axis Formatting**: Currency values formatted as $300K, $2M instead of $300,000
+- **No Icons**: Professional styling without icon usage as specified
+- **Grid Lines**: Added to charts for easier reading
+- **Real-time Filtering**: All visualizations update automatically when year filter changes
+- **Professional Styling**: Business-ready interface with consistent formatting
- **Plotly Charts**: Interactive, publication-quality visualizations
-- **Responsive Design**: Adapts to different screen sizes
-- **Error Handling**: Graceful handling of missing data
+- **Error Handling**: Graceful handling of missing data with appropriate fallbacks
## Future Enhancements
diff --git a/lesson7_files/convert-to-dashboard.md b/lesson7_files/convert-to-dashboard.md
new file mode 100644
index 0000000..b246986
--- /dev/null
+++ b/lesson7_files/convert-to-dashboard.md
@@ -0,0 +1,60 @@
+# Streamlit Dashboard Conversion Requirements
+
+Convert @EDA_Refactored.ipynb into a professional Streamlit dashboard with the following exact layout.
+
+
+## Layout Structure
+
+### **Header**
+- Title + date range filter (applies globally)
+ - **Title**: aligned left
+ - **Date range filter**: aligned right
+
+### **KPI Row**
+- 4 cards: **Total Revenue**, **Monthly Growth**, **Average Order Value**, **Total Orders**
+- Trend indicators for:
+ - Total Revenue
+ - Average Order Value
+ - Total Orders
+- Color coding:
+ - Red for negative trends
+ - Green for positive trends
+
+### **Charts Grid** (2x2 layout)
+
+#### Revenue Trend Line Chart
+- Solid line for the current period
+- Dashed line for the previous period
+- Add grid lines for easier reading
+- Y-axis formatting: `$300K` instead of `$300,000`
+
+#### Top 10 Categories Bar Chart
+- Sorted descending
+- Blue gradient (light shade for lower values)
+- Value formatting: `$300K` and `$2M`
+
+#### Revenue by State (US Choropleth Map)
+- Color-coded by revenue amount
+- Blue gradient
+
+#### Satisfaction vs Delivery Time (Bar Chart)
+- **X-axis**: Delivery time buckets (1–3 days, 4–7 days, etc.)
+- **Y-axis**: Average review score
+
+### **Bottom Row**
+- **Average Delivery Time** with trend indicator
+- **Review Score**:
+ - Large number with stars
+ - Subtitle: `"Average Review Score"`
+
+
+## Key Requirements
+- Use **Plotly** for all charts
+- Ensure charts update correctly when filters change
+- Apply professional styling with trend arrows and colors
+- **Do not use icons**
+- Maintain **uniform card heights** for each row
+- Show **two decimal places** for each trend indicator
+- Include:
+ - `requirements.txt`
+ - `README.md`
\ No newline at end of file
diff --git a/lesson7_files/dashboard.py b/lesson7_files/dashboard.py
index 87bacca..0ed15d4 100644
--- a/lesson7_files/dashboard.py
+++ b/lesson7_files/dashboard.py
@@ -186,12 +186,25 @@ def create_revenue_trend_chart(current_data, previous_data, current_year, previo
yaxis_title="Revenue"
)
+ # Custom Y-axis formatting function
+ def format_yticks(value):
+ if value >= 1e6:
+ return f"${value/1e6:.0f}M"
+ elif value >= 1e3:
+ return f"${value/1e3:.0f}K"
+ else:
+ return f"${value:.0f}"
+
fig.update_layout(
showlegend=True,
hovermode='x unified',
plot_bgcolor='white',
xaxis=dict(showgrid=True, gridcolor='#f0f0f0'),
- yaxis=dict(showgrid=True, gridcolor='#f0f0f0', tickformat='$,.0f'),
+ yaxis=dict(
+ showgrid=True,
+ gridcolor='#f0f0f0',
+ tickformat='$,.0s' # This will format as K/M
+ ),
height=350,
margin=dict(t=50, b=50, l=50, r=50)
)
@@ -230,7 +243,7 @@ def create_category_chart(sales_data):
xaxis_title="Revenue",
yaxis_title="",
plot_bgcolor='white',
- xaxis=dict(showgrid=True, gridcolor='#f0f0f0', tickformat='$,.0f'),
+ xaxis=dict(showgrid=True, gridcolor='#f0f0f0', tickformat='$,.0s'),
yaxis=dict(showgrid=False),
height=350,
margin=dict(t=50, b=50, l=150, r=50)
@@ -337,14 +350,14 @@ def main():
st.error("Failed to load data. Please check your data files.")
return
- # Header with title and date filters
- col1, col2, col3 = st.columns([2, 1, 1])
+ # Header with title and date filters - aligned as requested
+ col1, spacer, col2 = st.columns([3, 1, 2])
with col1:
- st.title("📊 E-commerce Analytics Dashboard")
+ st.title("E-commerce Analytics Dashboard")
with col2:
- # Get available years from data
+ # Year filter aligned to the right
orders_data = processed_data['orders']
available_years = sorted(orders_data['purchase_year'].unique(), reverse=True)
@@ -359,19 +372,9 @@ def main():
index=default_year_index,
key="year_filter"
)
-
- with col3:
- # Month filter
- month_options = ['All Months'] + [f'Month {i}' for i in range(1, 13)]
- selected_month_display = st.selectbox(
- "Select Month",
- options=month_options,
- index=0,
- key="month_filter"
- )
- # Convert display to actual month number
- selected_month = None if selected_month_display == 'All Months' else int(selected_month_display.split(' ')[1])
+ # Month filter removed as per requirements - using year only
+ selected_month = None
# Create datasets based on selected year and month
current_data = loader.create_sales_dataset(
@@ -504,16 +507,16 @@ def main():
""", unsafe_allow_html=True)
with bottom_col2:
- # Review score
+ # Review Score with large number and stars as specified
if 'review_score' in current_data.columns:
avg_review = current_data['review_score'].mean()
- stars = "★" * int(round(avg_review))
+ stars = "★" * int(round(avg_review)) + "☆" * (5 - int(round(avg_review)))
st.markdown(f"""
-
Average Review Score
-
{avg_review:.1f}/5.0
-
{stars}
+
{avg_review:.1f}
+
{stars}
+
Average Review Score
""", unsafe_allow_html=True)
else:
diff --git a/lesson7_files/dashboard_new.py b/lesson7_files/dashboard_new.py
new file mode 100644
index 0000000..4817047
--- /dev/null
+++ b/lesson7_files/dashboard_new.py
@@ -0,0 +1,493 @@
+"""
+Professional E-commerce Analytics Dashboard
+Converted from EDA_Refactored.ipynb with exact layout specifications
+"""
+
+import streamlit as st
+import pandas as pd
+import numpy as np
+import plotly.express as px
+import plotly.graph_objects as go
+from plotly.subplots import make_subplots
+import warnings
+from datetime import datetime, date
+from data_loader import EcommerceDataLoader, load_and_process_data
+from business_metrics import BusinessMetricsCalculator
+
+# Configure page
+st.set_page_config(
+ page_title="E-commerce Analytics Dashboard",
+ page_icon="📊",
+ layout="wide",
+ initial_sidebar_state="collapsed"
+)
+
+# Custom CSS for professional styling
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+# Initialize session state
+if 'data_loaded' not in st.session_state:
+ st.session_state.data_loaded = False
+
+@st.cache_data
+def load_dashboard_data():
+ """Load and cache dashboard data"""
+ loader = EcommerceDataLoader('ecommerce_data/')
+ loader.load_raw_data()
+ processed_data = loader.process_all_data()
+ sales_data = loader.create_sales_dataset(
+ year_filter=None,
+ month_filter=None,
+ status_filter='delivered'
+ )
+ return sales_data
+
+def format_currency(value, compact=True):
+ """Format currency values"""
+ if compact:
+ if value >= 1_000_000:
+ return f"${value/1_000_000:.1f}M"
+ elif value >= 1_000:
+ return f"${value/1_000:.0f}K"
+ else:
+ return f"${value:.0f}"
+ else:
+ return f"${value:,.2f}"
+
+def format_trend_indicator(current, previous):
+ """Format trend indicator with arrow and color"""
+ if previous == 0:
+ return "N/A", "color: #6c757d;"
+
+ change = ((current - previous) / previous) * 100
+ arrow = "↑" if change >= 0 else "↓"
+ color = "color: #28a745;" if change >= 0 else "color: #dc3545;"
+
+ return f"{arrow} {change:.2f}%", color
+
+def create_revenue_trend_chart(sales_data, current_year, previous_year):
+ """Create revenue trend line chart"""
+ # Current year data
+ current_data = sales_data[sales_data['purchase_year'] == current_year]
+ current_monthly = current_data.groupby('purchase_month')['price'].sum().reset_index()
+ current_monthly.columns = ['Month', 'Revenue']
+
+ # Previous year data
+ previous_data = sales_data[sales_data['purchase_year'] == previous_year]
+ previous_monthly = previous_data.groupby('purchase_month')['price'].sum().reset_index()
+ previous_monthly.columns = ['Month', 'Revenue']
+
+ fig = go.Figure()
+
+ # Current year (solid line)
+ fig.add_trace(go.Scatter(
+ x=current_monthly['Month'],
+ y=current_monthly['Revenue'],
+ mode='lines+markers',
+ name=f'{current_year}',
+ line=dict(color='#1f77b4', width=3),
+ marker=dict(size=8)
+ ))
+
+ # Previous year (dashed line)
+ fig.add_trace(go.Scatter(
+ x=previous_monthly['Month'],
+ y=previous_monthly['Revenue'],
+ mode='lines+markers',
+ name=f'{previous_year}',
+ line=dict(color='#ff7f0e', width=3, dash='dash'),
+ marker=dict(size=8)
+ ))
+
+ fig.update_layout(
+ title='Monthly Revenue Trend',
+ xaxis_title='Month',
+ yaxis_title='Revenue',
+ showlegend=True,
+ height=400,
+ xaxis=dict(showgrid=True, gridcolor='rgba(0,0,0,0.1)'),
+ yaxis=dict(
+ showgrid=True,
+ gridcolor='rgba(0,0,0,0.1)',
+ tickformat='$,.0s'
+ ),
+ plot_bgcolor='white'
+ )
+
+ return fig
+
+def create_top_categories_chart(sales_data, year):
+ """Create top 10 categories pie chart"""
+ year_data = sales_data[sales_data['purchase_year'] == year]
+
+ if 'product_category_name' not in year_data.columns:
+ fig = go.Figure()
+ fig.add_annotation(text="Product category data not available",
+ x=0.5, y=0.5, showarrow=False)
+ return fig
+
+ category_revenue = year_data.groupby('product_category_name')['price'].sum().sort_values(ascending=False).head(10)
+
+ # Create labels with formatted category names
+ labels = [cat.replace('_', ' ').title() for cat in category_revenue.index]
+
+ # Create diverse color palette for pie chart
+ colors = px.colors.qualitative.Set3[:len(category_revenue)]
+
+ fig = go.Figure(data=[go.Pie(
+ labels=labels,
+ values=category_revenue.values,
+ marker=dict(colors=colors),
+ textinfo='label+percent',
+ textposition='auto',
+ hovertemplate='%{label} Revenue: %{customdata} Percentage: %{percent} ',
+ customdata=[format_currency(val) for val in category_revenue.values]
+ )])
+
+ fig.update_layout(
+ title='Top 10 Product Categories by Revenue',
+ height=400,
+ showlegend=False, # Remove legend since labels are on the pie slices
+ plot_bgcolor='white'
+ )
+
+ return fig
+
+def create_state_map(sales_data, year):
+ """Create US choropleth map"""
+ year_data = sales_data[sales_data['purchase_year'] == year]
+
+ if 'customer_state' not in year_data.columns:
+ fig = go.Figure()
+ fig.add_annotation(text="Geographic data not available",
+ x=0.5, y=0.5, showarrow=False)
+ return fig
+
+ state_revenue = year_data.groupby('customer_state')['price'].sum().reset_index()
+ state_revenue.columns = ['State', 'Revenue']
+
+ fig = px.choropleth(
+ state_revenue,
+ locations='State',
+ color='Revenue',
+ locationmode='USA-states',
+ scope='usa',
+ title='Revenue by State',
+ color_continuous_scale='Blues',
+ labels={'Revenue': 'Revenue ($)'}
+ )
+
+ fig.update_layout(
+ height=400,
+ geo=dict(showframe=False, showcoastlines=True)
+ )
+
+ return fig
+
+def create_satisfaction_delivery_chart(sales_data, year):
+ """Create satisfaction vs delivery time chart"""
+ year_data = sales_data[sales_data['purchase_year'] == year]
+
+ if 'review_score' not in year_data.columns or 'delivery_days' not in year_data.columns:
+ fig = go.Figure()
+ fig.add_annotation(text="Review or delivery data not available",
+ x=0.5, y=0.5, showarrow=False)
+ return fig
+
+ # Remove duplicates for order-level analysis
+ order_data = year_data.drop_duplicates('order_id').copy()
+ order_data = order_data.dropna(subset=['delivery_days', 'review_score'])
+
+ # Create delivery time buckets
+ order_data['delivery_bucket'] = pd.cut(
+ order_data['delivery_days'],
+ bins=[0, 3, 7, float('inf')],
+ labels=['1-3 days', '4-7 days', '8+ days']
+ )
+
+ satisfaction_by_speed = order_data.groupby('delivery_bucket')['review_score'].mean().reset_index()
+
+ fig = go.Figure(go.Bar(
+ x=satisfaction_by_speed['delivery_bucket'],
+ y=satisfaction_by_speed['review_score'],
+ marker_color=['#2ca02c', '#ff7f0e', '#d62728'],
+ text=[f'{score:.2f}' for score in satisfaction_by_speed['review_score']],
+ textposition='outside'
+ ))
+
+ fig.update_layout(
+ title='Average Review Score by Delivery Speed',
+ xaxis_title='Delivery Time',
+ yaxis_title='Average Review Score',
+ height=400,
+ yaxis=dict(range=[0, 5]),
+ plot_bgcolor='white'
+ )
+
+ return fig
+
+def main():
+ # Load data
+ if not st.session_state.data_loaded:
+ with st.spinner("Loading data..."):
+ sales_data = load_dashboard_data()
+ st.session_state.sales_data = sales_data
+ st.session_state.data_loaded = True
+
+ sales_data = st.session_state.sales_data
+
+ # Available years for filtering
+ available_years = sorted(sales_data['purchase_year'].unique(), reverse=True)
+
+ # Header with title and date filter
+ col1, col2 = st.columns([3, 1])
+
+ with col1:
+ st.markdown('E-commerce Analytics Dashboard
', unsafe_allow_html=True)
+
+ with col2:
+ # Set 2023 as default year
+ default_index = 0
+ if 2023 in available_years:
+ default_index = available_years.index(2023)
+
+ selected_year = st.selectbox(
+ "Select Year",
+ available_years,
+ index=default_index,
+ key="year_filter"
+ )
+
+ current_year = selected_year
+ previous_year = current_year - 1 if current_year - 1 in available_years else None
+
+ # Initialize metrics calculator
+ metrics_calculator = BusinessMetricsCalculator(sales_data)
+
+ # Calculate metrics
+ revenue_metrics = metrics_calculator.calculate_revenue_metrics(current_year, previous_year)
+ monthly_trends = metrics_calculator.calculate_monthly_trends(current_year)
+ satisfaction_metrics = metrics_calculator.analyze_customer_satisfaction(current_year)
+ delivery_metrics = metrics_calculator.analyze_delivery_performance(current_year)
+
+ # KPI Row - 4 cards
+ st.markdown("### Key Performance Indicators")
+ kpi_col1, kpi_col2, kpi_col3, kpi_col4 = st.columns(4)
+
+ with kpi_col1:
+ trend_text, trend_color = format_trend_indicator(
+ revenue_metrics['total_revenue'],
+ revenue_metrics.get('previous_year_revenue', 0)
+ ) if previous_year else ("N/A", "color: #6c757d;")
+
+ st.markdown(f"""
+
+
Total Revenue
+
{format_currency(revenue_metrics['total_revenue'])}
+
{trend_text}
+
+ """, unsafe_allow_html=True)
+
+ with kpi_col2:
+ avg_growth = monthly_trends['revenue_growth'].mean()
+ st.markdown(f"""
+
+
Monthly Growth
+
{avg_growth:.2f}%
+
Average
+
+ """, unsafe_allow_html=True)
+
+ with kpi_col3:
+ trend_text, trend_color = format_trend_indicator(
+ revenue_metrics['average_order_value'],
+ revenue_metrics.get('previous_year_aov', 0)
+ ) if previous_year else ("N/A", "color: #6c757d;")
+
+ st.markdown(f"""
+
+
Average Order Value
+
{format_currency(revenue_metrics['average_order_value'], False)}
+
{trend_text}
+
+ """, unsafe_allow_html=True)
+
+ with kpi_col4:
+ trend_text, trend_color = format_trend_indicator(
+ revenue_metrics['total_orders'],
+ revenue_metrics.get('previous_year_orders', 0)
+ ) if previous_year else ("N/A", "color: #6c757d;")
+
+ st.markdown(f"""
+
+
Total Orders
+
{revenue_metrics['total_orders']:,}
+
{trend_text}
+
+ """, unsafe_allow_html=True)
+
+ st.markdown(" ", unsafe_allow_html=True)
+
+ # Charts Grid - 2x2 layout
+ st.markdown("### Performance Analytics")
+
+ chart_row1_col1, chart_row1_col2 = st.columns(2)
+ chart_row2_col1, chart_row2_col2 = st.columns(2)
+
+ with chart_row1_col1:
+ if previous_year:
+ fig_revenue = create_revenue_trend_chart(sales_data, current_year, previous_year)
+ st.plotly_chart(fig_revenue, use_container_width=True)
+ else:
+ st.info("Previous year data not available for trend comparison")
+
+ with chart_row1_col2:
+ fig_categories = create_top_categories_chart(sales_data, current_year)
+ st.plotly_chart(fig_categories, use_container_width=True)
+
+ with chart_row2_col1:
+ fig_map = create_state_map(sales_data, current_year)
+ st.plotly_chart(fig_map, use_container_width=True)
+
+ with chart_row2_col2:
+ fig_satisfaction = create_satisfaction_delivery_chart(sales_data, current_year)
+ st.plotly_chart(fig_satisfaction, use_container_width=True)
+
+ st.markdown(" ", unsafe_allow_html=True)
+
+ # Bottom Row - 2 cards
+ st.markdown("### Customer Experience Metrics")
+ bottom_col1, bottom_col2 = st.columns(2)
+
+ with bottom_col1:
+ if 'error' not in delivery_metrics:
+ # Calculate trend for delivery time (assuming previous year comparison)
+ if previous_year:
+ prev_delivery = metrics_calculator.analyze_delivery_performance(previous_year)
+ if 'error' not in prev_delivery:
+ trend_text, trend_color = format_trend_indicator(
+ delivery_metrics['avg_delivery_days'],
+ prev_delivery['avg_delivery_days']
+ )
+ else:
+ trend_text, trend_color = "N/A", "color: #6c757d;"
+ else:
+ trend_text, trend_color = "N/A", "color: #6c757d;"
+
+ st.markdown(f"""
+
+
Average Delivery Time
+
{delivery_metrics['avg_delivery_days']:.1f} days
+
{trend_text}
+
+ """, unsafe_allow_html=True)
+ else:
+ st.markdown("""
+
+
Average Delivery Time
+
N/A
+
Data not available
+
+ """, unsafe_allow_html=True)
+
+ with bottom_col2:
+ if 'error' not in satisfaction_metrics:
+ # Create star rating display
+ score = satisfaction_metrics['avg_review_score']
+ full_stars = int(score)
+ partial_star = score - full_stars
+ stars = "★" * full_stars
+ if partial_star >= 0.5:
+ stars += "☆"
+
+ st.markdown(f"""
+
+
{score:.2f}
+
{stars}
+
Average Review Score
+
+ """, unsafe_allow_html=True)
+ else:
+ st.markdown("""
+
+
N/A
+
☆☆☆☆☆
+
Average Review Score
+
+ """, unsafe_allow_html=True)
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/lesson7_files/prompt.md b/lesson7_files/prompt.md
new file mode 100644
index 0000000..8df2b89
--- /dev/null
+++ b/lesson7_files/prompt.md
@@ -0,0 +1,58 @@
+# EDA Notebook Refactoring Plan
+
+The @EDA.ipynb contains exploratory data analysis on e-commerce data in @ecommerce_data, focusing on sales metrics for 2023.
+Keep the same analysis and graphs, and improve the structure and documentation of the notebook. 💡
+
+## Review Checklist
+
+Identify:
+- What business metrics are currently calculated
+- What visualizations are created
+- What data transformations are performed
+- Any code quality issues or inefficiencies
+
+
+## **Refactoring Requirements**
+
+### 1. Notebook Structure & Documentation
+- Add proper documentation and markdown cells with clear headers and a brief explanation for each section
+- Organize into logical sections:
+ 1. **Introduction & Business Objectives**
+ 2. **Data Loading & Configuration**
+ 3. **Data Preparation & Transformation**
+ 4. **Business Metrics Calculation** (revenue, product, geographic, customer experience analysis)
+ 5. **Summary of Observations**
+- Add table of contents at the beginning
+- Include data dictionary explaining key columns and business terms
+
+
+### 2. Code Quality Improvements
+- Create reusable functions with docstrings
+- Implement consistent naming and formatting
+- Create separate Python files:
+ - `business_metrics.py` → business metric calculations only
+ - `data_loader.py` → loading, processing, and cleaning the data
+
+
+### 3. Enhanced Visualizations
+Improve all plots with:
+- Clear and descriptive titles
+- Proper axis labels with units
+- Legends where needed
+- Appropriate chart types for the data
+- Include date range in plot titles or captions
+- Use consistent, business-oriented color schemes
+
+
+### 4. Configurable Analysis Framework
+- Current notebook computes metrics for a fixed date range (entire year of 2023 compared to 2022)
+- Refactor to:
+ - Filter data by configurable **month** and **year**
+ - Implement general-purpose metric calculations
+
+
+## **Deliverables Expected**
+- Refactored Jupyter notebook: `EDA_Refactored.ipynb` with all improvements
+- Business metrics module: `business_metrics.py` with documented functions
+- Requirements file: `requirements.txt` listing all dependencies
+- `README.md` section explaining how to use the refactored analysis
\ No newline at end of file
diff --git a/lesson7_files/requirements.txt b/lesson7_files/requirements.txt
index 54ae25b..01b4beb 100644
--- a/lesson7_files/requirements.txt
+++ b/lesson7_files/requirements.txt
@@ -5,4 +5,7 @@ seaborn>=0.11.0
plotly>=5.0.0
streamlit>=1.28.0
jupyter>=1.0.0
-ipykernel>=6.0.0
\ No newline at end of file
+ipykernel>=6.0.0
+nbformat>=5.0.0
+scipy>=1.9.0
+altair>=4.2.0
\ No newline at end of file