PublicRisk.ai

HAZUS Integration - Technical Guide

Complete technical documentation for FEMA HAZUS integration including API endpoints, data sources, damage functions, and implementation details

Overview

This guide provides comprehensive technical documentation for PublicRisk.ai's FEMA HAZUS integration. It covers all five implementation phases, API endpoints, data sources, and damage calculation methodologies.

Status: Production-ready as of December 2025. All phases (1-5) deployed and operational.


Architecture

Backend Services

Service Endpoints

The HAZUS service is deployed on Modal Cloud with auto-scaling containers:

Base URL: https://publicrisk--publicrisk-hazard-service-{endpoint}.modal.run

EndpointPurposeCold StartCache TTL
healthService health check~30sN/A
assess-propertyFull property risk assessment~45s300s
realtime-allCombined hazard data (flood+EQ+fire)~35s300s
flood-riskFlood zone only~25s600s
earthquake-riskEarthquake PGA only~25s600s
wildfire-riskActive wildfires only~20s60s

Cold Start Behavior: Modal containers sleep after 5-10 minutes of inactivity. First request takes 30-60 seconds. Frontend displays "Initializing service..." message during cold starts.


API Reference

Health Check

Check service availability and version.

GET /health

Response:

{
  "status": "healthy",
  "version": "1.0.0",
  "data_sources": {
    "flood": "FEMA NFHL Q4 2024",
    "earthquake": "USGS NSHM 2023",
    "wildfire": "NIFC Real-time"
  },
  "cache_enabled": true,
  "uptime_seconds": 3847
}

Property Assessment

Comprehensive risk assessment for a single property.

GET /assess-property?lat={latitude}&lng={longitude}&property_value={value}&year_built={year}

Parameters:

ParameterTypeRequiredDescription
latfloatYesLatitude (WGS84, -90 to 90)
lngfloatYesLongitude (WGS84, -180 to 180)
property_valuefloatYesProperty value in USD
year_builtintNoYear of construction (1800-2025)

Example Request:

curl "https://publicrisk--publicrisk-hazard-service-assess-property.modal.run?lat=37.7749&lng=-122.4194&property_value=850000&year_built=1965"

Response:

{
  "location": {
    "latitude": 37.7749,
    "longitude": -122.4194,
    "address": "San Francisco, CA"
  },
  "overall_risk": {
    "score": 0.725,
    "level": "HIGH",
    "color": "#FF6B35"
  },
  "hazards": {
    "flood": {
      "zone": "X",
      "risk_level": "Low",
      "risk_score": 0.10,
      "flood_depth_ft": 0,
      "bfe_elevation_ft": null,
      "annual_chance": "< 0.2%"
    },
    "earthquake": {
      "pga_g": 0.846,
      "risk_level": "Very High",
      "risk_score": 0.95,
      "mmi": "VIII (Severe)",
      "fault_distance_km": 12.3,
      "fault_name": "San Andreas"
    },
    "wildfire": {
      "vhfhsz": true,
      "risk_level": "High",
      "risk_score": 0.80,
      "active_fires_10mi": 2,
      "nearest_fire": {
        "name": "Park Fire",
        "distance_miles": 8.2,
        "acres": 4200,
        "containment": "15%"
      }
    }
  },
  "damage_estimates": {
    "flood": {
      "damage_ratio": 0.03,
      "expected_loss": 25500,
      "confidence_interval": {
        "p10": 5100,
        "p50": 25500,
        "p90": 51000
      }
    },
    "earthquake": {
      "damage_ratio": 0.35,
      "expected_loss": 297500,
      "structural_damage": "Major",
      "confidence_interval": {
        "p10": 170000,
        "p50": 297500,
        "p90": 425000
      }
    },
    "wildfire": {
      "damage_ratio": 0.15,
      "expected_loss": 127500,
      "ignition_probability": 0.08
    },
    "total_aal": 450500,
    "total_aal_pct": 53.0
  },
  "mitigation_recommendations": [
    {
      "priority": 1,
      "category": "Earthquake",
      "recommendation": "Retrofit foundation with steel moment frames",
      "cost_estimate": 45000,
      "loss_reduction": 120000,
      "roi": 2.67,
      "payback_years": 8.5
    },
    {
      "priority": 2,
      "category": "Wildfire",
      "recommendation": "Install Class A fire-rated roofing",
      "cost_estimate": 18000,
      "loss_reduction": 63000,
      "roi": 3.50,
      "payback_years": 6.0
    },
    {
      "priority": 3,
      "category": "Earthquake",
      "recommendation": "Secure water heater and gas lines",
      "cost_estimate": 800,
      "loss_reduction": 12000,
      "roi": 15.0,
      "payback_years": 2.0
    }
  ],
  "data_sources": {
    "flood": "FEMA NFHL Q4 2024",
    "earthquake": "USGS NSHM 2023",
    "wildfire": "NIFC ArcGIS (updated hourly)"
  },
  "cache_hit": false,
  "processing_time_ms": 2847
}

Combined Hazard Data

Retrieve all hazard data for map popups (lightweight response).

GET /realtime-all?lat={latitude}&lng={longitude}

Parameters:

ParameterTypeRequiredDescription
latfloatYesLatitude (WGS84)
lngfloatYesLongitude (WGS84)

Response:

{
  "location": {
    "latitude": 34.0522,
    "longitude": -118.2437
  },
  "flood": {
    "zone": "AE",
    "risk_score": 0.65,
    "bfe_elevation_ft": 52.0
  },
  "earthquake": {
    "pga_g": 0.846,
    "risk_score": 0.95,
    "mmi": "VIII"
  },
  "wildfire": {
    "vhfhsz": true,
    "risk_score": 1.0,
    "active_fires_10mi": 5,
    "fires": [
      {
        "name": "LAC-420786",
        "distance_miles": 4.35,
        "acres": 1250,
        "containment": "0%"
      }
    ]
  },
  "overall_risk": 0.867,
  "cache_hit": true
}

HAZUS Damage Functions

Flood Damage Curves

PublicRisk.ai uses FEMA HAZUS MH 5.1 flood depth-damage functions.

Residential Buildings (Wood Frame, 1-2 stories):

Flood Depth (ft)Structure Damage %Contents Damage %
0-10%0%
1-28%12%
2-416%25%
4-628%40%
6-838%55%
8+50%70%

Commercial Buildings (Masonry, Low-rise):

Flood Depth (ft)Structure Damage %Contents Damage %
0-10%0%
1-25%10%
2-412%22%
4-622%35%
6-832%48%
8+45%65%

Calculation Example:

// Property: $500,000 home, wood frame, 2 stories
// Flood depth: 3.5 feet (Zone AE)

const structureValue = 500000 * 0.75; // 75% structure
const contentsValue = 500000 * 0.25;  // 25% contents

// Interpolate damage ratio for 3.5 ft (between 2-4 ft)
const structureDamage = 0.16; // 16% from table
const contentsDamage = 0.25;  // 25% from table

const totalLoss = (structureValue * structureDamage) + 
                  (contentsValue * contentsDamage);
// = (375000 * 0.16) + (125000 * 0.25)
// = 60000 + 31250
// = $91,250

// With uncertainty (10% std dev)
const lossSIP = {
  mean: 91250,
  stdDev: 9125,
  p10: 75500,
  p50: 91250,
  p90: 107000
};

Earthquake Damage Functions

Based on HAZUS MH 2.1 spectral displacement and capacity curves.

Damage States by PGA (Peak Ground Acceleration):

PGA (g)MMIDamage StateResidential Loss %Commercial Loss %
< 0.02I-IINone0%0%
0.02-0.10III-VSlight0-5%0-3%
0.10-0.25VI-VIIModerate5-15%3-10%
0.25-0.50VII-VIIIExtensive15-40%10-30%
> 0.50VIII-XComplete40-80%30-70%

Building Types (HAZUS Classifications):

CodeTypeVulnerability
W1Wood frame, less than 5 storiesHigh
W2Wood frame, more than 5 storiesVery High
S1Steel moment frameLow
S2Steel braced frameModerate
S3Steel light frameModerate
C1Concrete moment frameLow
C2Concrete shear wallVery Low
C3Concrete frame w/ infillModerate
RM1Reinforced masonryModerate
RM2Unreinforced masonryVery High

Example Calculation:

// Property: $850,000, wood frame (W1), built 1965
// PGA: 0.35g (Extensive damage)

// Base damage ratio for W1 at 0.35g PGA
let damageRatio = 0.25; // 25% from table

// Age adjustment (pre-1980 = +30% vulnerability)
damageRatio *= 1.30; // = 0.325

// Soil type adjustment (soft soil = +15%)
damageRatio *= 1.15; // = 0.374

// Final loss estimate
const expectedLoss = 850000 * 0.374;
// = $317,900

// With SIPmath uncertainty
const lossSIP = {
  mean: 317900,
  stdDev: 63580, // 20% coefficient of variation
  p10: 236000,
  p50: 317900,
  p90: 399800
};

Wildfire Damage Functions

Based on HAZUS Wildfire Model and Californian Very High Fire Hazard Severity Zones (VHFHSZ).

Ignition Probability Factors:

FactorLowModerateHighVery High
VegetationSparseGrassShrubDense forest
Slope0-10%10-20%20-30%greater than 30%
Windless than 10 mph10-20 mph20-30 mphgreater than 30 mph
Humiditygreater than 60%40-60%20-40%less than 20%

Ignition Probability Formula:

P(ignition) = base_rate × vegetation_factor × slope_factor × 
              wind_factor × humidity_factor × proximity_factor

# Example: Property in VHFHSZ
base_rate = 0.002  # 0.2% annual
vegetation = 2.5   # Dense shrub
slope = 1.8        # 25% slope
wind = 2.0         # 25 mph average
humidity = 1.5     # 35% humidity
proximity = 3.0    # less than 5 miles from active fire

P(ignition) = 0.002 × 2.5 × 1.8 × 2.0 × 1.5 × 3.0
            = 0.081 (8.1% annual)

Damage Given Ignition:

Construction TypeFlame ImpingementRadiant HeatEmber Cast
Non-combustible roof40%15%5%
Combustible roof90%50%30%
Defensible space less than 30ft60%25%10%
No defensible space95%70%50%

Total Wildfire Loss:

// Property: $600,000, wood siding, tile roof, 20ft defensible space
// Active fire: 3.2 miles away, 2000 acres, 0% contained

const ignitionProb = 0.065; // 6.5% (from proximity calc)

// Damage given ignition (tile roof = non-combustible)
const flameImpingement = 0.40;
const radiantHeat = 0.15;
const emberCast = 0.05;

// Weighted by likelihood of each exposure type
const damageGivenIgnition = 
  (flameImpingement × 0.20) + // 20% chance of direct flame
  (radiantHeat × 0.50) +      // 50% chance of radiant heat
  (emberCast × 0.30);         // 30% chance of ember exposure

// = (0.40 × 0.20) + (0.15 × 0.50) + (0.05 × 0.30)
// = 0.08 + 0.075 + 0.015
// = 0.17 (17% loss given ignition)

// Annual expected loss
const AAL = 600000 × ignitionProb × damageGivenIgnition;
// = 600000 × 0.065 × 0.17
// = $6,630

Data Sources

FEMA National Flood Hazard Layer (NFHL)

Update Frequency: Quarterly
API: FEMA Map Service Center REST API
Geometry: Polygons (GeoJSON, Shapefile)

Zone Classifications:

Zone CodeDescriptionAnnual Flood ChanceBase Flood Elevation
AHigh risk, no BFE1% (100-year)Not determined
AEHigh risk with BFE1% (100-year)Specified
AHShallow flooding (1-3 ft)1% (100-year)Specified
AOSheet flow (1-3 ft)1% (100-year)Specified
VECoastal high velocity1% (100-year)Wave action
X (shaded)Moderate risk0.2% (500-year)N/A
X (unshaded)Minimal riskless than 0.2%N/A

API Example:

curl "https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/28/query?geometry=-122.4194,37.7749&geometryType=esriGeometryPoint&returnGeometry=true&f=json"

USGS National Seismic Hazard Model (NSHM)

Update Frequency: Annual
Version: NSHM 2023
Resolution: 0.05° grid (~5.5 km)

Data Products:

  • Peak Ground Acceleration (PGA)
  • Spectral Acceleration (0.2s, 1.0s periods)
  • Modified Mercalli Intensity (MMI)
  • Fault proximity and slip rates

PGA Return Periods:

  • 10% probability in 50 years (475-year return)
  • 5% probability in 50 years (975-year return)
  • 2% probability in 50 years (2,475-year return)

API Example:

curl "https://earthquake.usgs.gov/ws/designmaps/asce7-22.json?latitude=37.7749&longitude=-122.4194&riskCategory=II&siteClass=D&title=San%20Francisco"

NIFC Wildfire Data

Update Frequency: Hourly (active fires), Daily (perimeters)
Source: National Interagency Fire Center ArcGIS Feature Services
Coverage: United States + Canada

Data Layers:

  1. Active Fire Perimeters: Current fire boundaries (polygons)
  2. Fire Incident Points: Fire locations with metadata
  3. Very High Fire Hazard Severity Zones: California state data
  4. Fire Weather Zones: Red flag warning areas

Attributes:

{
  "incident_name": "Park Fire",
  "incident_acres": 429603,
  "containment_pct": 100,
  "discovery_date": "2024-07-24",
  "fire_cause": "Under Investigation",
  "latitude": 39.87,
  "longitude": -121.45,
  "jurisdiction": "CAL FIRE",
  "complex": false
}

ArcGIS REST API:

curl "https://services3.arcgis.com/T4QMspbfLg3qTGWY/arcgis/rest/services/Current_WildlandFire_Perimeters/FeatureServer/0/query?where=1=1&outFields=*&f=json"

Frontend Integration

React Components

RiskScoreCard

Displays overall risk score with color-coded visualization.

Usage:

import { RiskScoreCard } from '@/components/hazard/RiskScoreCard';

<RiskScoreCard
  score={0.725}
  level="HIGH"
  hazardBreakdown={{
    flood: 0.10,
    earthquake: 0.95,
    wildfire: 0.80
  }}
/>

Props:

interface RiskScoreCardProps {
  score: number;           // 0-1 scale
  level: 'Low' | 'Moderate' | 'High' | 'Very High' | 'Extreme';
  hazardBreakdown?: {
    flood?: number;
    earthquake?: number;
    wildfire?: number;
    hurricane?: number;
    tsunami?: number;
  };
  loading?: boolean;
  error?: string;
}

HazardIcon

Emoji-based hazard type icons with risk-based coloring.

Usage:

import { HazardIcon } from '@/components/hazard/HazardIcon';

<HazardIcon 
  type="earthquake" 
  riskLevel="Very High"
  size="large"
/>

Icon Mapping:

const HAZARD_ICONS = {
  flood: '🌊',
  earthquake: '🏚️',
  wildfire: '🔥',
  hurricane: '🌀',
  tsunami: '🌊',
  tornado: '🌪️',
  volcano: '🌋'
};

const RISK_COLORS = {
  'Low': '#4CAF50',
  'Moderate': '#FF9800',
  'High': '#FF6B35',
  'Very High': '#E53935',
  'Extreme': '#B71C1C'
};

MitigationList

Displays prioritized mitigation recommendations with ROI calculations.

Usage:

import { MitigationList } from '@/components/hazard/MitigationList';

<MitigationList
  recommendations={[
    {
      priority: 1,
      category: 'Earthquake',
      recommendation: 'Retrofit foundation',
      cost_estimate: 45000,
      loss_reduction: 120000,
      roi: 2.67,
      payback_years: 8.5
    }
  ]}
/>

Custom Hooks

usePropertyAssessment

Fetches full property risk assessment with caching.

Usage:

import { usePropertyAssessment } from '@/hooks/useHazardData';

const PropertyDetails = ({ lat, lng, value }) => {
  const { data, loading, error, refetch } = usePropertyAssessment({
    latitude: lat,
    longitude: lng,
    propertyValue: value,
    yearBuilt: 1985
  });

  if (loading) return <Skeleton />;
  if (error) return <ErrorMessage error={error} />;

  return (
    <div>
      <RiskScoreCard {...data.overall_risk} />
      <MitigationList recommendations={data.mitigation_recommendations} />
    </div>
  );
};

Hook Options:

interface UsePropertyAssessmentOptions {
  latitude: number;
  longitude: number;
  propertyValue: number;
  yearBuilt?: number;
  enablePolling?: boolean;      // Auto-refresh for wildfire updates
  pollingInterval?: number;     // Default: 60000ms (1 minute)
  cacheTime?: number;           // Default: 300000ms (5 minutes)
}

useHazardData

Lightweight hook for map popups and quick previews.

Usage:

import { useHazardData } from '@/hooks/useHazardData';

const MapPopup = ({ lat, lng }) => {
  const { data, loading } = useHazardData(lat, lng);

  return (
    <Popup>
      <h4>Risk Summary</h4>
      <p>Flood: {data?.flood.zone}</p>
      <p>Earthquake: {data?.earthquake.pga_g}g</p>
      <p>Overall: {data?.overall_risk}</p>
    </Popup>
  );
};

Performance Optimization

Caching Strategy

Backend (Redis):

  • TTL: 300 seconds (5 minutes) for most endpoints
  • TTL: 60 seconds for wildfire data (real-time updates)
  • Cache key: hazus:{endpoint}:{lat}:{lng}:{params_hash}

Frontend:

  • React Query cache: 5 minutes
  • Stale-while-revalidate: Serve cached data, fetch fresh in background
  • Debouncing: 500ms for map interactions

Cache Hit Rates:

// Typical production metrics
{
  "property_assessment": {
    "hit_rate": "78%",
    "avg_response_cached": "45ms",
    "avg_response_uncached": "2850ms"
  },
  "realtime_all": {
    "hit_rate": "65%",
    "avg_response_cached": "32ms",
    "avg_response_uncached": "1200ms"
  }
}

Batch Operations

For analyzing multiple properties (e.g., portfolio risk assessment):

import { assessPropertyBatch } from '@/services/hazardService';

const properties = [
  { lat: 37.7749, lng: -122.4194, value: 850000 },
  { lat: 34.0522, lng: -118.2437, value: 650000 },
  { lat: 47.6062, lng: -122.3321, value: 720000 }
];

// Parallel requests with Promise.all
const results = await assessPropertyBatch(properties);

// results = [
//   { property_id: 0, overall_risk: 0.725, ... },
//   { property_id: 1, overall_risk: 0.867, ... },
//   { property_id: 2, overall_risk: 0.420, ... }
// ]

Rate Limiting:

  • Max 100 requests per minute per IP
  • Batch size limit: 50 properties per request
  • Use Promise.allSettled() to handle partial failures

Testing

Manual Test Locations

High-Risk Earthquake:

# San Francisco (PGA 0.85g)
lat=37.7749&lng=-122.4194

# Los Angeles (PGA 0.75g)
lat=34.0522&lng=-118.2437

High-Risk Flood:

# Houston (Zone AE)
lat=29.7604&lng=-95.3698

# New Orleans (Zone VE)
lat=29.9511&lng=-90.0715

High-Risk Wildfire:

# Paradise, CA (VHFHSZ)
lat=39.7596&lng=-121.6219

# Malibu, CA (VHFHSZ)
lat=34.0259&lng=-118.7798

Low-Risk Control:

# Rural Kansas
lat=39.0119&lng=-98.4842

E2E Test Suite

File: tests/hazus-integration.spec.ts

Coverage:

  • ✅ PropertyRiskDashboard rendering (56 tests)
  • ✅ API error handling and retries
  • ✅ Cold start timeout behavior
  • ✅ Cache hit verification
  • ✅ Loading state transitions
  • ✅ Mitigation recommendations display
  • ✅ Data attribution footers

Run Tests:

npm run test:e2e -- hazus-integration.spec.ts

Troubleshooting

Common Issues

Cold Start Timeouts

Symptom: "Service initializing..." message for 30-60 seconds

Cause: Modal container was sleeping, cold start in progress

Solution: Wait for container to warm up. Subsequent requests will be fast (less than 3 seconds).

Prevention:

// Pre-warm container on app load
useEffect(() => {
  hazardService.healthCheck().catch(() => {});
}, []);

Invalid Coordinates

Symptom: Error "Invalid coordinates provided"

Cause: Latitude/longitude out of range or reversed

Solution:

// Validate before API call
if (lat < -90 || lat > 90) throw new Error('Invalid latitude');
if (lng < -180 || lng > 180) throw new Error('Invalid longitude');

// Common mistake: reversed lat/lng
// ❌ Wrong: (lng, lat)
// ✅ Correct: (lat, lng)

Missing Wildfire Data

Symptom: wildfire.active_fires_10mi = 0 during active fire season

Cause: NIFC data update delay (hourly refresh)

Solution:

  • Check NIFC directly: https://inciweb.nwcg.gov/
  • Use enablePolling: true option for auto-refresh
  • Verify fire location is within 10-mile radius

High Loss Estimates

Symptom: Expected losses seem unrealistically high

Cause: Multiple hazards overlapping, cumulative risk calculation

Solution:

  • Review hazardBreakdown to identify primary drivers
  • Check damage_estimates for per-hazard breakdown
  • Use confidence intervals (P10-P90) for uncertainty
  • Consider mitigation ROI to reduce risk

Migration from Legacy System

If you have existing hazard assessment code, here's how to migrate:

Old API Pattern

// ❌ Legacy (deprecated)
const response = await fetch(`/api/hazard/property/${propertyId}`);
const data = await response.json();

New API Pattern

// ✅ New HAZUS integration
import { usePropertyAssessment } from '@/hooks/useHazardData';

const { data, loading, error } = usePropertyAssessment({
  latitude: property.lat,
  longitude: property.lng,
  propertyValue: property.value,
  yearBuilt: property.yearBuilt
});

Response Format Changes

Old FormatNew FormatNotes
riskoverall_risk.scoreNow 0-1 scale
hazardshazards.{type}Nested by hazard type
recommendationsmitigation_recommendationsAdded ROI calculations
N/Adamage_estimatesNew: Per-hazard loss breakdown
N/Aconfidence_intervalNew: P10/P50/P90 values

Advanced Topics

SIPmath Integration

For portfolio-level uncertainty quantification:

import { generateSIPDistribution } from '@/services/sipmath';

// Single property with uncertainty
const propertyRisk = {
  mean: 450500,      // Expected annual loss
  stdDev: 90100,     // Standard deviation
  distribution: 'lognormal'
};

// Generate 10,000 Monte Carlo trials
const trials = generateSIPDistribution(propertyRisk, 10000);

// Portfolio aggregation (preserving correlations)
const portfolioRisk = aggregatePortfolio([
  { property_id: 1, trials: trials1 },
  { property_id: 2, trials: trials2 },
  { property_id: 3, trials: trials3 }
], correlationMatrix);

// Results with percentiles
const results = {
  P10: 2.8e6,
  P50: 4.5e6,
  P90: 7.2e6,
  VaR_95: 8.1e6
};

Multi-Hazard Correlation

Hazards are not independent. PublicRisk.ai uses correlation matrices:

# Correlation matrix (Pearson's r)
correlation = [
  #      Flood  EQ    Fire
  [1.00, 0.15, 0.10],  # Flood
  [0.15, 1.00, 0.25],  # Earthquake
  [0.10, 0.25, 1.00]   # Wildfire
]

# Why correlated?
# - Earthquake → Flooding (dam failure, tsunami)
# - Earthquake → Wildfire (gas line rupture)
# - Flood → Wildfire (vegetation stress)

Sampling with Correlation:

import numpy as np
from scipy.stats import norm

# Cholesky decomposition
L = np.linalg.cholesky(correlation)

# Generate correlated samples
n_samples = 10000
Z = norm.rvs(size=(3, n_samples))  # Independent samples
X = L @ Z  # Correlated samples

# X[0] = flood losses (correlated)
# X[1] = earthquake losses (correlated)
# X[2] = wildfire losses (correlated)

Deployment

Environment Variables

# .env.production
VITE_HAZARD_SERVICE_BASE_URL=https://publicrisk--publicrisk-hazard-service
VITE_HAZARD_SERVICE_TIMEOUT=30000
VITE_HAZARD_CACHE_TTL=300000
VITE_WILDFIRE_POLL_INTERVAL=60000

Health Monitoring

// Health check endpoint
const health = await hazardService.healthCheck();

if (health.status !== 'healthy') {
  console.error('HAZUS service unhealthy:', health);
  // Send alert to monitoring system
}

Logging

// Backend logs (Modal)
console.log('[HAZUS] Property assessment', {
  lat, lng, property_value,
  cache_hit: true,
  processing_time_ms: 2847
});

// Frontend logs
console.log('[HAZUS] API request', {
  endpoint: 'assess-property',
  params: { lat, lng },
  response_time_ms: 3200
});

Support & Resources

Production Ready: All HAZUS features are deployed and operational. For questions or issues, refer to the troubleshooting section or contact support.

On this page