Delivering to

Why you’ll love it

RestaurantSupply.com is your trusted source for Yanco plastic bowls 5 - 6 qt.

  • Authorized Yanco dealer, ensuring genuine commercial restaurant dinnerware and manufacturer support
  • Fast shipping available on in-stock Yanco CAT-3614 plastic bowls 5 - 6 qt
  • Competitive pricing backed by a 30-day price match guarantee
Additional Question? Ask an Expert
$174.24/Case $344.22
You save $169.98 (49%)
In Stock
Only 5 Available order soon!
Why you’ll love it

RestaurantSupply.com is your trusted source for Yanco plastic bowls 5 - 6 qt.

  • Authorized Yanco dealer, ensuring genuine commercial restaurant dinnerware and manufacturer support
  • Fast shipping available on in-stock Yanco CAT-3614 plastic bowls 5 - 6 qt
  • Competitive pricing backed by a 30-day price match guarantee
Additional Question? Ask an Expert

Yanco CAT-3614 6-1/2 Quart Square Bowl Melamine with Dishwasher Safe White Finish - 6/Case

Yanco  |  MFG #: CAT-3614  |  Item #: 931716  |  UPC #: 680266932392
Item: #931716

Technical details
Manufacturer Yanco
Model Number CAT-3614
Manufacturer Part # CAT-3614
Color White
Plastic Type Melamine
Long Side / Diameter 14" - 15"
Shape Square
Capacity (approximate) 6 Quart (192 - 223 Oz)
Height 6"
Width 14"
Depth 14"
Weight 21.38 lbs
Dishwasher Safe Yes

About this item

Product Details

The Yanco CAT-3614 Catering Bowl is a versatile, high-capacity foodservice accessory designed for commercial kitchens, catering operations, and institutional dining environments. With a 6-1/2 quart capacity, this square melamine bowl measures 14 inches in length and width, and 6 inches in height, providing a durable and lightweight solution for serving and food prep. Its dishwasher-safe construction ensures ease of cleaning, while the white finish maintains a professional appearance suitable for high-volume settings. Manufactured by Yanco, this catering bowl supports HACCP-compliant workflows and offers a robust option for daily foodservice tasks requiring repeated usage and reliable performance.

Top Yanco CAT-3614 Features

The Yanco CAT-3614 catering bowl is designed for commercial foodservice environments requiring large-volume serving and prep. Its melamine construction guarantees impact resistance and dishwasher safety, simplifying routine cleaning. The 14" x 14" square shape optimizes storage and workspace compatibility, while the 6" height supports versatile usage in various preparatory and presentation applications. This bowl’s durability and design accommodate steady demands in professional kitchens and catering stations, facilitating efficient workflow for kitchen staff.

  • Impact-resistant melamine withstands daily commercial use
  • Generous 6-1/2 quart capacity for bulk servings
  • Square shape enhances storage efficiency and workspace fit
  • Dishwasher safe — simplifies cleaning routine
  • Lightweight design reduces handling fatigue in busy kitchens

This catering bowl is suitable for foodservice operators seeking durable, easy-to-maintain kitchenware for large-scale serving and food prep. Its robust features support consistent daily workflows in various commercial settings.

What is a commercial catering bowl?

A commercial catering bowl is a foodservice vessel designed specifically for large-scale food handling, presentation, and storage in professional kitchens. The Yanco CAT-3614 catering bowl features a 6-1/2 quart capacity, made from durable melamine, and measures 14"L x 14"W x 6"H. It is suitable for use in institutional kitchens, catering stations, and foodservice teams that require impact-resistant, dishwasher-safe containers. This model is ideal for steady food prep and service in medium-volume operations, supporting HACCP compliance and efficient workflow.

Top catering bowls for mid-sized foodservice kitchens

Precision-made for medium-capacity operations, these bowls deliver durable performance and reliable handling in commercial kitchens. Designed for steady daily workflows, they support efficient food prep and presentation with impact-resistant constructions and dishwasher-safe features.

  • Steady daily use in small prep kitchens
  • Compact design suited for commercial foodservice spaces
  • Suitable for catering stations and institutional kitchens
  • Moderate throughput — up to 200 servings daily
  • Supports manual food prep and serving tasks

Yanco CAT-3614 Technical Specs

The Yanco CAT-3614 catering bowl is crafted from impact-resistant melamine with a white finish, ensuring durability in demanding foodservice environments. It measures 14 inches in length and width, with a height of 6 inches, and weighs approximately 21.38 lbs. Its dishwasher-safe construction facilitates routine cleaning without disassembly. Certified for food safety standards, this bowl complies with HACCP protocols and Proposition 65 regulations. Designed for steady use, it is compatible with standard commercial dishwashing equipment and provides reliable performance for bulk serving in institutional kitchens and catering aligns.

  • Dimensions: 14"L x 14"W x 6"H
  • Weight: 21.38 lbs
  • Material: Melamine, impact-resistant
  • Color: White
  • Dishwasher safe — simplifies maintenance
  • Food safety: Proposition 65 compliant
  • Commercial-grade impact resistance
  • Supports HACCP workflows
  • Impact-resistant construction withstands daily handling
  • Impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact

Certifications

Dishwasher Safe logo

Dishwasher Safe

This item has been tested and approved to withstand commercial or residential dishwashers, ensuring safe and thorough cleaning.

Certifications

Customer reviews

Yanco CAT-3614 Catering Bowl 6-1/2 Qt. 14"L X 14"W X 6"H
Yanco

Yanco CAT-3614 6-1/2 Quart Square Bowl Melamine with Dishwasher Safe White Finish

$174.24 $344.22

The Yanco CAT-3614 Catering Bowl is a versatile, high-capacity foodservice accessory designed for commercial kitchens, catering operations, and institutional dining environments. With a 6-1/2 quart capacity, this square melamine bowl measures 14 inches in length and width, and 6 inches in height, providing a durable and lightweight solution for serving and food prep. Its dishwasher-safe construction ensures ease of cleaning, while the white finish maintains a professional appearance suitable for high-volume settings. Manufactured by Yanco, this catering bowl supports HACCP-compliant workflows and offers a robust option for daily foodservice tasks requiring repeated usage and reliable performance.

Top Yanco CAT-3614 Features

The Yanco CAT-3614 catering bowl is designed for commercial foodservice environments requiring large-volume serving and prep. Its melamine construction guarantees impact resistance and dishwasher safety, simplifying routine cleaning. The 14" x 14" square shape optimizes storage and workspace compatibility, while the 6" height supports versatile usage in various preparatory and presentation applications. This bowl’s durability and design accommodate steady demands in professional kitchens and catering stations, facilitating efficient workflow for kitchen staff.

  • Impact-resistant melamine withstands daily commercial use
  • Generous 6-1/2 quart capacity for bulk servings
  • Square shape enhances storage efficiency and workspace fit
  • Dishwasher safe — simplifies cleaning routine
  • Lightweight design reduces handling fatigue in busy kitchens

This catering bowl is suitable for foodservice operators seeking durable, easy-to-maintain kitchenware for large-scale serving and food prep. Its robust features support consistent daily workflows in various commercial settings.

What is a commercial catering bowl?

A commercial catering bowl is a foodservice vessel designed specifically for large-scale food handling, presentation, and storage in professional kitchens. The Yanco CAT-3614 catering bowl features a 6-1/2 quart capacity, made from durable melamine, and measures 14"L x 14"W x 6"H. It is suitable for use in institutional kitchens, catering stations, and foodservice teams that require impact-resistant, dishwasher-safe containers. This model is ideal for steady food prep and service in medium-volume operations, supporting HACCP compliance and efficient workflow.

Top catering bowls for mid-sized foodservice kitchens

Precision-made for medium-capacity operations, these bowls deliver durable performance and reliable handling in commercial kitchens. Designed for steady daily workflows, they support efficient food prep and presentation with impact-resistant constructions and dishwasher-safe features.

  • Steady daily use in small prep kitchens
  • Compact design suited for commercial foodservice spaces
  • Suitable for catering stations and institutional kitchens
  • Moderate throughput — up to 200 servings daily
  • Supports manual food prep and serving tasks

Yanco CAT-3614 Technical Specs

The Yanco CAT-3614 catering bowl is crafted from impact-resistant melamine with a white finish, ensuring durability in demanding foodservice environments. It measures 14 inches in length and width, with a height of 6 inches, and weighs approximately 21.38 lbs. Its dishwasher-safe construction facilitates routine cleaning without disassembly. Certified for food safety standards, this bowl complies with HACCP protocols and Proposition 65 regulations. Designed for steady use, it is compatible with standard commercial dishwashing equipment and provides reliable performance for bulk serving in institutional kitchens and catering aligns.

  • Dimensions: 14"L x 14"W x 6"H
  • Weight: 21.38 lbs
  • Material: Melamine, impact-resistant
  • Color: White
  • Dishwasher safe — simplifies maintenance
  • Food safety: Proposition 65 compliant
  • Commercial-grade impact resistance
  • Supports HACCP workflows
  • Impact-resistant construction withstands daily handling
  • Impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_resistance impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact-resistant impact_impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact impact